diff --git a/.circleci/config.yml b/.circleci/config.yml index b4e6af55..be2ac41f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,6 +9,7 @@ workflows: - architect/go-build: name: go-build-devctl binary: devctl + pre_test_target: generate-go # Needed to trigger job also on git tag. filters: tags: diff --git a/.gitignore b/.gitignore index a4287e89..d564cd6e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ TODO .DS_Store .idea/ .vscode/ + +*.template.sha diff --git a/CHANGELOG.md b/CHANGELOG.md index 53e87277..289fdb7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Removed + +- devctl version is no longer added to generated file header + +### Changed + +- Generated file headers now include a GitHub link + ## [6.23.3] - 2024-03-26 ### Changed diff --git a/Makefile.zzz.custom.mk b/Makefile.zzz.custom.mk new file mode 100644 index 00000000..8bc40f9c --- /dev/null +++ b/Makefile.zzz.custom.mk @@ -0,0 +1,4 @@ +generate-go: + go generate ./... + +$(SOURCES): generate-go diff --git a/pkg/gen/input/ami/internal/params/key_common.go b/pkg/gen/input/ami/internal/params/key_common.go index d48ef3a5..41fabfab 100644 --- a/pkg/gen/input/ami/internal/params/key_common.go +++ b/pkg/gen/input/ami/internal/params/key_common.go @@ -5,7 +5,7 @@ import ( ) func Header(comment string) string { - return internal.Header(comment) + return internal.Header(comment, "") } func Package(p Params) string { diff --git a/pkg/gen/input/dependabot/internal/file/dependabot.go b/pkg/gen/input/dependabot/internal/file/dependabot.go index 12c22e86..b925236f 100644 --- a/pkg/gen/input/dependabot/internal/file/dependabot.go +++ b/pkg/gen/input/dependabot/internal/file/dependabot.go @@ -11,6 +11,10 @@ import ( //go:embed dependabot.yml.template var createDependabotTemplate string +//go:generate go run ../../../update-template-sha.go dependabot.yml.template +//go:embed dependabot.yml.template.sha +var createDependabotTemplateSha string + func NewCreateDependabotInput(p params.Params) input.Input { i := input.Input{ Path: filepath.Join(p.Dir, "dependabot.yml"), @@ -19,7 +23,7 @@ func NewCreateDependabotInput(p params.Params) input.Input { "EcosystemGithubActions": params.EcosystemGithubActions(p), "EcosystemGomod": params.EcosystemGomod(p), "Ecosystems": params.Ecosystems(p), - "Header": params.Header("#"), + "Header": params.Header("#", createDependabotTemplateSha), "Interval": params.Interval(p), "Reviewers": params.Reviewers(p), }, diff --git a/pkg/gen/input/dependabot/internal/params/key_common.go b/pkg/gen/input/dependabot/internal/params/key_common.go index 96cfb346..49642593 100644 --- a/pkg/gen/input/dependabot/internal/params/key_common.go +++ b/pkg/gen/input/dependabot/internal/params/key_common.go @@ -4,6 +4,6 @@ import ( "github.com/giantswarm/devctl/v6/pkg/gen/internal" ) -func Header(comment string) string { - return internal.Header(comment) +func Header(comment, githubUrl string) string { + return internal.Header(comment, githubUrl) } diff --git a/pkg/gen/input/makefile/internal/file/makefile.go b/pkg/gen/input/makefile/internal/file/makefile.go index c80809dc..572b65c0 100644 --- a/pkg/gen/input/makefile/internal/file/makefile.go +++ b/pkg/gen/input/makefile/internal/file/makefile.go @@ -10,12 +10,16 @@ import ( //go:embed Makefile.template var makefileTemplate string +//go:generate go run ../../../update-template-sha.go Makefile.template +//go:embed Makefile.template.sha +var makefileTemplateSha string + func NewMakefileInput(p params.Params) input.Input { i := input.Input{ Path: "Makefile", TemplateBody: makefileTemplate, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", makefileTemplateSha), }, } diff --git a/pkg/gen/input/makefile/internal/file/makefile_gen_app_mk.go b/pkg/gen/input/makefile/internal/file/makefile_gen_app_mk.go index 9520b7d0..7c21dc15 100644 --- a/pkg/gen/input/makefile/internal/file/makefile_gen_app_mk.go +++ b/pkg/gen/input/makefile/internal/file/makefile_gen_app_mk.go @@ -10,12 +10,16 @@ import ( //go:embed Makefile.gen.app.mk.template var makefileGenAppMkTemplate string +//go:generate go run ../../../update-template-sha.go Makefile.gen.app.mk.template +//go:embed Makefile.gen.app.mk.template.sha +var makefileGenAppMkTemplateSha string + func NewMakefileGenAppMkInput(p params.Params) input.Input { i := input.Input{ Path: "Makefile.gen.app.mk", TemplateBody: makefileGenAppMkTemplate, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", makefileGenAppMkTemplateSha), }, } diff --git a/pkg/gen/input/makefile/internal/file/makefile_gen_cluster_app_mk.go b/pkg/gen/input/makefile/internal/file/makefile_gen_cluster_app_mk.go index ccdeb88e..f2a3db0b 100644 --- a/pkg/gen/input/makefile/internal/file/makefile_gen_cluster_app_mk.go +++ b/pkg/gen/input/makefile/internal/file/makefile_gen_cluster_app_mk.go @@ -10,12 +10,16 @@ import ( //go:embed Makefile.gen.cluster_app.mk.template var makefileGenClusterAppMkTemplate string +//go:generate go run ../../../update-template-sha.go Makefile.gen.cluster_app.mk.template +//go:embed Makefile.gen.cluster_app.mk.template.sha +var makefileGenClusterAppMkTemplateSha string + func NewMakefileGenClusterAppMkInput(p params.Params) input.Input { i := input.Input{ Path: "Makefile.gen.cluster_app.mk", TemplateBody: makefileGenClusterAppMkTemplate, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", makefileGenClusterAppMkTemplateSha), }, } diff --git a/pkg/gen/input/makefile/internal/file/makefile_gen_go_mk.go b/pkg/gen/input/makefile/internal/file/makefile_gen_go_mk.go index bb30a25b..05cfb368 100644 --- a/pkg/gen/input/makefile/internal/file/makefile_gen_go_mk.go +++ b/pkg/gen/input/makefile/internal/file/makefile_gen_go_mk.go @@ -10,9 +10,17 @@ import ( //go:embed Makefile.gen.go.mk.template var makefileGenGoMkTemplate string +//go:generate go run ../../../update-template-sha.go Makefile.gen.go.mk.template +//go:embed Makefile.gen.go.mk.template.sha +var makefileGenGoMkTemplateSha string + //go:embed windows-code-signing.sh.template var windowsCodeSigningShellScriptTemplate string +//go:generate go run ../../../update-template-sha.go windows-code-signing.sh.template +//go:embed windows-code-signing.sh.template.sha +var windowsCodeSigningShellScriptTemplateSha string + func NewMakefileGenGoMkInput(p params.Params) []input.Input { inputs := []input.Input{ { @@ -20,7 +28,7 @@ func NewMakefileGenGoMkInput(p params.Params) []input.Input { TemplateBody: makefileGenGoMkTemplate, TemplateData: map[string]interface{}{ "IsFlavourCLI": params.IsFlavourCLI(p), - "Header": params.Header("#"), + "Header": params.Header("#", makefileGenGoMkTemplateSha), }, }, } @@ -31,7 +39,7 @@ func NewMakefileGenGoMkInput(p params.Params) []input.Input { Permissions: 0755, TemplateBody: windowsCodeSigningShellScriptTemplate, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", windowsCodeSigningShellScriptTemplateSha), }, }) } diff --git a/pkg/gen/input/makefile/internal/file/makefile_gen_k8sapi_mk.go b/pkg/gen/input/makefile/internal/file/makefile_gen_k8sapi_mk.go index 0704cca8..382b6847 100644 --- a/pkg/gen/input/makefile/internal/file/makefile_gen_k8sapi_mk.go +++ b/pkg/gen/input/makefile/internal/file/makefile_gen_k8sapi_mk.go @@ -10,12 +10,16 @@ import ( //go:embed Makefile.gen.k8sapi.mk.template var makefileGenKubernetesAPITemplate string +//go:generate go run ../../../update-template-sha.go Makefile.gen.k8sapi.mk.template +//go:embed Makefile.gen.k8sapi.mk.template.sha +var makefileGenKubernetesAPITemplateSha string + func NewMakefileGenKubernetesAPIMkInput(p params.Params) input.Input { i := input.Input{ Path: "Makefile.gen.k8sapi.mk", TemplateBody: makefileGenKubernetesAPITemplate, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", makefileGenKubernetesAPITemplateSha), }, } diff --git a/pkg/gen/input/makefile/internal/params/key_common.go b/pkg/gen/input/makefile/internal/params/key_common.go index 39b3da02..7aa869f4 100644 --- a/pkg/gen/input/makefile/internal/params/key_common.go +++ b/pkg/gen/input/makefile/internal/params/key_common.go @@ -9,8 +9,8 @@ func IsFlavourCLI(p Params) bool { return p.Flavours.Contains(gen.FlavourCLI) } -func Header(comment string) string { - return internal.Header(comment) +func Header(comment, githubUrl string) string { + return internal.Header(comment, githubUrl) } func FileName(p Params, suffix string) string { diff --git a/pkg/gen/input/update-template-sha.go b/pkg/gen/input/update-template-sha.go new file mode 100644 index 00000000..1aadf286 --- /dev/null +++ b/pkg/gen/input/update-template-sha.go @@ -0,0 +1,38 @@ +//go:build ignore + +package main + +import ( + "fmt" + "log" + "os" + "os/exec" + "strings" +) + +func main() { + filename := os.Args[1] + + currentWorkingDirectory, err := os.Getwd() + if err != nil { + log.Fatal(err) + } + + rootCmd := exec.Command("git", "rev-parse", "--show-toplevel") + gitRoot, err := rootCmd.CombinedOutput() + if err != nil { + log.Fatal(err) + } + + shaCmd := exec.Command("git", "rev-list", "--all", "-1", "--", fmt.Sprintf("%s/%s", currentWorkingDirectory, filename)) + sha, err := shaCmd.CombinedOutput() + if err != nil { + log.Fatal(err) + } + + strippedPath := strings.TrimPrefix(currentWorkingDirectory, strings.TrimSpace(string(gitRoot))) + + if err := os.WriteFile(filename+".sha", []byte(fmt.Sprintf("https://github.com/giantswarm/devctl/blob/%s%s/%s", strings.TrimSpace(string(sha)), strippedPath, filename)), 0666); err != nil { + log.Fatal(err) + } +} diff --git a/pkg/gen/input/workflows/internal/file/add_customer_board_automation.go b/pkg/gen/input/workflows/internal/file/add_customer_board_automation.go index 3defef52..ed155a63 100644 --- a/pkg/gen/input/workflows/internal/file/add_customer_board_automation.go +++ b/pkg/gen/input/workflows/internal/file/add_customer_board_automation.go @@ -10,6 +10,10 @@ import ( //go:embed add_customer_board_automation.yaml.template var customerBoardAutomationTemplate string +//go:generate go run ../../../update-template-sha.go add_customer_board_automation.yaml.template +//go:embed add_customer_board_automation.yaml.template.sha +var customerBoardAutomationTemplateSha string + func NewCustomerBoardAutomationInput(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "add_customer_board_automation.yaml"), @@ -19,7 +23,7 @@ func NewCustomerBoardAutomationInput(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", customerBoardAutomationTemplateSha), }, } diff --git a/pkg/gen/input/workflows/internal/file/check_values_schema.go b/pkg/gen/input/workflows/internal/file/check_values_schema.go index 5bb32b45..36a1b360 100644 --- a/pkg/gen/input/workflows/internal/file/check_values_schema.go +++ b/pkg/gen/input/workflows/internal/file/check_values_schema.go @@ -10,6 +10,10 @@ import ( //go:embed check_values_schema.yaml.template var checkValuesSchemaTemplate string +//go:generate go run ../../../update-template-sha.go check_values_schema.yaml.template +//go:embed check_values_schema.yaml.template.sha +var checkValuesSchemaTemplateSha string + func NewCheckValuesSchemaInput(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "check_values_schema.yaml"), @@ -19,7 +23,7 @@ func NewCheckValuesSchemaInput(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", checkValuesSchemaTemplateSha), "SchemaDocsURL": "https://intranet.giantswarm.io/docs/organizational-structure/teams/cabbage/app-updates/helm-values-schema/", }, } diff --git a/pkg/gen/input/workflows/internal/file/cluster_app_documentation_validation.go b/pkg/gen/input/workflows/internal/file/cluster_app_documentation_validation.go index 75c0ac29..250a8978 100644 --- a/pkg/gen/input/workflows/internal/file/cluster_app_documentation_validation.go +++ b/pkg/gen/input/workflows/internal/file/cluster_app_documentation_validation.go @@ -10,6 +10,10 @@ import ( //go:embed cluster_app_documentation_validation.yaml.template var clusterAppDocumentationValidationTemplate string +//go:generate go run ../../../update-template-sha.go cluster_app_documentation_validation.yaml.template +//go:embed cluster_app_documentation_validation.yaml.template.sha +var clusterAppDocumentationValidationTemplateSha string + func NewClusterAppDocumentationValidation(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "documentation_validation.yaml"), @@ -19,7 +23,7 @@ func NewClusterAppDocumentationValidation(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", clusterAppDocumentationValidationTemplateSha), }, } diff --git a/pkg/gen/input/workflows/internal/file/cluster_app_schema_validation.go b/pkg/gen/input/workflows/internal/file/cluster_app_schema_validation.go index 2b84f35c..881d1fc8 100644 --- a/pkg/gen/input/workflows/internal/file/cluster_app_schema_validation.go +++ b/pkg/gen/input/workflows/internal/file/cluster_app_schema_validation.go @@ -10,6 +10,10 @@ import ( //go:embed cluster_app_schema_validation.yaml.template var clusterAppSchemaValidationTemplate string +//go:generate go run ../../../update-template-sha.go cluster_app_schema_validation.yaml.template +//go:embed cluster_app_schema_validation.yaml.template.sha +var clusterAppSchemaValidationTemplateSha string + func NewClusterAppSchemaValidation(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "json_schema_validation.yaml"), @@ -19,7 +23,7 @@ func NewClusterAppSchemaValidation(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", clusterAppSchemaValidationTemplateSha), }, } diff --git a/pkg/gen/input/workflows/internal/file/create_release.go b/pkg/gen/input/workflows/internal/file/create_release.go index a82b7bc4..c9f6cd47 100644 --- a/pkg/gen/input/workflows/internal/file/create_release.go +++ b/pkg/gen/input/workflows/internal/file/create_release.go @@ -10,6 +10,10 @@ import ( //go:embed create_release.yaml.template var createReleaseTemplate string +//go:generate go run ../../../update-template-sha.go create_release.yaml.template +//go:embed create_release.yaml.template.sha +var createReleaseTemplateSha string + func NewCreateReleaseInput(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "create_release.yaml"), @@ -19,7 +23,7 @@ func NewCreateReleaseInput(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", createReleaseTemplateSha), "EnableFloatingMajorVersionTags": params.EnableFloatingMajorVersionTags(p), "IsFlavourCLI": params.IsFlavourCLI(p), "StepSetUpGitIdentity": params.StepSetUpGitIdentity(), diff --git a/pkg/gen/input/workflows/internal/file/create_release_pr.go b/pkg/gen/input/workflows/internal/file/create_release_pr.go index 3d262375..246e670d 100644 --- a/pkg/gen/input/workflows/internal/file/create_release_pr.go +++ b/pkg/gen/input/workflows/internal/file/create_release_pr.go @@ -10,6 +10,10 @@ import ( //go:embed create_release_pr.yaml.template var createReleasePRTemplate string +//go:generate go run ../../../update-template-sha.go create_release_pr.yaml.template +//go:embed create_release_pr.yaml.template.sha +var createReleasePRTemplateSha string + func NewCreateReleasePRInput(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "create_release_pr.yaml"), @@ -19,7 +23,7 @@ func NewCreateReleasePRInput(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", createReleasePRTemplateSha), "StepSetUpGitIdentity": params.StepSetUpGitIdentity(), }, } diff --git a/pkg/gen/input/workflows/internal/file/ensure_major_tags.go b/pkg/gen/input/workflows/internal/file/ensure_major_tags.go index 03b7ca55..06c703c1 100644 --- a/pkg/gen/input/workflows/internal/file/ensure_major_tags.go +++ b/pkg/gen/input/workflows/internal/file/ensure_major_tags.go @@ -10,6 +10,10 @@ import ( //go:embed ensure_major_version_tags.yaml.template var ensureMajorVersionTagsTemplate string +//go:generate go run ../../../update-template-sha.go ensure_major_version_tags.yaml.template +//go:embed ensure_major_version_tags.yaml.template.sha +var ensureMajorVersionTagsTemplateSha string + func NewEnsureMajorVersionTagsInput(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "ensure_major_version_tags.yaml"), @@ -19,7 +23,7 @@ func NewEnsureMajorVersionTagsInput(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", ensureMajorVersionTagsTemplateSha), }, } diff --git a/pkg/gen/input/workflows/internal/file/fix_vulnerabilities.go b/pkg/gen/input/workflows/internal/file/fix_vulnerabilities.go index ae76973e..589e5ba6 100644 --- a/pkg/gen/input/workflows/internal/file/fix_vulnerabilities.go +++ b/pkg/gen/input/workflows/internal/file/fix_vulnerabilities.go @@ -10,6 +10,10 @@ import ( //go:embed fix_vulnerabilities.yaml.template var fixVulnerabilitiesTemplate string +//go:generate go run ../../../update-template-sha.go fix_vulnerabilities.yaml.template +//go:embed fix_vulnerabilities.yaml.template.sha +var fixVulnerabilitiesTemplateSha string + func NewFixVulnerabilitiesInput(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "fix_vulnerabilities.yaml"), @@ -19,7 +23,7 @@ func NewFixVulnerabilitiesInput(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", fixVulnerabilitiesTemplateSha), "StepSetUpGitIdentity": params.StepSetUpGitIdentity(), }, } diff --git a/pkg/gen/input/workflows/internal/file/gitleaks.go b/pkg/gen/input/workflows/internal/file/gitleaks.go index 640f8419..d1c20d5c 100644 --- a/pkg/gen/input/workflows/internal/file/gitleaks.go +++ b/pkg/gen/input/workflows/internal/file/gitleaks.go @@ -1,10 +1,19 @@ package file import ( + _ "embed" + "github.com/giantswarm/devctl/v6/pkg/gen/input" "github.com/giantswarm/devctl/v6/pkg/gen/input/workflows/internal/params" ) +//go:embed gitleaks.yaml.template +var gitleaksTemplate string + +//go:generate go run ../../../update-template-sha.go gitleaks.yaml.template +//go:embed gitleaks.yaml.template.sha +var gitleaksTemplateSha string + func NewGitleaksInput(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "gitleaks.yaml"), @@ -14,25 +23,9 @@ func NewGitleaksInput(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", gitleaksTemplateSha), }, } return i } - -var gitleaksTemplate = `{{{{ .Header }}}} -name: gitleaks - -on: [pull_request] - -jobs: - gitleaks: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - with: - fetch-depth: '0' - - name: gitleaks-action - uses: giantswarm/gitleaks-action@main -` diff --git a/pkg/gen/input/workflows/internal/file/gitleaks.yaml.template b/pkg/gen/input/workflows/internal/file/gitleaks.yaml.template new file mode 100644 index 00000000..9901cadb --- /dev/null +++ b/pkg/gen/input/workflows/internal/file/gitleaks.yaml.template @@ -0,0 +1,14 @@ +{{{{ .Header }}}} +name: gitleaks + +on: [pull_request] + +jobs: + gitleaks: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + fetch-depth: '0' + - name: gitleaks-action + uses: giantswarm/gitleaks-action@main diff --git a/pkg/gen/input/workflows/internal/file/helm_render_diff.go b/pkg/gen/input/workflows/internal/file/helm_render_diff.go index d0890de9..79c8e615 100644 --- a/pkg/gen/input/workflows/internal/file/helm_render_diff.go +++ b/pkg/gen/input/workflows/internal/file/helm_render_diff.go @@ -10,6 +10,10 @@ import ( //go:embed helm_render_diff.yaml.template var helmRenderDiffTemplate string +//go:generate go run ../../../update-template-sha.go helm_render_diff.yaml.template +//go:embed helm_render_diff.yaml.template.sha +var helmRenderDiffTemplateSha string + func NewHelmRenderDiff(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "diff_helm_render_templates.yaml"), @@ -19,7 +23,7 @@ func NewHelmRenderDiff(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", helmRenderDiffTemplateSha), }, } diff --git a/pkg/gen/input/workflows/internal/file/run_ossf_scorecard.go b/pkg/gen/input/workflows/internal/file/run_ossf_scorecard.go index 2c836d16..f6043343 100644 --- a/pkg/gen/input/workflows/internal/file/run_ossf_scorecard.go +++ b/pkg/gen/input/workflows/internal/file/run_ossf_scorecard.go @@ -10,6 +10,10 @@ import ( //go:embed run_ossf_scorecard.yaml.template var runOSSFScorecardTemplate string +//go:generate go run ../../../update-template-sha.go run_ossf_scorecard.yaml.template +//go:embed run_ossf_scorecard.yaml.template.sha +var runOSSFScorecardTemplateSha string + func NewRunOSSFScorecardInput(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "run_ossf_scorecard.yaml"), @@ -19,7 +23,7 @@ func NewRunOSSFScorecardInput(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", runOSSFScorecardTemplateSha), }, } diff --git a/pkg/gen/input/workflows/internal/file/update_chart.go b/pkg/gen/input/workflows/internal/file/update_chart.go index 8ae19384..28e03c3b 100644 --- a/pkg/gen/input/workflows/internal/file/update_chart.go +++ b/pkg/gen/input/workflows/internal/file/update_chart.go @@ -10,6 +10,10 @@ import ( //go:embed update_chart.yaml.template var updateChartTemplate string +//go:generate go run ../../../update-template-sha.go update_chart.yaml.template +//go:embed update_chart.yaml.template.sha +var updateChartTemplateSha string + func NewUpdateChartInput(p params.Params) input.Input { i := input.Input{ Path: params.RegenerableFileName(p, "update_chart.yaml"), @@ -19,7 +23,7 @@ func NewUpdateChartInput(p params.Params) input.Input { Right: "}}}}", }, TemplateData: map[string]interface{}{ - "Header": params.Header("#"), + "Header": params.Header("#", updateChartTemplateSha), "StepSetUpGitIdentity": params.StepSetUpGitIdentity(), "VendirVersion": "v0.32.2", "VendirSha": "f5d3cbbd8135d2d48f4f007b8a933bd60b2a827d68f4001c5d1774392fa7b3f2", diff --git a/pkg/gen/input/workflows/internal/params/key_common.go b/pkg/gen/input/workflows/internal/params/key_common.go index ad4321c5..3d0cdd2d 100644 --- a/pkg/gen/input/workflows/internal/params/key_common.go +++ b/pkg/gen/input/workflows/internal/params/key_common.go @@ -5,8 +5,8 @@ import ( "github.com/giantswarm/devctl/v6/pkg/gen/internal" ) -func Header(comment string) string { - return internal.Header(comment) +func Header(comment, githubUrl string) string { + return internal.Header(comment, githubUrl) } func StepSetUpGitIdentity() string { diff --git a/pkg/gen/internal/key.go b/pkg/gen/internal/key.go index d33231a9..827f77d3 100644 --- a/pkg/gen/internal/key.go +++ b/pkg/gen/internal/key.go @@ -4,8 +4,6 @@ import ( "fmt" "path/filepath" "strings" - - "github.com/giantswarm/devctl/v6/pkg/project" ) const ( @@ -24,13 +22,21 @@ func FileName(dir, name string) string { return filepath.Join(dir, name) } -func Header(comment string) string { - return strings.Join([]string{ +func Header(comment, githubUrl string) string { + parts := []string{ comment + " DO NOT EDIT. Generated with:", comment, - comment + " devctl@" + project.Version(), - comment, - }, "\n") + comment + " devctl", + } + if githubUrl != "" { + parts = append(parts, + comment, + comment+" "+githubUrl, + ) + } + parts = append(parts, comment) + + return strings.Join(parts, "\n") } func StepSetUpGitIdentity() string {