From 3408d9434b9f1316f4391a335bffc30f8a09bad4 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 18 Dec 2024 17:59:01 -0600 Subject: purge old code --- old.go | 172 ------------------------------------------------------------- posix.go | 95 ++++++++++++++++++++++++++++++++++ structs.go | 9 +--- 3 files changed, 97 insertions(+), 179 deletions(-) delete mode 100644 old.go create mode 100644 posix.go diff --git a/old.go b/old.go deleted file mode 100644 index b4133fd..0000000 --- a/old.go +++ /dev/null @@ -1,172 +0,0 @@ -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 -} diff --git a/posix.go b/posix.go new file mode 100644 index 0000000..38a1c50 --- /dev/null +++ b/posix.go @@ -0,0 +1,95 @@ +package shell + +// old code and probably junk + +import ( + "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 +} + +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 +} + +// return true if the filename exists (cross-platform) +func IsDir(dirname string) bool { + info, err := os.Stat(Path(dirname)) + if os.IsNotExist(err) { + return false + } + return info.IsDir() +} diff --git a/structs.go b/structs.go index 701d15b..8a2962d 100644 --- a/structs.go +++ b/structs.go @@ -1,12 +1,6 @@ package shell -import ( - "bufio" - "bytes" - "io" - "os/exec" -) - +/* var FileMap map[string]*File var readBufferSize int @@ -54,3 +48,4 @@ func New() *OldShell { return &tmp } +*/ -- cgit v1.2.3