diff --git a/pkg/build/cmd/publishpackages.go b/pkg/build/cmd/publishpackages.go index 3971c65a497..a44e30503aa 100644 --- a/pkg/build/cmd/publishpackages.go +++ b/pkg/build/cmd/publishpackages.go @@ -69,7 +69,7 @@ func PublishPackages(c *cli.Context) error { // In test release mode, the operator should configure different GCS buckets for the package repos, // so should be safe. if cfg.ReleaseMode.Mode == config.TagMode { - workDir, err := fsutil.CreateTempFile("") + workDir, err := fsutil.CreateTempDir("") if err != nil { return err } diff --git a/pkg/build/fsutil/createtempfile.go b/pkg/build/fsutil/createtemp.go similarity index 55% rename from pkg/build/fsutil/createtempfile.go rename to pkg/build/fsutil/createtemp.go index e75dd11677d..21720a9a3d8 100644 --- a/pkg/build/fsutil/createtempfile.go +++ b/pkg/build/fsutil/createtemp.go @@ -24,3 +24,20 @@ func CreateTempFile(sfx string) (string, error) { return f.Name(), nil } + +// CreateTempDir generates a temp directory, based on the provided suffix. +// A typical generated path looks like /var/folders/abcd/abcdefg/A/1137975807/. +func CreateTempDir(sfx string) (string, error) { + var suffix string + if sfx != "" { + suffix = fmt.Sprintf("*-%s", sfx) + } else { + suffix = sfx + } + dir, err := os.MkdirTemp("", suffix) + if err != nil { + return "", err + } + + return dir, nil +} diff --git a/pkg/build/fsutil/createtempfile_test.go b/pkg/build/fsutil/createtemp_test.go similarity index 52% rename from pkg/build/fsutil/createtempfile_test.go rename to pkg/build/fsutil/createtemp_test.go index 53da94f7481..640585f4ea5 100644 --- a/pkg/build/fsutil/createtempfile_test.go +++ b/pkg/build/fsutil/createtemp_test.go @@ -26,3 +26,23 @@ func TestCreateTempFile(t *testing.T) { require.Len(t, strings.Split(pathParts[len(pathParts)-1], "-"), 2) }) } + +func TestCreateTempDir(t *testing.T) { + t.Run("empty suffix, expects pattern like: /var/folders/abcd/abcdefg/A/1137975807/", func(t *testing.T) { + filePath, err := CreateTempFile("") + require.NoError(t, err) + + pathParts := strings.Split(filePath, "/") + require.Greater(t, len(pathParts), 1) + require.Len(t, strings.Split(pathParts[len(pathParts)-1], "-"), 1) + }) + + t.Run("non-empty suffix, expects /var/folders/abcd/abcdefg/A/1137975807-foobar/", func(t *testing.T) { + filePath, err := CreateTempFile("foobar") + require.NoError(t, err) + + pathParts := strings.Split(filePath, "/") + require.Greater(t, len(pathParts), 1) + require.Len(t, strings.Split(pathParts[len(pathParts)-1], "-"), 2) + }) +} diff --git a/pkg/build/packaging/deb.go b/pkg/build/packaging/deb.go index 78158296e91..a5c01bd2ea6 100644 --- a/pkg/build/packaging/deb.go +++ b/pkg/build/packaging/deb.go @@ -122,7 +122,7 @@ func UpdateDebRepo(cfg PublishConfig, workDir string) error { repoName = "beta" } - repoRoot, err := fsutil.CreateTempFile("deb-repo") + repoRoot, err := fsutil.CreateTempDir("deb-repo") if err != nil { return err } diff --git a/pkg/build/packaging/rpm.go b/pkg/build/packaging/rpm.go index a361f28aded..24da71a185a 100644 --- a/pkg/build/packaging/rpm.go +++ b/pkg/build/packaging/rpm.go @@ -32,7 +32,7 @@ func UpdateRPMRepo(cfg PublishConfig, workDir string) error { return err } - repoRoot, err := fsutil.CreateTempFile("rpm-repo") + repoRoot, err := fsutil.CreateTempDir("rpm-repo") if err != nil { return err }