package repolist // make human readable output import ( "fmt" "time" "go.wit.com/lib/gui/shell" "go.wit.com/log" ) // makes a human readable thing for standard out. // https://pkg.go.dev/fmt has good references for Sprintf func (r *RepoRow) StandardHeader() string { lastTag := r.LastTag() tag := r.Status.NewestTag() gitAge, _ := tag.GetDate() dur := time.Since(gitAge) target := r.Status.GetTargetVersion() master := r.Status.GetMasterVersion() devel := r.Status.GetDevelVersion() user := r.Status.GetUserVersion() header := fmt.Sprintf("%-35s %5s %-10s %-10s %-20s %-20s %-20s %-15s", r.Name(), shell.FormatDuration(dur), lastTag, target, master, devel, user, r.State()) return header } func ReportHeader() string { return fmt.Sprintf("%-35s %5s %-10s %-10s %-20s %-20s %-20s %-15s", "REPO", "AGE", "LAST", "TARGET", "MASTER", "DEVEL", "USER", "STATE") } func (v *RepoList) PrintReport(readonly string, onlydirty string, perfect string) { var count int log.Info(ReportHeader()) loop := v.ReposSortByName() for loop.Scan() { repo := loop.Repo() count += 1 header := repo.StandardHeader() if onlydirty == "true" { if repo.CheckDirty() { log.Info(header + "") } continue } if repo.ReadOnly() { if readonly == "true" { log.Info(header + "readonly") } continue } if repo.State() == "PERFECT" { if perfect == "false" { continue } } if repo.State() != "merge to main" { log.Info(header + "") continue } if repo.CheckDirty() { log.Info(header + "") continue } log.Info(header + "") } log.Info(fmt.Sprintf("EVERYTHING WORKED repo count = %d", count)) } // makes a human readable thing for standard out. func (r *RepoRow) StandardReleaseHeader() string { lastTag := r.LastTag() tag := r.Status.NewestTag() gitAge, _ := tag.GetDate() dur := time.Since(gitAge) curname := r.Status.GetCurrentBranchName() master := r.Status.GetMasterVersion() user := r.Status.GetUserVersion() target := r.Status.GetTargetVersion() header := fmt.Sprintf("%-35s %5s %-10s %-10s %-10s %-20s %-20s %-15s", r.Name(), shell.FormatDuration(dur), curname, lastTag, target, master, user, r.State()) return header } func ReleaseReportHeader() string { return fmt.Sprintf("%-35s %5s %-10s %-10s %-10s %-20s %-20s %-15s", "REPO", "AGE", "CUR BR", "LAST", "TARGET", "MASTER", "USER", "STATE") } func (v *RepoList) PrintReleaseReport(readonly string, perfect string) { var count int log.Info(ReleaseReportHeader()) loop := v.ReposSortByName() for loop.Scan() { repo := loop.Repo() if repo.ReadOnly() && (readonly == "true") { continue } if (repo.State() == "PERFECT") && (perfect == "true") { continue } if repo.Status.IsReleased() { continue } count += 1 header := repo.StandardReleaseHeader() log.Info(header) } log.Info(fmt.Sprintf("total repo count = %d", count)) }