github.com/Hashicorp/terraform@v0.11.12-beta1/helper/pathorcontents/read.go (about) 1 // Helpers for dealing with file paths and their contents 2 package pathorcontents 3 4 import ( 5 "io/ioutil" 6 "os" 7 8 "github.com/mitchellh/go-homedir" 9 ) 10 11 // If the argument is a path, Read loads it and returns the contents, 12 // otherwise the argument is assumed to be the desired contents and is simply 13 // returned. 14 // 15 // The boolean second return value can be called `wasPath` - it indicates if a 16 // path was detected and a file loaded. 17 func Read(poc string) (string, bool, error) { 18 if len(poc) == 0 { 19 return poc, false, nil 20 } 21 22 path := poc 23 if path[0] == '~' { 24 var err error 25 path, err = homedir.Expand(path) 26 if err != nil { 27 return path, true, err 28 } 29 } 30 31 if _, err := os.Stat(path); err == nil { 32 contents, err := ioutil.ReadFile(path) 33 if err != nil { 34 return string(contents), true, err 35 } 36 return string(contents), true, nil 37 } 38 39 return poc, false, nil 40 }