50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
package command
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
func mustString(s string, e error) string {
|
|
if e != nil {
|
|
panic(e)
|
|
}
|
|
return s
|
|
}
|
|
|
|
func createFiles(dir string, content map[string]string) {
|
|
for relPath, content := range content {
|
|
contentPath := filepath.Join(dir, relPath)
|
|
if err := os.MkdirAll(filepath.Dir(contentPath), 0777); err != nil {
|
|
panic(err)
|
|
}
|
|
if err := ioutil.WriteFile(contentPath, []byte(content), 0666); err != nil {
|
|
panic(err)
|
|
}
|
|
log.Printf("created tmp file: %s", contentPath)
|
|
}
|
|
}
|
|
|
|
type configDirSingleton struct {
|
|
dirs map[string]string
|
|
}
|
|
|
|
// when you call dir twice with the same key, the result should be the same
|
|
func (c *configDirSingleton) dir(key string) string {
|
|
if v, exists := c.dirs[key]; exists {
|
|
return v
|
|
}
|
|
c.dirs[key] = mustString(ioutil.TempDir("", "pkr-test-cfg-dir-"+key))
|
|
return c.dirs[key]
|
|
}
|
|
|
|
// fileExists returns true if the filename is found
|
|
func fileExists(filename string) bool {
|
|
if _, err := os.Stat(filename); err == nil {
|
|
return true
|
|
}
|
|
return false
|
|
}
|