# HG changeset patch # User Steeve Chailloux <steeve.chailloux@orus.io> # Date 1703690958 -3600 # Wed Dec 27 16:29:18 2023 +0100 # Node ID 4157e9d38f078a9e1d71c4d8371716019eb9d0f5 # Parent 17ff43b021783026c21232364c25b45c28d7985b add --without-hydrate flag to build command diff --git a/cmd/build.go b/cmd/build.go --- 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 --- a/runner/cmd_config.go +++ b/runner/cmd_config.go @@ -61,18 +61,28 @@ } 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 } -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 + cmdConfig.WithoutHydrate = withoutHydrate cmdConfig.Output = output cmdConfig.RootDir = rootDir cmdConfig.Layers = append(cmdConfig.Layers, configDir) @@ -363,14 +373,14 @@ } 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 } - 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 --- 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 --- 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 --- a/runner/hydrate.go +++ b/runner/hydrate.go @@ -161,16 +161,20 @@ } // 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) } + if disabled { + _, err := output.Write(byteTemplate) + return err + } 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 --- 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")