func DurationInterceptor()

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
}