@@ -378,9 +378,12 @@ func populateAdditionalInfo(newModule *modulegen.ModuleInputs) {
378
378
}
379
379
newModule .ResourceTypePascal = spaceReplacer .Replace (titleCaser .String (replacer .Replace (newModule .ResourceType )))
380
380
newModule .ModelPascal = spaceReplacer .Replace (titleCaser .String (replacer .Replace (newModule .ModelName )))
381
- newModule .ModelTriple = fmt .Sprintf ("%s:%s:%s" , newModule .Namespace , newModule .ModuleName , newModule .ModelName )
382
381
newModule .ModelCamel = strings .ToLower (string (newModule .ModelPascal [0 ])) + newModule .ModelPascal [1 :]
383
382
newModule .ModelLowercase = strings .ToLower (newModule .ModelPascal )
383
+
384
+ modelTriple := fmt .Sprintf ("%s:%s:%s" , newModule .Namespace , newModule .ModuleName , newModule .ModelName )
385
+ newModule .ModelTriple = modelTriple
386
+ newModule .ModelReadmeLink = "README.md#" + generateAnchor (fmt .Sprintf ("Model %s" , modelTriple ))
384
387
}
385
388
386
389
// Creates a new directory with moduleName.
@@ -415,6 +418,11 @@ func renderCommonFiles(c *cli.Context, module modulegen.ModuleInputs, globalArgs
415
418
return errors .Wrapf (err , "failed to write generator info to %s" , infoFilePath )
416
419
}
417
420
421
+ // Render README.md
422
+ if err := renderReadme (module ); err != nil {
423
+ return errors .Wrap (err , "failed to render README.md" )
424
+ }
425
+
418
426
// Render workflows for cloud build
419
427
if module .EnableCloudBuild {
420
428
debugf (c .App .Writer , globalArgs .Debug , "\t Creating cloud build workflow" )
@@ -784,6 +792,38 @@ func createModuleAndManifest(cCtx *cli.Context, c *viamClient, module modulegen.
784
792
return nil
785
793
}
786
794
795
+ // Create the README.md file.
796
+ func renderReadme (module modulegen.ModuleInputs ) error {
797
+ readmeTemplatePath , err := templates .Open (filepath .Join (templatesPath , defaultReadmeFilename ))
798
+ readmeDest := filepath .Join (module .ModuleName , defaultReadmeFilename )
799
+ if err != nil {
800
+ return err
801
+ }
802
+ defer utils .UncheckedErrorFunc (readmeTemplatePath .Close )
803
+ tBytes , err := io .ReadAll (readmeTemplatePath )
804
+ if err != nil {
805
+ return err
806
+ }
807
+
808
+ tmpl , err := template .New (defaultReadmeFilename ).Parse (string (tBytes ))
809
+ if err != nil {
810
+ return err
811
+ }
812
+
813
+ //nolint:gosec
814
+ destFile , err := os .Create (readmeDest )
815
+ if err != nil {
816
+ return err
817
+ }
818
+ defer utils .UncheckedErrorFunc (destFile .Close )
819
+
820
+ err = tmpl .Execute (destFile , module )
821
+ if err != nil {
822
+ return err
823
+ }
824
+ return nil
825
+ }
826
+
787
827
// Create the meta.json manifest.
788
828
func renderManifest (c * cli.Context , moduleID string , module modulegen.ModuleInputs , globalArgs globalArgs ) error {
789
829
debugf (c .App .Writer , globalArgs .Debug , "Rendering module manifest" )
@@ -793,13 +833,14 @@ func renderManifest(c *cli.Context, moduleID string, module modulegen.ModuleInpu
793
833
visibility = moduleVisibilityPublic
794
834
}
795
835
836
+ modelDescription := "Provide a short (100 characters or less) description of this model here"
796
837
manifest := moduleManifest {
797
838
Schema : "https://dl.viam.dev/module.schema.json" ,
798
839
ModuleID : moduleID ,
799
840
Visibility : visibility ,
800
841
Description : fmt .Sprintf ("Modular %s %s: %s" , module .ResourceSubtype , module .ResourceType , module .ModelName ),
801
842
Models : []ModuleComponent {
802
- {API : module .API , Model : module .ModelTriple },
843
+ {API : module .API , Model : module .ModelTriple , MarkdownLink : & module . ModelReadmeLink , Description : & modelDescription },
803
844
},
804
845
}
805
846
switch module .Language {
0 commit comments