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 }