diff --git a/cmd/build.go b/cmd/build.go index d2afc2eb71f79fe6baa21430cdb6b28c2945515d_Y21kL2J1aWxkLmdv..840f3a5d5736e8e81e10b561aff254d1b17cb2ea_Y21kL2J1aWxkLmdv 100644 --- a/cmd/build.go +++ b/cmd/build.go @@ -9,10 +9,11 @@ type BuildCmd struct { Args struct { - DryRun bool `short:"d" long:"dry-run" description:"if set only prints commands but do not run them"` - Keep bool `short:"k" long:"keep" description:"Keep the temporary files"` - Output string `short:"o" long:"output" description:"output directory, use \"stdout\" to print to stdout"` - Namespace string `short:"n" long:"namespace" description:"force helm namespace flag for all helm charts"` + DryRun bool `short:"d" long:"dry-run" description:"if set only prints commands but do not run them"` + Keep bool `short:"k" long:"keep" description:"Keep the temporary files"` + Output string `short:"o" long:"output" description:"output directory, use \"stdout\" to print to stdout"` + Namespace string `short:"n" long:"namespace" description:"force helm namespace flag for all helm charts"` + WithoutHydrate bool `short:"h" long:"without-hydrate" description:"don't hydrate files with beaver variables"` } PositionalArgs struct { DirName string `required:"yes" positional-arg-name:"directory"` @@ -30,7 +31,15 @@ log := LoggingOptions.Logger() log.Debug().Str("directory", cmd.PositionalArgs.DirName).Msg("starting beaver") - config := runner.NewCmdConfig(log, ".", cmd.PositionalArgs.DirName, cmd.Args.DryRun, cmd.Args.Output, cmd.Args.Namespace) + config := runner.NewCmdConfig( + cmd.log, + ".", + cmd.PositionalArgs.DirName, + cmd.Args.DryRun, + cmd.Args.WithoutHydrate, + cmd.Args.Output, + cmd.Args.Namespace, + ) path, err := os.Getwd() if err != nil { diff --git a/runner/cmd_config.go b/runner/cmd_config.go index d2afc2eb71f79fe6baa21430cdb6b28c2945515d_cnVubmVyL2NtZF9jb25maWcuZ28=..840f3a5d5736e8e81e10b561aff254d1b17cb2ea_cnVubmVyL2NtZF9jb25maWcuZ28= 100644 --- a/runner/cmd_config.go +++ b/runner/cmd_config.go @@ -61,12 +61,13 @@ } type CmdConfig struct { - Spec CmdSpec - RootDir string - Layers []string - Namespace string - Logger zerolog.Logger - DryRun bool - Output string + Spec CmdSpec + RootDir string + Layers []string + Namespace string + Logger zerolog.Logger + DryRun bool + WithoutHydrate bool + Output string } @@ -71,5 +72,13 @@ } -func NewCmdConfig(logger zerolog.Logger, rootDir, configDir string, dryRun bool, output string, namespace string) *CmdConfig { +func NewCmdConfig( + logger zerolog.Logger, + rootDir, + configDir string, + dryRun bool, + withoutHydrate bool, + output string, + namespace string, +) *CmdConfig { cmdConfig := &CmdConfig{} cmdConfig.DryRun = dryRun @@ -74,5 +83,6 @@ cmdConfig := &CmdConfig{} cmdConfig.DryRun = dryRun + cmdConfig.WithoutHydrate = withoutHydrate cmdConfig.Output = output cmdConfig.RootDir = rootDir cmdConfig.Layers = append(cmdConfig.Layers, configDir) @@ -363,10 +373,10 @@ } for key, chart := range c.Spec.Charts { - paths, err := hydrateFiles(dirName, variables, chart.ValuesFileNames) + paths, err := hydrateFiles(dirName, variables, chart.ValuesFileNames, c.WithoutHydrate) if err != nil { return err } chart.ValuesFileNames = paths c.Spec.Charts[key] = chart } @@ -367,10 +377,10 @@ if err != nil { return err } chart.ValuesFileNames = paths c.Spec.Charts[key] = chart } - paths, err := hydrateFiles(dirName, variables, c.Spec.Ytt) + paths, err := hydrateFiles(dirName, variables, c.Spec.Ytt, c.WithoutHydrate) if err != nil { return err } diff --git a/runner/cmd_test.go b/runner/cmd_test.go index d2afc2eb71f79fe6baa21430cdb6b28c2945515d_cnVubmVyL2NtZF90ZXN0Lmdv..840f3a5d5736e8e81e10b561aff254d1b17cb2ea_cnVubmVyL2NtZF90ZXN0Lmdv 100644 --- a/runner/cmd_test.go +++ b/runner/cmd_test.go @@ -35,7 +35,7 @@ testPath := filepath.Join("environments", "ns1") absConfigDir, err := filepath.Abs(fixtures) require.NoError(t, err) - c := runner.NewCmdConfig(tl.Logger(), absConfigDir, testPath, false, "", "") + c := runner.NewCmdConfig(tl.Logger(), absConfigDir, testPath, false, false, "", "") tmpDir, err := os.MkdirTemp(os.TempDir(), "beaver-") require.NoError(t, err) defer func() { diff --git a/runner/config_test.go b/runner/config_test.go index d2afc2eb71f79fe6baa21430cdb6b28c2945515d_cnVubmVyL2NvbmZpZ190ZXN0Lmdv..840f3a5d5736e8e81e10b561aff254d1b17cb2ea_cnVubmVyL2NvbmZpZ190ZXN0Lmdv 100644 --- a/runner/config_test.go +++ b/runner/config_test.go @@ -179,7 +179,7 @@ testNS := "environments/ns1" absConfigDir, err := filepath.Abs(fixtures) require.NoError(t, err) - c := runner.NewCmdConfig(tl.Logger(), absConfigDir, testNS, false, "", "") + c := runner.NewCmdConfig(tl.Logger(), absConfigDir, testNS, false, false, "", "") tmpDir, err := os.MkdirTemp(os.TempDir(), "beaver-") require.NoError(t, err) defer func() { @@ -209,7 +209,7 @@ testNS := "environments/ns1" absConfigDir, err := filepath.Abs(fixtures) require.NoError(t, err) - c := runner.NewCmdConfig(tl.Logger(), absConfigDir, testNS, false, "", "") + c := runner.NewCmdConfig(tl.Logger(), absConfigDir, testNS, false, false, "", "") tmpDir, err := os.MkdirTemp(os.TempDir(), "beaver-") require.NoError(t, err) defer func() { @@ -225,7 +225,7 @@ testNS := "environments/ns1" absConfigDir, err := filepath.Abs(fixtures) require.NoError(t, err) - c := runner.NewCmdConfig(tl.Logger(), absConfigDir, testNS, false, "", "") + c := runner.NewCmdConfig(tl.Logger(), absConfigDir, testNS, false, false, "", "") tmpDir, err := os.MkdirTemp(os.TempDir(), "beaver-") require.NoError(t, err) defer func() { @@ -391,7 +391,7 @@ tl := testutils.NewTestLogger(t) absConfigDir, err := filepath.Abs(shaFixtures) require.NoError(t, err) - c := runner.NewCmdConfig(tl.Logger(), absConfigDir, "base", false, "", "") + c := runner.NewCmdConfig(tl.Logger(), absConfigDir, "base", false, false, "", "") tmpDir, err := os.MkdirTemp(os.TempDir(), "beaver-") require.NoError(t, err) defer func() { diff --git a/runner/hydrate.go b/runner/hydrate.go index d2afc2eb71f79fe6baa21430cdb6b28c2945515d_cnVubmVyL2h5ZHJhdGUuZ28=..840f3a5d5736e8e81e10b561aff254d1b17cb2ea_cnVubmVyL2h5ZHJhdGUuZ28= 100644 --- a/runner/hydrate.go +++ b/runner/hydrate.go @@ -161,8 +161,8 @@ } // hydrate a given file -func hydrate(input string, output io.Writer, variables map[string]interface{}) error { +func hydrate(input string, output io.Writer, variables map[string]interface{}, disabled bool) error { byteTemplate, err := os.ReadFile(input) if err != nil { return fmt.Errorf("failed to read %s: %w", input, err) } @@ -165,8 +165,12 @@ byteTemplate, err := os.ReadFile(input) if err != nil { return fmt.Errorf("failed to read %s: %w", input, err) } + if disabled { + _, err := output.Write(byteTemplate) + return err + } return Hydrate(byteTemplate, output, variables) } // hydrateFiles in a given directory @@ -169,8 +173,8 @@ return Hydrate(byteTemplate, output, variables) } // hydrateFiles in a given directory -func hydrateFiles(tmpDir string, variables map[string]interface{}, paths []string) ([]string, error) { +func hydrateFiles(tmpDir string, variables map[string]interface{}, paths []string, disabled bool) ([]string, error) { var result []string for _, path := range paths { fileInfo, err := os.Stat(path) @@ -190,7 +194,7 @@ defer func() { _ = tmpFile.Close() }() - if err := hydrate(path, tmpFile, variables); err != nil { + if err := hydrate(path, tmpFile, variables, disabled); err != nil { return nil, fmt.Errorf("failed to hydrate: %w", err) } result = append(result, tmpFile.Name()) diff --git a/runner/main.go b/runner/main.go index d2afc2eb71f79fe6baa21430cdb6b28c2945515d_cnVubmVyL21haW4uZ28=..840f3a5d5736e8e81e10b561aff254d1b17cb2ea_cnVubmVyL21haW4uZ28= 100644 --- a/runner/main.go +++ b/runner/main.go @@ -105,7 +105,7 @@ } }() } - if err := hydrate(inFilePath, outFile, variables); err != nil { + if err := hydrate(inFilePath, outFile, variables, r.config.WithoutHydrate); err != nil { return fmt.Errorf("cannot hydrate: %s - %w", outFilePath, err) } } @@ -209,7 +209,7 @@ "build": RelInputFilePath, } - if err := hydrate(backupFile, outFile, variables); err != nil { + if err := hydrate(backupFile, outFile, variables, r.config.WithoutHydrate); err != nil { return nil, fmt.Errorf("cannot hydrate: %s - %w", fPath, err) } lastKustomizeFolder = filepath.Join(layer, "kustomize")