package gitpb import ( "os" "path/filepath" "strings" "github.com/go-cmd/cmd" "go.wit.com/lib/gui/shell" "go.wit.com/log" ) // execute something with the working directory // set to the FullPath func (repo *Repo) Run(cmd []string) cmd.Status { result := shell.PathRun(repo.FullPath, cmd) output := strings.Join(result.Stdout, "\n") if result.Error != nil { log.Warn("cmd:", cmd) log.Warn("ouptput:", output) log.Warn("failed with error:", result.Error) } return result } func (repo *Repo) RunQuiet(cmd []string) cmd.Status { result := shell.PathRunQuiet(repo.FullPath, cmd) return result } func (repo *Repo) RunEcho(cmd []string) cmd.Status { result := shell.PathRunQuiet(repo.FullPath, cmd) log.Info("cmd:", repo.FullPath, cmd) log.Warn("cmd.Exit:", result.Exit, "cmd.Error:", result.Error) for _, line := range result.Stdout { log.Info("STDOUT:", line) } for _, line := range result.Stderr { log.Info("STDERR:", line) } return result } func (repo *Repo) RunRealtime(cmd []string) cmd.Status { return shell.PathRunRealtime(repo.GetFullPath(), cmd) } // for now, even check cmd.Exit func (repo *Repo) strictRun(cmd []string) (bool, error) { result := repo.RunQuiet(cmd) if result.Error != nil { log.Warn("go mod init failed err:", result.Error) return false, result.Error } if result.Exit != 0 { log.Warn("go mod init exit =", result.Exit) return false, result.Error } return true, nil } func (repo *Repo) Exists(filename string) bool { if repo == nil { return false } testf := filepath.Join(repo.FullPath, filename) _, err := os.Stat(testf) if err != nil { return false } return true } func (repo *Repo) IsValid() bool { if !repo.IsDirectory() { return false } return true } func (repo *Repo) IsDirectory() bool { info, err := os.Stat(repo.FullPath) if err != nil { return false } return info.IsDir() }