From d887da32f20feee8bfbebf7b2db63f1a42fd7176 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Fri, 8 Nov 2024 06:43:04 -0600 Subject: use go-cmd/cmd and purge old code --- old.go | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 old.go (limited to 'old.go') diff --git a/old.go b/old.go new file mode 100644 index 0000000..b4133fd --- /dev/null +++ b/old.go @@ -0,0 +1,172 @@ +package shell + +// old code and probably junk + +import ( + "io/ioutil" + "net/http" + "os" + "os/exec" + + "go.wit.com/log" +) + +// TODO: look at https://github.com/go-cmd/cmd/issues/20 +// use go-cmd instead here? + +var callback func(interface{}, int) + +var shellStdout *os.File +var shellStderr *os.File + +var spewOn bool = false +var quiet bool = false + +// var msecDelay int = 20 // number of milliseconds to delay between reads with no data + +// var bytesBuffer bytes.Buffer +// var bytesSplice []byte + +func handleError(c interface{}, ret int) { + log.Log(INFO, "shell.Run() Returned", ret) + if callback != nil { + callback(c, ret) + } +} + +func init() { + callback = nil +} + +func InitCallback(f func(interface{}, int)) { + callback = f +} + +// this means it won't copy all the output to STDOUT +func Quiet(q bool) { + quiet = q +} + +/* +func Script(cmds string) int { + // split on new lines (while we are at it, handle stupid windows text files + lines := strings.Split(strings.Replace(cmds, "\r\n", "\n", -1), "\n") + + for _, line := range lines { + line = Chomp(line) // this is like 'chomp' in perl + log.Log(INFO, "LINE:", line) + time.Sleep(1) + RunString(line) + } + return 0 +} +*/ + +func Unlink(filename string) bool { + if err := os.Remove(filename); err != nil { + return Exists(filename) + } else { + return Exists(filename) + } +} + +// run interactively. output from the cmd is in real time +// shows all the output. For example, 'ping -n localhost' +// shows the output like you would expect to see +func RunSimple(cmd []string) error { + log.Log(INFO, "NewRun() ", cmd) + + return PathRunSimple("", cmd) +} + +func PathRunSimple(workingpath string, cmd []string) error { + log.Log(INFO, "NewRun() ", cmd) + + process := exec.Command(cmd[0], cmd[1:len(cmd)]...) + // Set the working directory + process.Dir = workingpath + process.Stderr = os.Stderr + process.Stdin = os.Stdin + process.Stdout = os.Stdout + process.Start() + err := process.Wait() + if err != nil { + log.Log(INFO, "shell.Exec() err =", err) + } + return err +} + +// return true if the filename exists (cross-platform) + +// return true if the filename exists (cross-platform) +func Exists(filename string) bool { + _, err := os.Stat(Path(filename)) + if os.IsNotExist(err) { + return false + } + return true +} + +// makes the directory +func Mkdir(dir string) bool { + if Dir(dir) { + // already a dir + return true + } + if Exists(dir) { + // something else is there + return false + } + Run([]string{"mkdir", "-p", dir}) + return true +} + +func IsDir(dirname string) bool { + return Dir(dirname) +} + +// return true if the filename exists (cross-platform) +func Dir(dirname string) bool { + info, err := os.Stat(Path(dirname)) + if os.IsNotExist(err) { + return false + } + return info.IsDir() +} + +// Cat a file into a string +func Cat(filename string) string { + buffer, err := ioutil.ReadFile(Path(filename)) + // log.Log(INFO, "buffer =", string(buffer)) + if err != nil { + return "" + } + return string(buffer) +} + +func RunPathHttpOut(path string, cmd []string, w http.ResponseWriter, r *http.Request) error { + log.Warn("Run(): ", cmd) + + process := exec.Command(cmd[0], cmd[1:len(cmd)]...) + process.Dir = path + process.Stderr = os.Stderr + process.Stdin = r.Body + process.Stdout = w + process.Start() + err := process.Wait() + log.Warn("shell.Exec() err =", err) + return err +} + +func RunHttpOut(cmd []string, w http.ResponseWriter, r *http.Request) error { + log.Warn("NewRun() ", cmd) + + process := exec.Command(cmd[0], cmd[1:len(cmd)]...) + process.Stderr = os.Stderr + process.Stdin = r.Body + process.Stdout = w + process.Start() + err := process.Wait() + log.Warn("shell.Exec() err =", err) + return err +} -- cgit v1.2.3