diff --git a/cmd/create.go b/cmd/create.go index c27ea8b..f96e94c 100644 --- a/cmd/create.go +++ b/cmd/create.go @@ -64,7 +64,11 @@ func createCluster() { slog.Debug("ktbx configuration", "data", c) - internal.GenerateKindConfigFile(c) + kindConfigFile, err := internal.GenerateKindConfigFile(c) + if err != nil { + slog.Error("unable to generate kind configuration file", "error", err) + os.Exit(1) + } optName := "" if clusterName != "" { @@ -72,7 +76,7 @@ func createCluster() { } cmd_tpl := "%v create cluster --config %v%v" - cmd := fmt.Sprintf(cmd_tpl, internal.Kind, internal.KindConfigFile, optName) + cmd := fmt.Sprintf(cmd_tpl, internal.Kind, kindConfigFile, optName) _, _, err = ExecCmd(cmd, false) if err != nil { diff --git a/internal/config.go b/internal/config.go index af6be30..353ac85 100644 --- a/internal/config.go +++ b/internal/config.go @@ -19,7 +19,7 @@ import ( ) const Kind string = "kind" -const KindConfigFile string = "/tmp/kind-config.yaml" +const KindConfigFilename string = "kind-config.yaml" type KtbxConfig struct { AuditPolicy string `mapstructure:"auditPolicy" default:""` @@ -87,16 +87,28 @@ func GetConfig() KtbxConfig { return *c } -func GenerateKindConfigFile(c KtbxConfig) { - slog.Info("Generate kind configuration file", "file", KindConfigFile) +func GenerateKindConfigFile(c KtbxConfig) (string, error) { + slog.Info("Generate kind configuration file", "file", KindConfigFilename) - f, err := os.Create(KindConfigFile) - cobra.CheckErr(err) + tmpdir, err := os.MkdirTemp("/tmp", "kind-config") + if err != nil { + slog.Error("unable to create temporary directory", "error", err) + return "", err + } + + kindConfigFile := path.Join(tmpdir, KindConfigFilename) + + f, err := os.Create(kindConfigFile) + if err != nil { + slog.Error("unable to create kind configuration file", "error", err) + return "", err + } defer f.Close() kindconfig := applyTemplate(c) slog.Debug("kind configuration", "data", kindconfig) f.WriteString(kindconfig) + return kindConfigFile, nil } func applyTemplate(sc KtbxConfig) string { diff --git a/internal/config_test.go b/internal/config_test.go index 5ab3c9e..70e2093 100644 --- a/internal/config_test.go +++ b/internal/config_test.go @@ -78,10 +78,11 @@ func TestGenerateKindConfigFile(t *testing.T) { } // Call the GenerateKindConfigFile function - GenerateKindConfigFile(config) + kindConfigFile, err := GenerateKindConfigFile(config) + require.NoError(err) // Read the contents of the generated file - fileContents, err := os.ReadFile(KindConfigFile) + fileContents, err := os.ReadFile(kindConfigFile) require.NoError(err) // Assert the expected file contents