| | | 1 | | package domain |
| | | 2 | | |
| | | 3 | | import ( |
| | | 4 | | "errors" |
| | | 5 | | "fmt" |
| | | 6 | | ) |
| | | 7 | | |
| | | 8 | | // Sentinel errors for the domain layer. |
| | | 9 | | var ( |
| | | 10 | | ErrNoReleasableChanges = errors.New("no releasable changes found") |
| | | 11 | | ErrInvalidVersion = errors.New("invalid version") |
| | | 12 | | ErrInvalidCommit = errors.New("invalid commit message") |
| | | 13 | | ErrProjectNotFound = errors.New("project not found") |
| | | 14 | | ErrTagAlreadyExists = errors.New("tag already exists") |
| | | 15 | | ErrBranchNotAllowed = errors.New("branch is not configured for releases") |
| | | 16 | | ErrDryRun = errors.New("dry run: no mutations performed") |
| | | 17 | | ) |
| | | 18 | | |
| | | 19 | | // ProjectError wraps an error with project context. |
| | | 20 | | type ProjectError struct { |
| | | 21 | | Project string |
| | | 22 | | Op string |
| | | 23 | | Err error |
| | | 24 | | } |
| | | 25 | | |
| | 1 | 26 | | func (e *ProjectError) Error() string { |
| | 1 | 27 | | return fmt.Sprintf("project %q: %s: %v", e.Project, e.Op, e.Err) |
| | 1 | 28 | | } |
| | | 29 | | |
| | 1 | 30 | | func (e *ProjectError) Unwrap() error { |
| | 1 | 31 | | return e.Err |
| | 1 | 32 | | } |
| | | 33 | | |
| | | 34 | | // NewProjectError creates a project-scoped error. |
| | | 35 | | func NewProjectError(project, op string, err error) error { |
| | | 36 | | return &ProjectError{Project: project, Op: op, Err: err} |
| | | 37 | | } |
| | | 38 | | |
| | | 39 | | // ReleaseError wraps an error that occurred during the release pipeline. |
| | | 40 | | type ReleaseError struct { |
| | | 41 | | Step string |
| | | 42 | | Err error |
| | | 43 | | } |
| | | 44 | | |
| | | 45 | | func (e *ReleaseError) Error() string { |
| | | 46 | | return fmt.Sprintf("release step %q: %v", e.Step, e.Err) |
| | | 47 | | } |
| | | 48 | | |
| | | 49 | | func (e *ReleaseError) Unwrap() error { |
| | | 50 | | return e.Err |
| | | 51 | | } |
| | | 52 | | |
| | | 53 | | // NewReleaseError creates a release pipeline error. |
| | | 54 | | func NewReleaseError(step string, err error) error { |
| | | 55 | | return &ReleaseError{Step: step, Err: err} |
| | | 56 | | } |