package repolist // make human readable output import ( "fmt" "net/http" "time" "go.wit.com/lib/gui/shell" "go.wit.com/log" ) // makes a human readable thing for standard out. func (r *RepoRow) StandardHeader() string { lastTag := r.LastTag() tag := r.Status.NewestTag() gitAge, _ := tag.GetDate() dur := time.Since(gitAge) master := r.Status.GetMasterVersion() devel := r.Status.GetDevelVersion() user := r.Status.GetUserVersion() header := fmt.Sprintf("%-35s %5s %-20s %-20s %-20s %-20s %-15s", r.Name(), shell.FormatDuration(dur), lastTag, master, devel, user, r.State()) return header } // send stuff to the socket and stdout func msg(w http.ResponseWriter, s string) { log.Info(s) fmt.Fprintln(w, s) } func (v *RepoList) PrintReport(w http.ResponseWriter, readonly string, onlydirty string, perfect string) { var count int header := fmt.Sprintf("%-35s %5s %-20s %-20s %-20s %-20s %-15s", "REPO", "AGE", "LAST", "MASTER", "DEVEL", "USER", "STATE") msg(w, header) loop := v.ReposSortByName() for loop.Scan() { repo := loop.Repo() count += 1 header := repo.StandardHeader() if onlydirty == "true" { if repo.CheckDirty() { msg(w, header+"") } continue } if repo.ReadOnly() { if readonly == "true" { msg(w, header+"readonly") } continue } if repo.State() == "PERFECT" { if perfect == "false" { continue } } if repo.State() != "merge to main" { msg(w, header+"") continue } if repo.CheckDirty() { msg(w, header+"") continue } msg(w, header+"") } msg(w, 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 %-10s %-20s %-15s", r.Name(), shell.FormatDuration(dur), curname, lastTag, master, target, user, r.State()) return header } func (v *RepoList) PrintReleaseReport(w http.ResponseWriter, readonly string, perfect string) { var count int header := fmt.Sprintf("%-35s %5s %-10s %-10s %-10s %-10s %-20s %-15s", "REPO", "AGE", "CUR BR", "LAST", "MASTER", "TARGET", "USER", "STATE") msg(w, header) 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() msg(w, header) } msg(w, fmt.Sprintf("total repo count = %d", count)) }