2015-10-24 18:18:24 +03:00
|
|
|
package utils
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io/ioutil"
|
|
|
|
"os"
|
2016-10-04 19:12:55 +03:00
|
|
|
"os/exec"
|
2015-11-12 03:29:32 +03:00
|
|
|
"path/filepath"
|
2016-11-18 17:49:57 +03:00
|
|
|
"strings"
|
2016-11-18 10:30:09 +03:00
|
|
|
|
|
|
|
"github.com/Sirupsen/logrus"
|
2015-10-24 18:18:24 +03:00
|
|
|
)
|
|
|
|
|
2016-10-28 05:00:58 +03:00
|
|
|
func Exists(name string) bool {
|
|
|
|
var _, err = ioutil.ReadFile(name)
|
|
|
|
return err == nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func MakeFolder(dir string) error {
|
2015-10-24 18:18:24 +03:00
|
|
|
var err = os.MkdirAll(dir, 0777)
|
|
|
|
if err != nil {
|
2016-10-28 05:00:58 +03:00
|
|
|
Log.WithError(err).Panicf("failed to create folder %v", dir)
|
2015-10-24 18:18:24 +03:00
|
|
|
}
|
2016-10-28 05:00:58 +03:00
|
|
|
return err
|
2015-10-24 18:18:24 +03:00
|
|
|
}
|
|
|
|
|
2016-10-28 05:00:58 +03:00
|
|
|
func RemoveAll(name string) error {
|
2015-10-24 18:18:24 +03:00
|
|
|
var err = os.RemoveAll(name)
|
|
|
|
if err != nil {
|
2016-10-28 05:00:58 +03:00
|
|
|
Log.WithError(err).Panicf("failed to remove %v", name)
|
2015-10-24 18:18:24 +03:00
|
|
|
}
|
2016-10-28 05:00:58 +03:00
|
|
|
return err
|
2015-10-24 18:18:24 +03:00
|
|
|
}
|
|
|
|
|
2016-10-28 05:00:58 +03:00
|
|
|
func Save(name, data string) error {
|
2015-10-24 18:18:24 +03:00
|
|
|
var err = ioutil.WriteFile(name, []byte(data), 0777)
|
|
|
|
if err != nil {
|
2016-10-28 05:00:58 +03:00
|
|
|
Log.WithError(err).Panicf("failed to save %v", name)
|
2015-10-24 18:18:24 +03:00
|
|
|
}
|
2016-10-28 05:00:58 +03:00
|
|
|
return err
|
2015-10-24 18:18:24 +03:00
|
|
|
}
|
|
|
|
|
2016-10-28 05:00:58 +03:00
|
|
|
func SaveBytes(name string, data []byte) error {
|
2016-04-28 20:43:44 +03:00
|
|
|
var err = ioutil.WriteFile(name, data, 0777)
|
|
|
|
if err != nil {
|
2016-10-28 05:00:58 +03:00
|
|
|
Log.WithError(err).Panicf("failed to save %v", name)
|
2016-04-28 20:43:44 +03:00
|
|
|
}
|
2016-10-28 05:00:58 +03:00
|
|
|
return err
|
2016-04-28 20:43:44 +03:00
|
|
|
}
|
|
|
|
|
2016-10-28 05:00:58 +03:00
|
|
|
//TODO: export error
|
2015-10-24 18:18:24 +03:00
|
|
|
func Load(name string) string {
|
2016-10-28 05:00:58 +03:00
|
|
|
var out, err = ioutil.ReadFile(name)
|
2015-10-24 18:18:24 +03:00
|
|
|
if err != nil {
|
2016-10-28 05:00:58 +03:00
|
|
|
Log.WithError(err).Errorf("failed to load %v", name)
|
2015-10-24 18:18:24 +03:00
|
|
|
}
|
2016-10-28 05:00:58 +03:00
|
|
|
return string(out)
|
2015-10-24 18:18:24 +03:00
|
|
|
}
|
2015-11-09 20:23:42 +03:00
|
|
|
|
|
|
|
func GetAbsPath(appPath string) string {
|
2016-10-28 05:00:58 +03:00
|
|
|
var path, err = filepath.Abs(appPath)
|
2015-11-09 20:23:42 +03:00
|
|
|
if err != nil {
|
2016-10-28 05:00:58 +03:00
|
|
|
Log.WithError(err).Panicf("failed to get absolute path for %v", appPath)
|
2015-11-09 20:23:42 +03:00
|
|
|
}
|
2016-10-28 05:00:58 +03:00
|
|
|
return path
|
2015-11-09 20:23:42 +03:00
|
|
|
}
|
|
|
|
|
2016-10-04 19:12:55 +03:00
|
|
|
func GoQtPkgPath(s ...string) string {
|
2016-10-23 05:14:01 +03:00
|
|
|
return filepath.Join(MustGoPath(), "src", "github.com", "therecipe", "qt", filepath.Join(s...))
|
2015-11-09 20:23:42 +03:00
|
|
|
}
|
2016-04-16 19:48:26 +03:00
|
|
|
|
2016-10-14 20:06:35 +03:00
|
|
|
func RunCmd(cmd *exec.Cmd, name string) string {
|
2016-11-18 10:30:09 +03:00
|
|
|
fields := logrus.Fields{"func": "RunCmd", "name": name, "cmd": strings.Join(cmd.Args, "")}
|
|
|
|
Log.WithFields(fields).Debug("Execute")
|
2016-10-14 20:06:35 +03:00
|
|
|
var out, err = cmd.CombinedOutput()
|
|
|
|
if err != nil {
|
2016-11-18 10:30:09 +03:00
|
|
|
Log.WithError(err).WithFields(fields).WithField("output", out).Panic("failed to run command")
|
2016-10-14 20:06:35 +03:00
|
|
|
}
|
|
|
|
return string(out)
|
|
|
|
}
|
|
|
|
|
|
|
|
func RunCmdOptional(cmd *exec.Cmd, name string) string {
|
|
|
|
var out, err = cmd.CombinedOutput()
|
|
|
|
if err != nil {
|
2016-10-30 05:53:56 +03:00
|
|
|
Log.WithError(err).Errorf("failed to %v\nerror: %s\ncmd: %v", name, out, cmd)
|
2016-10-14 20:06:35 +03:00
|
|
|
}
|
|
|
|
return string(out)
|
|
|
|
}
|