137 lines
2.9 KiB
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
|
|
}
|