Help us shape the future of Go! Take the 2026 Go Developer Survey

timer

package
v5.23.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

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.

The Timer interface is designed for single-threaded CLI command execution and provides methods to start timing, mark stage transitions, and retrieve current timing information. Implementations are safe for sequential use within a single goroutine.

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 ...
timer.NewStage()
// ... stage 3 ...
total, stage := timer.GetTiming()
fmt.Printf("Operation completed [%s total|%s stage]\n", total, stage)

Integration with notify package:

timer := timer.New()
timer.Start()
// ... perform operation ...
notify.WriteMessage(notify.Message{
    Type:    notify.SuccessType,
    Content: "Operation complete",
    Timer:   timer,
})

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

func (t *Impl) GetTiming() (time.Duration, time.Duration)

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.

func (*Impl) Start

func (t *Impl) Start()

Start initializes the timer and begins tracking elapsed time. Sets both total and stage start times to the current time. Can be called multiple times to reset the timer.

func (*Impl) Stop

func (t *Impl) Stop()

Stop signals the end of timing tracking. This is a no-op in the current implementation but provided for future extensibility (e.g., resource cleanup).

type MockTimer

type MockTimer struct {
	mock.Mock
}

MockTimer is an autogenerated mock type for the Timer type

func NewMockTimer

func NewMockTimer(t interface {
	mock.TestingT
	Cleanup(func())
}) *MockTimer

NewMockTimer creates a new instance of MockTimer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. The first argument is typically a *testing.T value.

func (*MockTimer) EXPECT

func (_m *MockTimer) EXPECT() *MockTimer_Expecter

func (*MockTimer) GetTiming

func (_mock *MockTimer) GetTiming() (time.Duration, time.Duration)

GetTiming provides a mock function for the type MockTimer

func (*MockTimer) NewStage

func (_mock *MockTimer) NewStage()

NewStage provides a mock function for the type MockTimer

func (*MockTimer) Start

func (_mock *MockTimer) Start()

Start provides a mock function for the type MockTimer

func (*MockTimer) Stop

func (_mock *MockTimer) Stop()

Stop provides a mock function for the type MockTimer

type MockTimer_Expecter

type MockTimer_Expecter struct {
	// contains filtered or unexported fields
}

func (*MockTimer_Expecter) GetTiming

GetTiming is a helper method to define mock.On call

func (*MockTimer_Expecter) NewStage

NewStage is a helper method to define mock.On call

func (*MockTimer_Expecter) Start

Start is a helper method to define mock.On call

func (*MockTimer_Expecter) Stop

Stop is a helper method to define mock.On call

type MockTimer_GetTiming_Call

type MockTimer_GetTiming_Call struct {
	*mock.Call
}

MockTimer_GetTiming_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetTiming'

func (*MockTimer_GetTiming_Call) Return

func (*MockTimer_GetTiming_Call) Run

func (*MockTimer_GetTiming_Call) RunAndReturn

type MockTimer_NewStage_Call

type MockTimer_NewStage_Call struct {
	*mock.Call
}

MockTimer_NewStage_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'NewStage'

func (*MockTimer_NewStage_Call) Return

func (*MockTimer_NewStage_Call) Run

func (_c *MockTimer_NewStage_Call) Run(run func()) *MockTimer_NewStage_Call

func (*MockTimer_NewStage_Call) RunAndReturn

func (_c *MockTimer_NewStage_Call) RunAndReturn(run func()) *MockTimer_NewStage_Call

type MockTimer_Start_Call

type MockTimer_Start_Call struct {
	*mock.Call
}

MockTimer_Start_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Start'

func (*MockTimer_Start_Call) Return

func (*MockTimer_Start_Call) Run

func (_c *MockTimer_Start_Call) Run(run func()) *MockTimer_Start_Call

func (*MockTimer_Start_Call) RunAndReturn

func (_c *MockTimer_Start_Call) RunAndReturn(run func()) *MockTimer_Start_Call

type MockTimer_Stop_Call

type MockTimer_Stop_Call struct {
	*mock.Call
}

MockTimer_Stop_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Stop'

func (*MockTimer_Stop_Call) Return

func (*MockTimer_Stop_Call) Run

func (_c *MockTimer_Stop_Call) Run(run func()) *MockTimer_Stop_Call

func (*MockTimer_Stop_Call) RunAndReturn

func (_c *MockTimer_Stop_Call) RunAndReturn(run func()) *MockTimer_Stop_Call

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL