package forgepb import ( "fmt" "time" "go.wit.com/lib/gui/shell" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) // mostly just functions related to making STDOUT // more readable by us humans // also function shortcuts the do fixed limited formatting (it's like COBOL) // so reporting tables of the status of what droplets and hypervisors // are in text columns and rows that can be easily read in a terminal func standardHeader() string { return fmt.Sprintf("%-4s %-40s %s", "", "Path", "flags") } func (f *Forge) standardHeader(r *ForgeConfig) string { var flags string var readonly string if f.IsPrivate(r.GoPath) { flags += "(private) " } if f.IsFavorite(r.GoPath) { flags += "(favorite) " } if f.IsReadOnly(r.GoPath) { readonly = "" } else { readonly = "r/w" } return fmt.Sprintf("%-4s %-40s %s", readonly, r.GoPath, flags) } // print a human readable table to STDOUT func (f *Forge) ConfigPrintTable() { if f == nil { return } log.Info(standardHeader()) loop := f.Config.SortByGoPath() for loop.Scan() { r := loop.Next() log.Info(f.standardHeader(r)) } } func (f *Forge) newestAge(repo *gitpb.Repo) time.Duration { loop := repo.Tags.SortByAge() for loop.Scan() { r := loop.Next() return time.Since(r.GetAuthordate().AsTime()) } return time.Since(time.Now()) } // show information while doing golang releases func (f *Forge) StandardReleaseHeader(repo *gitpb.Repo, state string) string { lastTag := repo.GetLastTag() // tag := repo.NewestTag() // gitAge, _ := tag.GetDate() dur := f.newestAge(repo) curname := repo.GetCurrentBranchName() master := repo.GetMasterVersion() user := repo.GetUserVersion() target := repo.GetTargetVersion() header := fmt.Sprintf("%-35s %5s %-10s %-10s %-10s %-20s %-20s %-15s", repo.GetGoPath(), shell.FormatDuration(dur), curname, lastTag, target, master, user, 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") }