// Helpers for dealing with file paths and their contents package pathorcontents import ( "io/ioutil" "os" "github.com/mitchellh/go-homedir" ) // If the argument is a path, Read loads it and returns the contents, // otherwise the argument is assumed to be the desired contents and is simply // returned. // // The boolean second return value can be called `wasPath` - it indicates if a // path was detected and a file loaded. func Read(poc string) (string, bool, error) { if len(poc) == 0 { return poc, false, nil } path := poc if path[0] == '~' { var err error path, err = homedir.Expand(path) if err != nil { return path, true, err } } if _, err := os.Stat(path); err == nil { contents, err := ioutil.ReadFile(path) if err != nil { return string(contents), true, err } return string(contents), true, nil } return poc, false, nil }