69 lines
1.1 KiB
Go
69 lines
1.1 KiB
Go
|
package common
|
||
|
|
||
|
import (
|
||
|
"io/ioutil"
|
||
|
"os"
|
||
|
"os/user"
|
||
|
"path"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
func ExpandHomePath(p string) (path string) {
|
||
|
path = p
|
||
|
|
||
|
// Check in case of paths like "/something/~/something/"
|
||
|
if len(path) > 1 && path[:2] == "~/" {
|
||
|
usr, _ := user.Current()
|
||
|
dir := usr.HomeDir
|
||
|
|
||
|
path = strings.Replace(p, "~", dir, 1)
|
||
|
}
|
||
|
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func FileExist(filePath string) bool {
|
||
|
_, err := os.Stat(filePath)
|
||
|
if err != nil && os.IsNotExist(err) {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
func ReadAllFile(filePath string) (string, error) {
|
||
|
file, err := os.Open(filePath)
|
||
|
if err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
data, err := ioutil.ReadAll(file)
|
||
|
if err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
return string(data), nil
|
||
|
}
|
||
|
|
||
|
func WriteFile(filePath string, content []byte) error {
|
||
|
fh, err := os.OpenFile(filePath, os.O_TRUNC|os.O_RDWR|os.O_CREATE, os.ModePerm)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
defer fh.Close()
|
||
|
|
||
|
_, err = fh.Write(content)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func AbsolutePath(Datadir string, filename string) string {
|
||
|
if path.IsAbs(filename) {
|
||
|
return filename
|
||
|
}
|
||
|
return path.Join(Datadir, filename)
|
||
|
}
|