schet/pkg/lib/lib.go

72 строки
1 КиБ
Go

package lib
import (
"io"
"log"
"os"
"os/exec"
)
func Bash(cmd string) error {
c := exec.Command("/bin/bash", "-c", cmd)
c.Stderr = os.Stderr
c.Stdout = os.Stdout
c.Stdin = os.Stdin
return c.Run()
}
func BashV(cmd string) error {
log.Println("cmd:", cmd)
return Bash(cmd)
}
func BashOutput(cmd string) (string, error) {
out, err := exec.Command("/bin/bash", "-c", cmd).CombinedOutput()
return string(out), err
}
func ReadFile(path string) (string, error) {
ret, err := os.ReadFile(path)
if err != nil {
return "", err
}
return string(ret), nil
}
func WriteFile(path, data string) error {
return os.WriteFile(path, []byte(data), 0644)
}
func CopyFile(src, dst string) (err error) {
in, err := os.Open(src)
if err != nil {
return
}
defer in.Close()
out, err := os.Create(dst)
if err != nil {
return
}
defer func() {
cerr := out.Close()
if err == nil {
err = cerr
}
}()
if _, err = io.Copy(out, in); err != nil {
return
}
err = out.Sync()
return
}
func Plus(in bool) string {
if in {
return "+"
}
return "-"
}