in internal/commands/interceptor/duration.go [91:124]
func ParseDuration(start, end string, userStep api.Step) (startTime, endTime time.Time, step api.Step, dt utils.DurationType) {
logger.Log.Debugln("Start time:", start, "end time:", end, "timezone:", time.Local)
now := time.Now()
// both are absent
if start == "" && end == "" {
return now.Add(-30 * time.Minute), now, api.StepMinute, utils.BothAbsent
}
var err error
// both are present
if len(start) > 0 && len(end) > 0 {
if userStep, startTime, err = TryParseTime(start, userStep); err != nil {
logger.Log.Fatalln("Unsupported time format:", start, err)
}
if step, endTime, err = TryParseTime(end, userStep); err != nil {
logger.Log.Fatalln("Unsupported time format:", end, err)
}
return startTime, endTime, step, utils.BothPresent
} else if end == "" { // end is absent
if step, startTime, err = TryParseTime(start, userStep); err != nil {
logger.Log.Fatalln("Unsupported time format:", start, err)
}
return startTime, startTime.Add(30 * utils.StepDuration[step]), step, utils.EndAbsent
} else { // start is absent
if step, endTime, err = TryParseTime(end, userStep); err != nil {
logger.Log.Fatalln("Unsupported time format:", end, err)
}
return endTime.Add(-30 * utils.StepDuration[step]), endTime, step, utils.StartAbsent
}
}