support --period
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user