in internal/commands/interceptor/duration.go [53:81]
func DurationInterceptor(ctx *cli.Context) error {
start := ctx.String("start")
end := ctx.String("end")
userStep := ctx.Generic("step")
if timezone := ctx.String("timezone"); timezone != "" {
if offset, err := strconv.Atoi(timezone); err == nil {
// `offset` is in form of "+1300", while `time.FixedZone` takes offset in seconds
time.Local = time.FixedZone("", offset/100*60*60)
}
}
var s api.Step
if userStep != nil {
s = userStep.(*model.StepEnumValue).Selected
}
startTime, endTime, step, dt := ParseDuration(start, end, s)
if err := ctx.Set("start", startTime.Format(utils.StepFormats[step])); err != nil {
return err
} else if err := ctx.Set("end", endTime.Format(utils.StepFormats[step])); err != nil {
return err
} else if err := ctx.Set("step", step.String()); err != nil {
return err
} else if err := ctx.Set("duration-type", dt.String()); err != nil {
return err
}
return nil
}