support --period

This commit is contained in:
Bel LaPointe
2024-12-12 21:50:03 -07:00
parent 8ab5a0edf5
commit 62e65c47df
3 changed files with 44 additions and 4 deletions

View File

@@ -4,6 +4,7 @@ import (
"fmt"
"os"
"strings"
"time"
)
type FlagStringArray []string
@@ -33,3 +34,35 @@ func (fileList *FileList) Set(s string) error {
}
return (*FlagStringArray)(fileList).Set(s)
}
type Period struct {
Start time.Time
Stop time.Time
}
func (period Period) Empty() bool {
return period.Stop.Sub(period.Start) == 0
}
func (period *Period) String() string {
return fmt.Sprintf("%s..%s", period.Start, period.Stop)
}
func (period *Period) Set(s string) error {
if result, err := time.Parse("2006", s); err == nil {
period.Start = result
period.Stop = result.AddDate(1, 0, 0).Add(-1 * time.Minute)
return nil
}
if result, err := time.Parse("2006-01", s); err == nil {
period.Start = result
period.Stop = result.AddDate(0, 1, 0).Add(-1 * time.Minute)
return nil
}
if result, err := time.Parse("2006-01-02", s); err == nil {
period.Start = result
period.Stop = result.AddDate(0, 0, 1).Add(-1 * time.Minute)
return nil
}
return fmt.Errorf("unimplemented format: %s", s)
}