Skip to content

Commit

Permalink
[chore] mdatagen fix to not create empty metadata/metadatatest dirs (#…
Browse files Browse the repository at this point in the history
…12236)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

<!-- Issue number if applicable -->
#### Link to tracking issue
Fixes #

<!--Describe what testing was performed and which tests were added.-->
#### Testing

<!--Describe the documentation added.-->
#### Documentation

<!--Please delete paragraphs that you did not use before submitting.-->

Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
  • Loading branch information
bogdandrutu authored Feb 6, 2025
1 parent 109f05f commit c01f327
Showing 1 changed file with 20 additions and 28 deletions.
48 changes: 20 additions & 28 deletions cmd/mdatagen/internal/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,19 +76,10 @@ func run(ymlPath string) error {
tmplDir := "templates"

codeDir := filepath.Join(ymlDir, "internal", md.GeneratedPackageName)
if err = os.MkdirAll(codeDir, 0o700); err != nil {
return fmt.Errorf("unable to create output directory %q: %w", codeDir, err)
}
testDir := filepath.Join(ymlDir, "internal", md.GeneratedPackageName+"test")
if err = os.MkdirAll(testDir, 0o700); err != nil {
return fmt.Errorf("unable to create output test directory %q: %w", codeDir, err)
}
toGenerate := map[string]string{}
if md.Status != nil {
if md.Status.Class != "cmd" && md.Status.Class != "pkg" && !md.Status.NotComponent {
if err = generateFile(filepath.Join(tmplDir, "status.go.tmpl"),
filepath.Join(codeDir, "generated_status.go"), md, "metadata"); err != nil {
return err
}
toGenerate[filepath.Join(tmplDir, "status.go.tmpl")] = filepath.Join(codeDir, "generated_status.go")
if err = generateFile(filepath.Join(tmplDir, "component_test.go.tmpl"),
filepath.Join(ymlDir, "generated_component_test.go"), md, packageName); err != nil {
return err
Expand Down Expand Up @@ -116,8 +107,11 @@ func run(ymlPath string) error {
return fmt.Errorf("unable to remove generated file \"generated_component_telemetry_test.go\": %w", err)
}

toGenerate := map[string]string{}
if len(md.Telemetry.Metrics) != 0 { // if there are telemetry metrics, generate telemetry specific files
testDir := filepath.Join(ymlDir, "internal", md.GeneratedPackageName+"test")
if err = os.MkdirAll(testDir, 0o700); err != nil {
return fmt.Errorf("unable to create output test directory %q: %w", codeDir, err)
}
toGenerate[filepath.Join(tmplDir, "telemetry.go.tmpl")] = filepath.Join(codeDir, "generated_telemetry.go")
toGenerate[filepath.Join(tmplDir, "telemetry_test.go.tmpl")] = filepath.Join(codeDir, "generated_telemetry_test.go")
toGenerate[filepath.Join(tmplDir, "telemetrytest.go.tmpl")] = filepath.Join(testDir, "generated_telemetrytest.go")
Expand All @@ -128,24 +122,15 @@ func run(ymlPath string) error {
toGenerate[filepath.Join(tmplDir, "documentation.md.tmpl")] = filepath.Join(ymlDir, "documentation.md")
}

for tmpl, dst := range toGenerate {
if err = generateFile(tmpl, dst, md, "metadata"); err != nil {
return err
if len(md.Metrics) > 0 || len(md.ResourceAttributes) > 0 {
testdataDir := filepath.Join(codeDir, "testdata")
if err = os.MkdirAll(filepath.Join(codeDir, "testdata"), 0o700); err != nil {
return fmt.Errorf("unable to create output directory %q: %w", testdataDir, err)
}
}

if len(md.Metrics) == 0 && len(md.ResourceAttributes) == 0 {
return nil
}

if err = os.MkdirAll(filepath.Join(codeDir, "testdata"), 0o700); err != nil {
return fmt.Errorf("unable to create output directory %q: %w", filepath.Join(codeDir, "testdata"), err)
}

toGenerate = map[string]string{
filepath.Join(tmplDir, "testdata", "config.yaml.tmpl"): filepath.Join(codeDir, "testdata", "config.yaml"),
filepath.Join(tmplDir, "config.go.tmpl"): filepath.Join(codeDir, "generated_config.go"),
filepath.Join(tmplDir, "config_test.go.tmpl"): filepath.Join(codeDir, "generated_config_test.go"),
toGenerate[filepath.Join(tmplDir, "testdata", "config.yaml.tmpl")] = filepath.Join(testdataDir, "config.yaml")
toGenerate[filepath.Join(tmplDir, "config.go.tmpl")] = filepath.Join(codeDir, "generated_config.go")
toGenerate[filepath.Join(tmplDir, "config_test.go.tmpl")] = filepath.Join(codeDir, "generated_config_test.go")
}

if len(md.ResourceAttributes) > 0 { // only generate resource files if resource attributes are configured
Expand All @@ -158,6 +143,13 @@ func run(ymlPath string) error {
toGenerate[filepath.Join(tmplDir, "metrics_test.go.tmpl")] = filepath.Join(codeDir, "generated_metrics_test.go")
}

// If at least one file to generate, will need the codeDir
if len(toGenerate) > 0 {
if err = os.MkdirAll(codeDir, 0o700); err != nil {
return fmt.Errorf("unable to create output directory %q: %w", codeDir, err)
}
}

for tmpl, dst := range toGenerate {
if err = generateFile(tmpl, dst, md, md.GeneratedPackageName); err != nil {
return err
Expand Down

0 comments on commit c01f327

Please sign in to comment.