From 0f2933adb6f6922dfeab78a95371a444ec8918ab Mon Sep 17 00:00:00 2001 From: Matthew Patton Date: Wed, 31 Oct 2018 00:54:35 -0400 Subject: [PATCH] use mktemp() equivalent to create temporary directory --- packer/config_file.go | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/packer/config_file.go b/packer/config_file.go index 0b38e0ec2..63e195c43 100644 --- a/packer/config_file.go +++ b/packer/config_file.go @@ -1,8 +1,9 @@ package packer import ( + "io/ioutil" + "log" "os" - "path/filepath" ) // ConfigFile returns the default path to the configuration file. On @@ -20,25 +21,20 @@ func ConfigDir() (string, error) { // ConfigTmpDir returns the configuration tmp directory for Packer func ConfigTmpDir() (string, error) { - if tmpdir := os.Getenv("PACKER_TMP_DIR"); tmpdir == "" { - for _, e := range []string{"TEMP", "TMP", "LOCALAPPDATA"} { - if tmpdir, found := os.LookupEnv(e); found { - td := filepath.Join(tmpdir, "packer") - break - } + var tmpdir, td, cd string + + cd, err := ConfigDir() + for _, tmpdir := range []string{os.Getenv("PACKER_TMP_DIR"), os.TempDir(), cd} { + if tmpdir != "" { + break } } - if tmpdir == "" { - td := filepath.Join(ConfigDir(), "tmp") - } - _, err := os.Stat(td) - if os.IsNotExist(err) { - if err = os.MkdirAll(td, 0700); err != nil { - return "", err - } - } else if err != nil { - return "", err + if td, err := ioutil.TempDir(tmpdir, "packer"); err != nil { + log.Fatal(err) } + + defer os.RemoveAll(td) + return td, nil }