Add configurable sequence numbering command
This commit is contained in:
68
internal/sequence/plan.go
Normal file
68
internal/sequence/plan.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package sequence
|
||||
|
||||
// Plan represents the ordered numbering proposal produced during preview.
|
||||
type Plan struct {
|
||||
Candidates []Candidate
|
||||
SkippedConflicts []Conflict
|
||||
Summary Summary
|
||||
Config Config
|
||||
}
|
||||
|
||||
// Candidate describes a single file considered for numbering.
|
||||
type Candidate struct {
|
||||
OriginalPath string
|
||||
ProposedPath string
|
||||
Index int
|
||||
IsDir bool
|
||||
Status CandidateStatus
|
||||
}
|
||||
|
||||
// CandidateStatus indicates how a candidate was handled during preview.
|
||||
type CandidateStatus string
|
||||
|
||||
const (
|
||||
// CandidatePending means the candidate will be renamed when applied.
|
||||
CandidatePending CandidateStatus = "pending"
|
||||
// CandidateSkipped indicates the candidate was skipped (e.g., conflict).
|
||||
CandidateSkipped CandidateStatus = "skipped"
|
||||
// CandidateUnchanged indicates the candidate already matches the target name.
|
||||
CandidateUnchanged CandidateStatus = "unchanged"
|
||||
)
|
||||
|
||||
// Conflict captures a skipped item and the reason it could not be renamed.
|
||||
type Conflict struct {
|
||||
OriginalPath string
|
||||
ConflictingPath string
|
||||
Reason ConflictReason
|
||||
}
|
||||
|
||||
// ConflictReason enumerates known conflict types.
|
||||
type ConflictReason string
|
||||
|
||||
const (
|
||||
// ConflictExistingTarget indicates the proposed name collides with an existing file.
|
||||
ConflictExistingTarget ConflictReason = "existing_target"
|
||||
// ConflictInvalidSeparator indicates the proposed separator produced an invalid path.
|
||||
ConflictInvalidSeparator ConflictReason = "invalid_separator"
|
||||
// ConflictWidthOverflow indicates numbering exceeded a fixed width.
|
||||
ConflictWidthOverflow ConflictReason = "width_overflow"
|
||||
)
|
||||
|
||||
// Summary aggregates totals surfaced during preview.
|
||||
type Summary struct {
|
||||
TotalCandidates int
|
||||
RenamedCount int
|
||||
SkippedCount int
|
||||
Warnings []string
|
||||
AppliedWidth int
|
||||
}
|
||||
|
||||
// Config snapshots the numbering configuration for preview/apply/ledger.
|
||||
type Config struct {
|
||||
Start int
|
||||
Width int
|
||||
Placement Placement
|
||||
Separator string
|
||||
NumberPrefix string
|
||||
NumberSuffix string
|
||||
}
|
||||
Reference in New Issue
Block a user