@@ -58,19 +58,21 @@ func NewCommand() (*cobra.Command, error) {
5858 if err != nil {
5959 return nil , err
6060 }
61+ noformat := os .Getenv ("MDATAGEN_NOFORMAT" ) == "1"
6162 rootCmd := & cobra.Command {
6263 Use : "mdatagen" ,
6364 Version : ver ,
6465 SilenceUsage : true ,
6566 Args : cobra .ExactArgs (1 ),
6667 RunE : func (_ * cobra.Command , args []string ) error {
67- return run (args [0 ])
68+ return run (args [0 ], noformat )
6869 },
6970 }
71+ rootCmd .Flags ().BoolVar (& noformat , "noformat" , noformat , "skip gofmt formatting of generated Go files" )
7072 return rootCmd , nil
7173}
7274
73- func run (ymlPath string ) error {
75+ func run (ymlPath string , noformat bool ) error {
7476 if ymlPath == "" {
7577 return errors .New ("argument must be metadata.yaml file" )
7678 }
@@ -104,7 +106,7 @@ func run(ymlPath string) error {
104106 if ! slices .Contains (nonComponents , md .Status .Class ) {
105107 toGenerate [filepath .Join (tmplDir , "status.go.tmpl" )] = filepath .Join (codeDir , "generated_status.go" )
106108 err = generateFile (filepath .Join (tmplDir , "component_test.go.tmpl" ),
107- filepath .Join (ymlDir , "generated_component_test.go" ), md , packageName )
109+ filepath .Join (ymlDir , "generated_component_test.go" ), md , packageName , noformat )
108110 if err != nil {
109111 return err
110112 }
@@ -124,7 +126,7 @@ func run(ymlPath string) error {
124126 }
125127
126128 err = generateFile (filepath .Join (tmplDir , "package_test.go.tmpl" ),
127- filepath .Join (ymlDir , "generated_package_test.go" ), md , packageName )
129+ filepath .Join (ymlDir , "generated_package_test.go" ), md , packageName , noformat )
128130 if err != nil {
129131 return err
130132 }
@@ -220,12 +222,12 @@ func run(ymlPath string) error {
220222 }
221223
222224 for tmpl , dst := range toGenerate {
223- if err := generateFile (tmpl , dst , md , md .GeneratedPackageName ); err != nil {
225+ if err := generateFile (tmpl , dst , md , md .GeneratedPackageName , noformat ); err != nil {
224226 return err
225227 }
226228 }
227229
228- if err := generateConfigFiles (md , ymlDir ); err != nil {
230+ if err := generateConfigFiles (md , ymlDir , noformat ); err != nil {
229231 return fmt .Errorf ("failed to generate config files: %w" , err )
230232 }
231233
@@ -342,7 +344,7 @@ func getTemplateFuncMap(md Metadata) template.FuncMap {
342344 }
343345 return result .String ()
344346 },
345- "inc" : func (i int ) int { return i + 1 },
347+ "inc" : func (i int ) int { return i + 1 },
346348 "distroURL" : distroURL ,
347349 "isExporter" : func () bool {
348350 return md .Status .Class == "exporter"
@@ -414,8 +416,8 @@ func executeTemplate(tmplFile string, md Metadata, goPackage string, fns templat
414416 return buf .Bytes (), nil
415417}
416418
417- func generateFile (tmplFile , outputFile string , md Metadata , goPackage string ) error {
418- return generateFileWithFns (tmplFile , outputFile , md , goPackage , getTemplateFuncMap (md ))
419+ func generateFile (tmplFile , outputFile string , md Metadata , goPackage string , noformat bool ) error {
420+ return generateFileWithFns (tmplFile , outputFile , md , goPackage , getTemplateFuncMap (md ), noformat )
419421}
420422
421423func inlineReplace (tmplFile , outputFile string , md Metadata , start , end , goPackage string ) error {
@@ -447,7 +449,7 @@ func inlineReplace(tmplFile, outputFile string, md Metadata, start, end, goPacka
447449 return nil
448450}
449451
450- func generateFileWithFns (tmplFile , outputFile string , md Metadata , goPackage string , fns template.FuncMap ) error {
452+ func generateFileWithFns (tmplFile , outputFile string , md Metadata , goPackage string , fns template.FuncMap , noformat bool ) error {
451453 if err := os .Remove (outputFile ); err != nil && ! errors .Is (err , fs .ErrNotExist ) {
452454 return fmt .Errorf ("unable to remove generated file %q: %w" , outputFile , err )
453455 }
@@ -457,7 +459,7 @@ func generateFileWithFns(tmplFile, outputFile string, md Metadata, goPackage str
457459 return err
458460 }
459461 var formatErr error
460- if strings .HasSuffix (outputFile , ".go" ) {
462+ if strings .HasSuffix (outputFile , ".go" ) && ! noformat {
461463 if formatted , err := format .Source (result ); err == nil {
462464 result = formatted
463465 } else {
@@ -532,7 +534,7 @@ func validateYAMLKeyOrder(raw []byte) error {
532534 return nil
533535}
534536
535- func generateConfigFiles (md Metadata , mdDir string ) error {
537+ func generateConfigFiles (md Metadata , mdDir string , noformat bool ) error {
536538 if md .Config != nil {
537539 resolver := cfggen .NewResolver (md .PackageName , md .Status .Class , md .Type , mdDir )
538540 resolvedSchema , err := resolver .ResolveSchema (md .Config )
@@ -545,14 +547,14 @@ func generateConfigFiles(md Metadata, mdDir string) error {
545547 return fmt .Errorf ("failed to write config schema: %w" , err )
546548 }
547549
548- if err := generateConfigGoStruct (md , mdDir ); err != nil {
550+ if err := generateConfigGoStruct (md , mdDir , noformat ); err != nil {
549551 return fmt .Errorf ("failed to generate config Go struct: %w" , err )
550552 }
551553 }
552554 return nil
553555}
554556
555- func generateConfigGoStruct (md Metadata , outputDir string ) error {
557+ func generateConfigGoStruct (md Metadata , outputDir string , noformat bool ) error {
556558 rootPkg , err := helpers .RootPackage (outputDir )
557559 if err != nil {
558560 return fmt .Errorf ("unable to determine root package: %w" , err )
@@ -563,5 +565,5 @@ func generateConfigGoStruct(md Metadata, outputDir string) error {
563565 dstFile := filepath .Join (outputDir , "generated_config.go" )
564566
565567 fns := cfggen .WithCfgFns (getTemplateFuncMap (md ), rootPkg , md .PackageName )
566- return generateFileWithFns (tmplFile , dstFile , md , packageName , fns )
568+ return generateFileWithFns (tmplFile , dstFile , md , packageName , fns , noformat )
567569}
0 commit comments