diff --git a/common.go b/common.go index 6c8e97e..dedbd04 100644 --- a/common.go +++ b/common.go @@ -6,6 +6,7 @@ import ( "path/filepath" "sort" + "github.com/go-cmd/cmd" "go.wit.com/gui" "go.wit.com/lib/gui/repostatus" "go.wit.com/log" @@ -110,8 +111,8 @@ func (r *RepoRow) IsPerfect() bool { return false } -func (r *RepoRow) RunCmd(cmd []string) (error, string) { - return r.Status.RunCmd(cmd) +func (r *RepoRow) Run(cmd []string) cmd.Status { + return r.Status.Run(cmd) } func (r *RepoRow) AllTags() []*repostatus.Tag { diff --git a/getPatches.go b/getPatches.go index 44f662b..aaaa472 100644 --- a/getPatches.go +++ b/getPatches.go @@ -28,15 +28,15 @@ func (repo *RepoRow) GetPatches(oldname string, newname string) (int, []*Patch) // log.Info("repo userv, develv", userv, develv) gitcmd := []string{"git", "log", "--oneline", oldname + ".." + newname} log.Info("Run:", gitcmd) - err, output := repo.Status.RunCmd(gitcmd) - if err != nil { - log.Info("git failed ", repo.GoPath(), "err =", err) + r := repo.Status.Run(gitcmd) + if r.Error != nil { + log.Info("git failed ", repo.GoPath(), "err =", r.Error) return 0, nil } // patches = strings.Split(output, "\n") - log.Info("Run:", output) - for _, line := range strings.Split(output, "\n") { + log.Info("Run:", r.Stdout) + for _, line := range r.Stdout { line = strings.TrimSpace(line) if line == "" { continue @@ -98,9 +98,9 @@ func (r *RepoList) MakePatchset(setdir string) bool { // git format-patch branch1..branch2 gitcmd := []string{"git", "format-patch", "-o", repodir, develn + ".." + usern} log.Info("Run:", gitcmd) - err, output := repo.Status.RunCmd(gitcmd) - log.Info("output =", output) - if err == nil { + r := repo.Status.Run(gitcmd) + log.Info("output =", r.Stdout) + if r.Error == nil { log.Info("patches made okay for:", repo.GoPath()) continue } diff --git a/human.go b/human.go index 7954c42..3cc02d6 100644 --- a/human.go +++ b/human.go @@ -23,9 +23,9 @@ func (r *RepoRow) StandardHeader() string { user := r.Status.GetUserVersion() header := fmt.Sprintf("%-35s %5s %-10s %-10s %-20s %-20s %-20s %-15s", - r.Name(), shell.FormatDuration(dur), + r.Name(), shell.FormatDuration(dur), lastTag, target, - master, devel, user, + master, devel, user, r.State()) return header } @@ -51,14 +51,14 @@ func (v *RepoList) PrintReport(readonly string, onlydirty string, perfect string header := repo.StandardHeader() if onlydirty == "true" { if repo.CheckDirty() { - log.Info(header+"") + log.Info(header + "") } continue } if repo.ReadOnly() { if readonly == "true" { - log.Info(header+"readonly") + log.Info(header + "readonly") } continue } @@ -68,14 +68,14 @@ func (v *RepoList) PrintReport(readonly string, onlydirty string, perfect string } } if repo.State() != "merge to main" { - log.Info(header+"") + log.Info(header + "") continue } if repo.CheckDirty() { - log.Info(header+"") + log.Info(header + "") continue } - log.Info(header+"") + log.Info(header + "") } log.Info(fmt.Sprintf("EVERYTHING WORKED repo count = %d", count)) } diff --git a/interface.go b/interface.go index a84ea3b..3189a5b 100644 --- a/interface.go +++ b/interface.go @@ -6,6 +6,7 @@ import ( "context" "errors" "fmt" + "go.wit.com/lib/protobuf/virtbuf" ) @@ -45,10 +46,10 @@ func (m *ViewRepoManager) Start(ctx context.Context, cluster *virtbuf.Cluster) e return errors.New("cluster cannot be nil") } /* - err := m.client.StartRepo(ctx, cluster.Id) - if err != nil { - return fmt.Errorf("error starting cluster %q: %w", cluster.Id, err) - } + err := m.client.StartRepo(ctx, cluster.Id) + if err != nil { + return fmt.Errorf("error starting cluster %q: %w", cluster.Id, err) + } */ return nil } @@ -59,10 +60,10 @@ func (m *ViewRepoManager) Stop(ctx context.Context, cluster *virtbuf.Cluster) er return errors.New("cluster cannot be nil") } /* - err := m.client.StopRepo(ctx, cluster.Id) - if err != nil { - return fmt.Errorf("error stopping cluster %q: %w", cluster.Id, err) - } + err := m.client.StopRepo(ctx, cluster.Id) + if err != nil { + return fmt.Errorf("error stopping cluster %q: %w", cluster.Id, err) + } */ return nil } @@ -70,11 +71,11 @@ func (m *ViewRepoManager) Stop(ctx context.Context, cluster *virtbuf.Cluster) er // List retrieves all available clusters. func (m *ViewRepoManager) List(ctx context.Context) ([]*virtbuf.Cluster, error) { /* - clusters, err := m.client.ListRepos(ctx) - if err != nil { - return nil, fmt.Errorf("error listing clusters: %w", err) - } - return clusters, nil + clusters, err := m.client.ListRepos(ctx) + if err != nil { + return nil, fmt.Errorf("error listing clusters: %w", err) + } + return clusters, nil */ return nil, errors.New("List not done yet") } @@ -85,10 +86,10 @@ func (m *ViewRepoManager) Status(ctx context.Context, cluster *virtbuf.Cluster) return "", errors.New("cluster cannot be nil") } /* - status, err := m.client.GetRepoStatus(ctx, cluster.Id) - if err != nil { - return "", fmt.Errorf("error getting status of cluster %q: %w", cluster.Id, err) - } + status, err := m.client.GetRepoStatus(ctx, cluster.Id) + if err != nil { + return "", fmt.Errorf("error getting status of cluster %q: %w", cluster.Id, err) + } */ return "", nil } diff --git a/newRepo.go b/newRepo.go index 6fc3f77..e821dc0 100644 --- a/newRepo.go +++ b/newRepo.go @@ -138,14 +138,14 @@ func (r *RepoList) makeAutotypistView(newRepo *RepoRow) { } r.reposbox.Disable() // restore anything staged so everything can be reviewed - newRepo.Status.RunCmd([]string{"git", "restore", "--staged", "."}) + newRepo.Status.Run([]string{"git", "restore", "--staged", "."}) newRepo.Status.XtermWait("git diff") newRepo.Status.XtermWait("git add --all") newRepo.Status.XtermWait("git commit -a") newRepo.Status.XtermWait("git push") if newRepo.Status.CheckDirty() { // commit was not done, restore diff - newRepo.Status.RunCmd([]string{"git", "restore", "--staged", "."}) + newRepo.Status.Run([]string{"git", "restore", "--staged", "."}) } else { newRepo.NewScan() } diff --git a/scanIterator.go b/scanIterator.go index c0397eb..af1c28e 100644 --- a/scanIterator.go +++ b/scanIterator.go @@ -106,6 +106,8 @@ func (r *RepoList) selectRepoAll() []*RepoRow { return repoPointers } +// this sort doesn't really work. I think it forgets to sort the last two +// todo: sort this out. literally // SelectRepoPointers safely returns a slice of pointers to Repo records. func (r *RepoList) selectUnmergedRepos() []*RepoRow { r.RLock() diff --git a/structs.go b/structs.go index 128426d..2531e96 100644 --- a/structs.go +++ b/structs.go @@ -38,7 +38,7 @@ type RepoList struct { hideFunction func(*RepoRow) duration *gui.Node - rows []*RepoRow + rows []*RepoRow } type RepoRow struct { diff --git a/viewTempWindow.go b/viewTempWindow.go index 402393c..ffb99e5 100644 --- a/viewTempWindow.go +++ b/viewTempWindow.go @@ -76,14 +76,14 @@ func (r *RepoList) ShowRepo(repo *RepoRow) error { return } // restore anything staged so everything can be reviewed - newRow.Status.RunCmd([]string{"git", "restore", "--staged", "."}) + newRow.Status.Run([]string{"git", "restore", "--staged", "."}) newRow.Status.XtermWait("git diff") newRow.Status.XtermWait("git add --all") newRow.Status.XtermWait("git commit -a") newRow.Status.XtermWait("git push") if newRow.Status.CheckDirty() { // commit was not done, restore diff - newRow.Status.RunCmd([]string{"git", "restore", "--staged", "."}) + newRow.Status.Run([]string{"git", "restore", "--staged", "."}) } else { newRow.NewScan() }