41 lines
874 B
Go
41 lines
874 B
Go
|
// 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
|
||
|
}
|