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 ¶
var LoadPreReleaseHooksFromConfigFn = loadPreReleaseHooksFromConfig
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 ¶
func (CommandHook) HookName ¶
func (h CommandHook) HookName() string
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 ¶
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.