From 80675040978c1788ebcc281c1f6c211f3333a05d Mon Sep 17 00:00:00 2001 From: Hubertbits <170125456+hubertbits@users.noreply.github.com> Date: Wed, 16 Apr 2025 10:33:49 +0200 Subject: [PATCH] Add version package to allow test imports Signed-off-by: yxxhero --- pkg/app/init.go | 13 +++++++------ pkg/version/README.md | 38 ++++++++++++++++++++++++++++++++++++++ pkg/version/versions.go | 11 +++++++++++ 3 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 pkg/version/README.md create mode 100644 pkg/version/versions.go diff --git a/pkg/app/init.go b/pkg/app/init.go index 53b75a39..004b449e 100644 --- a/pkg/app/init.go +++ b/pkg/app/init.go @@ -14,13 +14,14 @@ import ( "helm.sh/helm/v3/pkg/cli" "github.com/helmfile/helmfile/pkg/helmexec" + "github.com/helmfile/helmfile/pkg/version" ) var ( manuallyInstallCode = 1 windowPackageManagers = map[string]string{ - "scoop": fmt.Sprintf("scoop install helm@%s", strings.TrimLeft(HelmRecommendedVersion, "v")), - "choco": fmt.Sprintf("choco install kubernetes-helm --version %s", strings.TrimLeft(HelmRecommendedVersion, "v")), + "scoop": fmt.Sprintf("scoop install helm@%s", strings.TrimLeft(version.HelmRecommendedVersion, "v")), + "choco": fmt.Sprintf("choco install kubernetes-helm --version %s", strings.TrimLeft(version.HelmRecommendedVersion, "v")), } ) @@ -90,7 +91,7 @@ func (h *HelmfileInit) InstallHelm() error { return h.installHelmOnWindows() } - err := h.WhetherContinue(fmt.Sprintf("use: '%s'", HelmInstallCommand)) + err := h.WhetherContinue(fmt.Sprintf("use: '%s'", version.HelmInstallCommand)) if err != nil { return err } @@ -102,14 +103,14 @@ func (h *HelmfileInit) InstallHelm() error { if err != nil { return err } - err = downloadfile(getHelmScript.Name(), HelmInstallCommand) + err = downloadfile(getHelmScript.Name(), version.HelmInstallCommand) if err != nil { return err } _, err = h.runner.Execute("bash", []string{ getHelmScript.Name(), "--version", - HelmRecommendedVersion, + version.HelmRecommendedVersion, }, nil, true) if err != nil { return err @@ -182,7 +183,7 @@ func (h *HelmfileInit) CheckHelm() error { if err != nil { return err } - requiredHelmVersion, _ := semver.NewVersion(HelmRequiredVersion) + requiredHelmVersion, _ := semver.NewVersion(version.HelmRequiredVersion) if helmversion.LessThan(requiredHelmVersion) { h.logger.Infof("helm version is too low, the current version is %s, the required version is %s", helmversion, requiredHelmVersion) err = h.UpdateHelm() diff --git a/pkg/version/README.md b/pkg/version/README.md new file mode 100644 index 00000000..eaf6ff74 --- /dev/null +++ b/pkg/version/README.md @@ -0,0 +1,38 @@ +# Version Package + +## Overview + +The `version` package contains version-related constants and utilities used throughout the Helmfile codebase. It was created as a standalone package to avoid import cycles while making version information accessible to all components. + +## Contents + +This package includes: + +- `HelmRequiredVersion`: The minimum required Helm version for Helmfile +- Other version-related constants and utilities + +## Usage + +Import this package when you need access to version information: + +```go +import "github.com/helmfile/helmfile/pkg/version" + +func someFunction() { + // Use version constants + requiredVersion := version.HelmRequiredVersion + + // Example usage + fmt.Printf("Helmfile requires Helm version %s or later\n", requiredVersion) +} +``` + +## Design Considerations + +This package is intentionally isolated from other Helmfile packages to prevent import cycles. It should: + +- Contain only version-related constants and simple utilities +- Not import other Helmfile packages +- Be kept minimal to serve its specific purpose + +When adding new version-related functionality, ensure it belongs here rather than in a more specific package. diff --git a/pkg/version/versions.go b/pkg/version/versions.go new file mode 100644 index 00000000..0ecc4f64 --- /dev/null +++ b/pkg/version/versions.go @@ -0,0 +1,11 @@ +package version + +const ( + HelmRequiredVersion = "v3.16.4" + HelmRecommendedVersion = "v3.17.2" + HelmDiffRecommendedVersion = "v3.11.0" + HelmSecretsRecommendedVersion = "v4.6.0" + HelmGitRecommendedVersion = "v0.15.1" + HelmS3RecommendedVersion = "v0.16.0" + HelmInstallCommand = "https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3" +)