summaryrefslogtreecommitdiff
path: root/old.go
diff options
context:
space:
mode:
Diffstat (limited to 'old.go')
-rw-r--r--old.go172
1 files changed, 172 insertions, 0 deletions
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
+}