summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-02-05 01:11:05 +0200
committerPaul Buetow <paul@buetow.org>2025-02-05 01:11:05 +0200
commitbd97ed65bb98efbf73bda041983b83d6c434a2c8 (patch)
tree4073ecbd3de00e864c6ee58effd168e59fcc1e67 /internal
parent24778551d8e5b0b47a06494dd28a66a71dfb47f0 (diff)
refactor
Diffstat (limited to 'internal')
-rw-r--r--internal/main.go12
-rw-r--r--internal/schedule/stats.go29
-rw-r--r--internal/table/table.go37
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
}