Documentation
¶
Overview ¶
Package timer provides timing functionality for tracking command execution duration.
The timer package implements a simple, stateful timer that tracks total elapsed time and per-stage elapsed time for CLI command operations. It integrates with the notify package to display timing information in command output.
Example usage for single-stage command:
timer := timer.New()
timer.Start()
// ... perform operation ...
total, stage := timer.GetTiming()
fmt.Printf("Operation completed [%s]\n", total)
Example usage for multi-stage command:
timer := timer.New()
timer.Start()
// ... stage 1 ...
timer.NewStage()
// ... stage 2 ...
total, stage := timer.GetTiming()
fmt.Printf("Operation completed [%s total|%s stage]\n", total, stage)
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Impl ¶
type Impl struct {
// contains filtered or unexported fields
}
Impl is the concrete implementation of the Timer interface.
func New ¶
func New() *Impl
New creates a new Timer instance. The timer must be started with Start() before use.
func (*Impl) GetTiming ¶
GetTiming returns the current elapsed durations. Returns (total, stage) where:
- total: time elapsed since Start() was called
- stage: time elapsed since last NewStage() or Start()
If Start() has not been called, returns (0, 0). Can be called multiple times without side effects.
func (*Impl) NewStage ¶
func (t *Impl) NewStage()
NewStage marks a transition to a new stage. Resets the stage timer while preserving total elapsed time.
type Timer ¶
type Timer interface {
// Start initializes timing tracking. Sets both total and stage
// start times to the current time. Can be called multiple times
// to reset the timer.
Start()
// NewStage marks a stage transition.
// Resets the stage timer while preserving total elapsed time.
NewStage()
// GetTiming returns the current elapsed durations.
// Returns (total, stage) where:
// - total: time elapsed since Start()
// - stage: time elapsed since last NewStage() or Start()
// Can be called multiple times without side effects.
GetTiming() (total, stage time.Duration)
// Stop signals completion of timing. This is optional and
// provided for future extensibility. Currently a no-op.
Stop()
}
Timer tracks elapsed time for CLI command execution.
Timer provides methods to start timing, mark stage transitions, and retrieve current timing information. It is designed for single-threaded CLI command execution.