hooks

package
v0.8.1 Latest Latest
Warning

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

Go to latest
Published: Jan 20, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package hooks provides pre-release hook execution for sley.

Hooks are commands that run before version bumps, allowing for validation, testing, or other automated checks before a version change is applied.

Hook Types

CommandHook executes a shell command:

hook := hooks.CommandHook{
    Name:    "run-tests",
    Command: "make test",
}
if err := hook.Run(); err != nil {
    log.Fatal("tests failed")
}

Configuration

Hooks are configured in .sley.yaml:

pre-release-hooks:
  - command: "make test"
  - command: "make lint"

Security Considerations

Hook commands are executed via "sh -c" and can run arbitrary code. Only use hooks from trusted sources. The configuration file should have restrictive permissions (0600) to prevent unauthorized modification.

Index

Constants

This section is empty.

Variables

View Source
var LoadPreReleaseHooksFromConfigFn = loadPreReleaseHooksFromConfig
View Source
var RunPreReleaseHooksFn = func(ctx context.Context, skip bool) error {
	return defaultRunner.Run(ctx, skip)
}

RunPreReleaseHooksFn is kept for backward compatibility during migration.

Functions

func RegisterPreReleaseHook

func RegisterPreReleaseHook(h PreReleaseHook)

func ResetPreReleaseHooks

func ResetPreReleaseHooks()

Types

type CommandHook

type CommandHook struct {
	Name    string
	Command string
}

func (CommandHook) HookName

func (h CommandHook) HookName() string

func (CommandHook) Run

func (h CommandHook) Run(ctx context.Context) error

type HookProvider

type HookProvider interface {
	GetHooks() []PreReleaseHook
}

HookProvider provides access to registered hooks.

type OutputPrinter

type OutputPrinter interface {
	Printf(format string, args ...any)
	PrintSuccess(msg string)
	PrintFailure(msg string)
}

OutputPrinter abstracts output printing for testability.

type PreReleaseHook

type PreReleaseHook interface {
	HookName() string
	Run(ctx context.Context) error
}

PreReleaseHook is the interface for pre-release hooks.

func GetPreReleaseHooks

func GetPreReleaseHooks() []PreReleaseHook

type PreReleaseHookRunner

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

PreReleaseHookRunner runs pre-release hooks with injected dependencies.

func NewPreReleaseHookRunner

func NewPreReleaseHookRunner(provider HookProvider, printer OutputPrinter) *PreReleaseHookRunner

NewPreReleaseHookRunner creates a PreReleaseHookRunner with the given dependencies. If any dependency is nil, the production default is used.

func (*PreReleaseHookRunner) Run

func (r *PreReleaseHookRunner) Run(ctx context.Context, skip bool) error

Run executes all registered pre-release hooks.

Jump to

Keyboard shortcuts

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