58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
| package runtime
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"strconv"
 | |
| 
 | |
| 	"github.com/helmfile/helmfile/pkg/envvar"
 | |
| )
 | |
| 
 | |
| // V1Mode is false by default for Helmfile v0.x and
 | |
| // true by default for Helmfile v1.x
 | |
| var (
 | |
| 	V1Mode bool
 | |
| 
 | |
| 	// GoccyGoYaml is set to true in order to let Helmfile use
 | |
| 	// goccy/go-yaml instead of gopkg.in/yaml.v2.
 | |
| 	// It's false by default in Helmfile v0.x and true by default for Helmfile v1.x.
 | |
| 	GoccyGoYaml bool
 | |
| 
 | |
| 	// We set this via ldflags at build-time so that we can use the
 | |
| 	// value specified at the build time as the runtime default.
 | |
| 	v1Mode string
 | |
| )
 | |
| 
 | |
| func Info() string {
 | |
| 	yamlLib := "gopkg.in/yaml.v2"
 | |
| 	if GoccyGoYaml {
 | |
| 		yamlLib = "goccy/go-yaml"
 | |
| 	}
 | |
| 
 | |
| 	return fmt.Sprintf("V1 mode = %v\nYAML library = %v", V1Mode, yamlLib)
 | |
| }
 | |
| 
 | |
| func init() {
 | |
| 	// You can toggle the V1 mode at runtime via an envvar:
 | |
| 	// - Helmfile v1.x behaves like v0.x by running it with HELMFILE_V1MODE=false
 | |
| 	// - Helmfile v0.x behaves like v1.x by with HELMFILE_V1MODE=true
 | |
| 	switch os.Getenv(envvar.V1Mode) {
 | |
| 	case "true":
 | |
| 		V1Mode = true
 | |
| 	case "false":
 | |
| 		V1Mode = false
 | |
| 	default:
 | |
| 		V1Mode, _ = strconv.ParseBool(v1Mode)
 | |
| 	}
 | |
| 
 | |
| 	// You can switch the YAML library at runtime via an envvar:
 | |
| 	switch os.Getenv(envvar.GoccyGoYaml) {
 | |
| 	case "true":
 | |
| 		GoccyGoYaml = true
 | |
| 	case "false":
 | |
| 		GoccyGoYaml = false
 | |
| 	default:
 | |
| 		GoccyGoYaml = V1Mode
 | |
| 	}
 | |
| }
 |