diff options
| author | Paul Buetow <paul@buetow.org> | 2025-02-05 01:11:05 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-02-05 01:11:05 +0200 |
| commit | bd97ed65bb98efbf73bda041983b83d6c434a2c8 (patch) | |
| tree | 4073ecbd3de00e864c6ee58effd168e59fcc1e67 /internal | |
| parent | 24778551d8e5b0b47a06494dd28a66a71dfb47f0 (diff) | |
refactor
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/main.go | 12 | ||||
| -rw-r--r-- | internal/schedule/stats.go | 29 | ||||
| -rw-r--r-- | internal/table/table.go | 37 |
3 files changed, 40 insertions, 38 deletions
diff --git a/internal/main.go b/internal/main.go index 561c136..842f010 100644 --- a/internal/main.go +++ b/internal/main.go @@ -35,13 +35,11 @@ func Main(composeEntryDefault bool) { flag.Parse() if *dev { - tab := table.New("foo", "bar", "baz", 3). - Add("hans", "wurst", "klo", 3.3). - Add("Klopapier", "Hans", "Wurst", 7) - - if err := tab.Render(); err != nil { - log.Fatal(err) - } + table.New(). + Header("foo", "bar", "baz", 3). + Row("hans", "wurst", "klo", 3.3). + Row("Klopapier", "Hans", "Wurst", 7). + MustRender() os.Exit(0) } diff --git a/internal/schedule/stats.go b/internal/schedule/stats.go index ecc840d..eaddd7d 100644 --- a/internal/schedule/stats.go +++ b/internal/schedule/stats.go @@ -59,12 +59,6 @@ func newStats(dir string, lookback time.Duration, target, pauseDays, maxQueuedDa return s, nil } -// func (s stats) String() string { -// return fmt.Sprintf("posted:%d,queued:%d,sinceDays:%v,postsPerDayTarget:%v>?%v,lastPostDaysAgo:%v", -// s.posted, s.queued, s.sinceDays, s.postsPerDay, s.postsPerDayTarget, s.lastPostDaysAgo, -// ) -// } - func (s stats) targetHit() bool { if s.postsPerDay >= s.postsPerDayTarget { colour.Infoln("Posts per day target hit", s.postsPerDay, "is greater or equal than", s.postsPerDayTarget) @@ -154,20 +148,17 @@ func (s *stats) gatherQueuedStats(dir string) error { } func (s stats) RenderTable(platform platforms.Platform) { - err := table.New(platform.String(), "value", "Lifetime stats", "value"). + table.New(). WithColor(colour.Info2Col). - Add("Since (days)", s.sinceDays, "Total since (days)", s.totalSinceDays). - Add("#Posted entries", s.posted, "#Total posted entries", s.totalPosted). - Add("#Queued entries", s.queued, "", ""). - Add("Enough for (days)", s.queuedForDays, "", ""). - Add("Last post (days ago)", s.lastPostDaysAgo, "Pause days", s.pauseDays). - Add("Posts per day", s.postsPerDay, "Total posts per day", s.totalPostsPerDay). - Add("Posts per day target", s.postsPerDayTarget, "", ""). - Render() - - if err != nil { - panic(err) - } + Header(platform.String(), "value", "Lifetime stats", "value"). + Row("Since (days)", s.sinceDays, "Total since (days)", s.totalSinceDays). + Row("#Posted entries", s.posted, "#Total posted entries", s.totalPosted). + Row("#Queued entries", s.queued, "", ""). + Row("Enough for (days)", s.queuedForDays, "", ""). + Row("Last post (days ago)", s.lastPostDaysAgo, "Pause days", s.pauseDays). + Row("Posts per day", s.postsPerDay, "Total posts per day", s.totalPostsPerDay). + Row("Posts per day target", s.postsPerDayTarget, "", ""). + MustRender() } func pastTime(duration time.Duration) time.Time { diff --git a/internal/table/table.go b/internal/table/table.go index 7ebeb1b..5147b9c 100644 --- a/internal/table/table.go +++ b/internal/table/table.go @@ -17,12 +17,18 @@ type Table struct { err error } -func New(args ...any) *Table { - t := Table{ - headers: make([]string, 0, len(args)), - lengths: make([]int, 0, len(args)), - sprintf: fmt.Sprintf, - } +func New() *Table { + return &Table{sprintf: fmt.Sprintf} +} + +func (t *Table) WithColor(col *color.Color) *Table { + t.sprintf = col.Sprintf + return t +} + +func (t *Table) Header(args ...any) *Table { + t.headers = make([]string, 0, len(args)) + t.lengths = make([]int, 0, len(args)) for _, arg := range args { strVal := val(arg) @@ -30,15 +36,10 @@ func New(args ...any) *Table { t.lengths = append(t.lengths, len(strVal)) } - return &t -} - -func (t *Table) WithColor(col *color.Color) *Table { - t.sprintf = col.Sprintf return t } -func (t *Table) Add(args ...any) *Table { +func (t *Table) Row(args ...any) *Table { if len(args) != len(t.headers) { t.err = fmt.Errorf("Table row (%v) not same length as table headers (%v)", args, t.headers) } @@ -59,7 +60,19 @@ func (t *Table) Add(args ...any) *Table { return t } +func (t *Table) MustRender() { + if err := t.Render(); err != nil { + panic(err) + } +} + func (t *Table) Render() error { + if len(t.headers) == 0 { + return fmt.Errorf("no headers") + } + if len(t.rows) == 0 { + return fmt.Errorf("no rows") + } if t.err != nil { return t.err } |
