From e6a5c6499b39f18b1b6b561f597330acb9a0597a Mon Sep 17 00:00:00 2001 From: Rogee Date: Mon, 3 Nov 2025 10:59:15 +0800 Subject: [PATCH] Add configurable sequence numbering command --- AGENTS.md | 2 +- README.md | 1 + cmd/root.go | 1 + cmd/sequence.go | 158 ++++++++++++ docs/CHANGELOG.md | 1 + docs/cli-flags.md | 17 ++ internal/sequence/apply.go | 113 ++++++++ internal/sequence/doc.go | 2 + internal/sequence/format.go | 20 ++ internal/sequence/options.go | 95 +++++++ internal/sequence/plan.go | 68 +++++ internal/sequence/preview.go | 195 ++++++++++++++ internal/sequence/traversal.go | 92 +++++++ .../checklists/requirements.md | 34 +++ .../contracts/sequence.openapi.yaml | 241 ++++++++++++++++++ specs/001-sequence-numbering/data-model.md | 68 +++++ specs/001-sequence-numbering/plan.md | 87 +++++++ specs/001-sequence-numbering/quickstart.md | 55 ++++ specs/001-sequence-numbering/research.md | 26 ++ specs/001-sequence-numbering/spec.md | 109 ++++++++ specs/001-sequence-numbering/tasks.md | 115 +++++++++ testdata/sequence/basic/draft.txt | 1 + testdata/sequence/basic/notes.txt | 1 + testdata/sequence/basic/plan.txt | 1 + testdata/sequence/demo/alpha.txt | 1 + testdata/sequence/demo/beta.txt | 1 + testdata/sequence/demo/gamma.txt | 1 + tests/contract/sequence_placement_test.go | 76 ++++++ tests/contract/sequence_preview_test.go | 53 ++++ tests/contract/sequence_width_test.go | 39 +++ tests/integration/sequence_flow_test.go | 70 +++++ tests/integration/sequence_prefix_test.go | 53 ++++ tests/integration/sequence_start_test.go | 65 +++++ tests/integration/sequence_width_test.go | 59 +++++ 34 files changed, 1920 insertions(+), 1 deletion(-) create mode 100644 cmd/sequence.go create mode 100644 internal/sequence/apply.go create mode 100644 internal/sequence/doc.go create mode 100644 internal/sequence/format.go create mode 100644 internal/sequence/options.go create mode 100644 internal/sequence/plan.go create mode 100644 internal/sequence/preview.go create mode 100644 internal/sequence/traversal.go create mode 100644 specs/001-sequence-numbering/checklists/requirements.md create mode 100644 specs/001-sequence-numbering/contracts/sequence.openapi.yaml create mode 100644 specs/001-sequence-numbering/data-model.md create mode 100644 specs/001-sequence-numbering/plan.md create mode 100644 specs/001-sequence-numbering/quickstart.md create mode 100644 specs/001-sequence-numbering/research.md create mode 100644 specs/001-sequence-numbering/spec.md create mode 100644 specs/001-sequence-numbering/tasks.md create mode 100644 testdata/sequence/basic/draft.txt create mode 100644 testdata/sequence/basic/notes.txt create mode 100644 testdata/sequence/basic/plan.txt create mode 100644 testdata/sequence/demo/alpha.txt create mode 100644 testdata/sequence/demo/beta.txt create mode 100644 testdata/sequence/demo/gamma.txt create mode 100644 tests/contract/sequence_placement_test.go create mode 100644 tests/contract/sequence_preview_test.go create mode 100644 tests/contract/sequence_width_test.go create mode 100644 tests/integration/sequence_flow_test.go create mode 100644 tests/integration/sequence_prefix_test.go create mode 100644 tests/integration/sequence_start_test.go create mode 100644 tests/integration/sequence_width_test.go diff --git a/AGENTS.md b/AGENTS.md index b2c4c12..a8f847f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -43,9 +43,9 @@ tests/ - Smoke: `scripts/smoke-test-replace.sh`, `scripts/smoke-test-remove.sh` ## Recent Changes +- 001-sequence-numbering: Added Go 1.24 + `spf13/cobra`, `spf13/pflag`, internal traversal/history/output packages - 006-add-regex-command: Added Go 1.24 + `spf13/cobra`, `spf13/pflag`, Go `regexp` (RE2 engine), internal traversal/history/output packages - 005-add-insert-command: Added Go 1.24 + `spf13/cobra`, `spf13/pflag`, internal traversal/history/output packages -- 004-extension-rename: Added Go 1.24 + `spf13/cobra`, `spf13/pflag`, internal traversal/ledger packages diff --git a/README.md b/README.md index 780269d..e4427d0 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ All subcommands accept these persistent flags: - `renamer remove ` — Strip ordered substrings from names with empty-name protection and duplicate detection. - `renamer extension ` — Normalize heterogeneous extensions to a single target while keeping a ledger entry for undo. - `renamer insert ` — Insert text at symbolic (`^`, `$`) offsets, count forward with numbers (`3` or `^3`), or backward with suffix tokens like `1$`. +- `renamer sequence [flags]` — Append or prepend zero-padded sequence numbers with configurable start, width, placement (default prefix), separator, and static number prefix/suffix options. - `renamer regex