submit-patchset/unix.go

137 lines
2.9 KiB
Go

package main
import (
"os"
"os/exec"
"time"
"strings"
"errors"
"go.wit.com/log"
"go.wit.com/lib/gui/repostatus"
)
var repopath string = "/home/jcarr/"
// if dryRun == true, then it just prints out the values
// but doesn't do anything
func goMake(dryRun string) bool {
var workingPath string = "go/src"
for _, line := range me.script {
if len(line) == 0 {
continue
}
if line[0] == "cd" {
switch len(line) {
case 1:
log.Verbose("do cmdPwd() to go root", repopath+"go/src")
workingPath = ""
case 2:
log.Verbose("do cmdPwd() here", line)
workingPath = line[1]
default:
log.Warn("bad cd", line)
return false
}
continue
}
cmd := line[0]
s := strings.Join(line[1:], " ")
path := repopath + workingPath
log.Warn("NEED TO RUN path =", path, "cmd =", cmd, s)
if dryRun == "--dry-run" {
continue
}
if dryRun == "--doit" {
log.Warn("Actually RUN path =", path, "cmd =", cmd, s)
err, b, output := repostatus.RunCmd(path, line)
if err != nil {
log.Info("ABEND EXECUTION")
log.Info("error =", err)
log.Info("b =", b)
log.Info("output =", output)
return false
}
// log.Warn("output was =", output)
continue
}
log.Warn("don't know what to do. dryRun ==", dryRun)
return false
}
return true
}
func setGitCommands() {
var tmp []string
// convert to displayable to the user text
for _, line := range me.script {
s := strings.Join(line, " ")
log.Warn("s =", s)
tmp = append(tmp, s)
}
cmds.Set(strings.Join(tmp, "\n"))
}
/*
func runCommandsOld() bool {
for _, line := range me.script {
s := strings.Join(line, " ")
log.Warn("NEED TO RUN:", s)
err, b, output := repostatus.RunCmd(repopath, line)
if err != nil {
log.Warn("ABEND EXECUTION")
log.Warn("error =", err)
log.Warn("output =", output)
return false
}
log.Warn("Returned with b =", b)
log.Warn("output was =", output)
log.Warn("RUN DONE")
}
return true
}
*/
func RunCmdNew(workingpath string, parts []string) (error, bool, string) {
time.Sleep(10 * time.Second)
return RunCmd(workingpath, parts)
}
func RunCmd(workingpath string, parts []string) (error, bool, string) {
if len(parts) == 0 {
log.Warn("command line was empty")
return errors.New("empty"), false, ""
}
if parts[0] == "" {
log.Warn("command line was empty")
return errors.New("empty"), false, ""
}
thing := parts[0]
parts = parts[1:]
log.Warn("working path =", workingpath, "thing =", thing, "cmdline =", parts)
if thing == "pwd" {
os.Exit(-1)
}
// Create the command
cmd := exec.Command(thing, parts...)
// Set the working directory
cmd.Dir = workingpath
// Execute the command
output, err := cmd.CombinedOutput()
if err != nil {
log.Error(err)
log.Warn("output was", string(output))
log.Warn("cmd exited with error", err)
return err, false, string(output)
}
tmp := string(output)
tmp = strings.TrimSpace(tmp)
// Print the output
return nil, true, tmp
}