ktgo/pkg/lib/lib.go
2024-02-19 16:53:07 +03:00

90 строки
1,3 КиБ
Go

//go:build !js || js
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 AppendToFile(path, data string) error {
f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
return err
}
_, err = f.Write([]byte(data))
f.Close()
return nil
}
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 "-"
}
func BoolToInt(in bool) int {
if in {
return 1
}
return 0
}