@alejandrochaves/devflow-cli 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +305 -0
  2. package/dist/colors.d.ts +9 -0
  3. package/dist/colors.d.ts.map +1 -0
  4. package/dist/colors.js +13 -0
  5. package/dist/colors.js.map +1 -0
  6. package/dist/commands/amend.d.ts +4 -0
  7. package/dist/commands/amend.d.ts.map +1 -0
  8. package/dist/commands/amend.js +138 -0
  9. package/dist/commands/amend.js.map +1 -0
  10. package/dist/commands/branch.d.ts +3 -1
  11. package/dist/commands/branch.d.ts.map +1 -1
  12. package/dist/commands/branch.js +10 -5
  13. package/dist/commands/branch.js.map +1 -1
  14. package/dist/commands/changelog.d.ts +4 -0
  15. package/dist/commands/changelog.d.ts.map +1 -0
  16. package/dist/commands/changelog.js +204 -0
  17. package/dist/commands/changelog.js.map +1 -0
  18. package/dist/commands/cleanup.d.ts +4 -0
  19. package/dist/commands/cleanup.d.ts.map +1 -0
  20. package/dist/commands/cleanup.js +121 -0
  21. package/dist/commands/cleanup.js.map +1 -0
  22. package/dist/commands/commit.d.ts +3 -1
  23. package/dist/commands/commit.d.ts.map +1 -1
  24. package/dist/commands/commit.js +91 -24
  25. package/dist/commands/commit.js.map +1 -1
  26. package/dist/commands/doctor.d.ts +2 -0
  27. package/dist/commands/doctor.d.ts.map +1 -0
  28. package/dist/commands/doctor.js +122 -0
  29. package/dist/commands/doctor.js.map +1 -0
  30. package/dist/commands/init.d.ts.map +1 -1
  31. package/dist/commands/init.js +248 -22
  32. package/dist/commands/init.js.map +1 -1
  33. package/dist/commands/pr.d.ts +3 -1
  34. package/dist/commands/pr.d.ts.map +1 -1
  35. package/dist/commands/pr.js +41 -40
  36. package/dist/commands/pr.js.map +1 -1
  37. package/dist/commands/status.d.ts +2 -0
  38. package/dist/commands/status.d.ts.map +1 -0
  39. package/dist/commands/status.js +83 -0
  40. package/dist/commands/status.js.map +1 -0
  41. package/dist/config.d.ts +13 -0
  42. package/dist/config.d.ts.map +1 -1
  43. package/dist/config.js +52 -1
  44. package/dist/config.js.map +1 -1
  45. package/dist/index.js +103 -5
  46. package/dist/index.js.map +1 -1
  47. package/package.json +12 -3
package/README.md ADDED
@@ -0,0 +1,305 @@
1
+ # @alejandrochaves/devflow-cli
2
+
3
+ Interactive CLI for branch creation, conventional commits, and PR management.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install -D @alejandrochaves/devflow-cli
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```bash
14
+ # Initialize config in your project
15
+ npx devflow init
16
+
17
+ # Create a branch
18
+ npx devflow branch
19
+
20
+ # Stage files and commit
21
+ npx devflow commit
22
+
23
+ # Create or update a PR
24
+ npx devflow pr
25
+ ```
26
+
27
+ Or add scripts to your `package.json`:
28
+
29
+ ```json
30
+ {
31
+ "scripts": {
32
+ "branch": "devflow branch",
33
+ "commit": "devflow commit",
34
+ "pr": "devflow pr"
35
+ }
36
+ }
37
+ ```
38
+
39
+ ## Commands
40
+
41
+ ### `devflow init`
42
+
43
+ Interactive setup wizard that configures your entire project. Walks you through:
44
+
45
+ 1. **Ticket base URL** — for linking tickets in PRs
46
+ 2. **Scopes** — add project-specific scopes one by one (or use defaults)
47
+ 3. **PR checklist** — customize or use defaults
48
+ 4. **package.json scripts** — auto-adds `commit`, `branch`, `pr` scripts
49
+ 5. **Commitlint** — creates config with the devflow parser preset, installs deps
50
+ 6. **Husky** — installs, initializes, creates `commit-msg` hook
51
+ 7. **CI workflow** — optionally generates `.github/workflows/ci.yml` (lint, typecheck, test)
52
+
53
+ ### `devflow branch`
54
+
55
+ Interactive branch creation with consistent naming.
56
+
57
+ **Flow:**
58
+ 1. Select branch type (feat, fix, chore, refactor, docs, test, release, hotfix)
59
+ 2. Enter ticket number (or leave blank for `UNTRACKED`)
60
+ 3. Enter short description (auto-kebab-cased)
61
+ 4. Preview and confirm
62
+
63
+ **Branch format:**
64
+ ```
65
+ type/TICKET_description
66
+ ```
67
+
68
+ **Examples:**
69
+ ```
70
+ feat/ENV-123_add-budget-sharing
71
+ fix/PROJ-45_correct-calculation-overflow
72
+ chore/UNTRACKED_update-dependencies
73
+ ```
74
+
75
+ ### `devflow commit`
76
+
77
+ Interactive conventional commit with file staging, scope selection, and ticket inference.
78
+
79
+ **Flow:**
80
+ 1. If no files are staged, select files to stage (checkbox selection)
81
+ 2. Select commit type
82
+ 3. Select or enter scope (searchable list if configured, free text otherwise)
83
+ 4. Enter commit message
84
+ 5. Confirm if breaking change
85
+ 6. Preview and confirm
86
+
87
+ **Commit format:**
88
+ ```
89
+ type[ticket](scope): message
90
+ ```
91
+
92
+ The ticket is automatically inferred from the branch name. If the branch doesn't follow the `type/TICKET_description` format, it defaults to `UNTRACKED`.
93
+
94
+ **Examples:**
95
+ ```
96
+ feat[ENV-123](auth): add biometric login
97
+ fix[PROJ-45](budget): correct calculation overflow
98
+ chore[UNTRACKED](deps): update dependencies
99
+ refactor[ENV-200]!(api): restructure endpoints
100
+ ```
101
+
102
+ The `!` after the ticket indicates a breaking change.
103
+
104
+ ### `devflow pr`
105
+
106
+ Create or update a pull request with an auto-filled template.
107
+
108
+ **Flow:**
109
+ 1. Checks if a PR already exists for the current branch (offers to update)
110
+ 2. Infers the base branch (closest remote branch by merge-base)
111
+ 3. Enter PR title (pre-filled from branch description)
112
+ 4. Enter optional summary
113
+ 5. Preview PR body with template
114
+ 6. Confirm and create/update
115
+
116
+ **Features:**
117
+ - Auto-detects existing PRs and offers update flow
118
+ - Infers base branch using `git merge-base` comparison
119
+ - Pre-fills commit list in the summary
120
+ - Auto-labels from branch type (feat → `feature`, fix → `bug`, etc.)
121
+ - Auto-labels from commit scopes
122
+ - Self-assigns with `@me`
123
+ - Creates as draft by default
124
+ - Links ticket if `ticketBaseUrl` is configured
125
+
126
+ **PR template includes:**
127
+ - Summary (with commit list)
128
+ - Ticket (linked if base URL configured)
129
+ - Type of Change (checkboxes, auto-checked from branch type)
130
+ - Screenshots table
131
+ - Test Plan
132
+ - Checklist (customizable via config)
133
+
134
+ ### `devflow status`
135
+
136
+ At-a-glance view of your current branch context:
137
+ - Branch name, type, ticket, and description
138
+ - Inferred base branch
139
+ - Commit count with recent messages
140
+ - Working tree status (staged/modified/untracked)
141
+ - PR link and state (if exists)
142
+
143
+ ### `devflow amend`
144
+
145
+ Re-edit the last commit message using the same guided prompts. Pre-fills all fields from the existing message. Also includes any staged changes in the amend.
146
+
147
+ ### `devflow cleanup`
148
+
149
+ Finds and deletes local branches that are:
150
+ - Merged into `main`
151
+ - Tracking a remote branch that no longer exists
152
+
153
+ Fetches remote state first, shows checkbox selection, and asks for confirmation before force-deleting unmerged branches.
154
+
155
+ ### `devflow changelog`
156
+
157
+ Generates a changelog entry from conventional commits since the last git tag:
158
+ - Groups by type (Features, Bug Fixes, etc.)
159
+ - Highlights breaking changes
160
+ - Auto-suggests the next version (semver bump based on commit types)
161
+ - Prepends to `CHANGELOG.md`
162
+
163
+ ### `devflow doctor`
164
+
165
+ Checks that all devflow dependencies are properly configured:
166
+ - git, node (>= 18), gh CLI + auth
167
+ - `.devflow.json`, commitlint config, husky hooks
168
+ - `package.json` scripts
169
+
170
+ ### `devflow completions`
171
+
172
+ Outputs shell completion scripts for tab-completion of commands:
173
+
174
+ ```bash
175
+ # zsh (add to ~/.zshrc)
176
+ eval "$(devflow completions --shell zsh)"
177
+
178
+ # bash (add to ~/.bashrc)
179
+ eval "$(devflow completions --shell bash)"
180
+ ```
181
+
182
+ ## Global Options
183
+
184
+ Commands that modify git state support `--dry-run` to preview without executing:
185
+
186
+ ```bash
187
+ devflow commit --dry-run
188
+ devflow branch --dry-run
189
+ devflow pr --dry-run
190
+ devflow amend --dry-run
191
+ devflow cleanup --dry-run
192
+ devflow changelog --dry-run
193
+ ```
194
+
195
+ ## Configuration
196
+
197
+ Create a `.devflow.json` in your project root (or run `devflow init`):
198
+
199
+ ```json
200
+ {
201
+ "ticketBaseUrl": "https://github.com/org/repo/issues",
202
+ "scopes": [
203
+ { "value": "auth", "description": "Authentication & login", "paths": ["src/auth/**"] },
204
+ { "value": "ui", "description": "UI components", "paths": ["src/components/**"] },
205
+ { "value": "api", "description": "API layer", "paths": ["src/api/**", "src/services/**"] }
206
+ ],
207
+ "branchTypes": ["feat", "fix", "chore", "refactor", "docs", "test", "release", "hotfix"],
208
+ "commitTypes": [
209
+ { "value": "feat", "label": "feat: A new feature" },
210
+ { "value": "fix", "label": "fix: A bug fix" }
211
+ ],
212
+ "commitFormat": "{type}[{ticket}]{breaking}({scope}): {message}",
213
+ "checklist": [
214
+ "Code follows project conventions",
215
+ "Self-reviewed the changes",
216
+ "No new warnings or errors introduced"
217
+ ],
218
+ "prTemplate": {
219
+ "sections": ["summary", "ticket", "type", "screenshots", "testPlan", "checklist"],
220
+ "screenshotsTable": true
221
+ },
222
+ "prReviewers": ["copilot"]
223
+ }
224
+ ```
225
+
226
+ ### Config Options
227
+
228
+ | Option | Description | Default |
229
+ |--------|-------------|---------|
230
+ | `ticketBaseUrl` | Base URL for linking tickets in PRs | — |
231
+ | `scopes` | List of scopes with `value`, `description`, and optional `paths` for auto-inference | `[]` (free text input) |
232
+ | `scopes[].paths` | Glob patterns to auto-suggest this scope when matching files are staged | — |
233
+ | `branchTypes` | Allowed branch type prefixes | `["feat", "fix", "chore", ...]` |
234
+ | `commitTypes` | Commit types shown in selection menu (`value` + `label`) | Standard conventional types |
235
+ | `commitFormat` | Commit message format with `{type}`, `{ticket}`, `{breaking}`, `{scope}`, `{message}` placeholders | `{type}[{ticket}]{breaking}({scope}): {message}` |
236
+ | `checklist` | PR checklist items | Basic code review items |
237
+ | `prTemplate.sections` | PR body sections to include | All sections |
238
+ | `prTemplate.screenshotsTable` | Include before/after screenshots table | `true` |
239
+ | `prReviewers` | Default PR reviewers (GitHub usernames) | — |
240
+
241
+ ### Scopes
242
+
243
+ When `scopes` is an empty array, the commit command shows a free text input for scope. When populated, it shows a searchable list that can be filtered by typing.
244
+
245
+ **Scope inference** works in two ways (first match wins):
246
+
247
+ 1. **From file paths** — if a scope has `paths` configured, staged files are matched against those glob patterns. The scope with the most matching files is suggested.
248
+ 2. **From git history** — previous commits on the branch (`git log main..HEAD`) are parsed for existing scopes.
249
+
250
+ Example with paths:
251
+ ```json
252
+ {
253
+ "scopes": [
254
+ { "value": "auth", "description": "Authentication", "paths": ["src/auth/**", "src/hooks/useAuth*"] },
255
+ { "value": "ui", "description": "UI components", "paths": ["src/components/**"] }
256
+ ]
257
+ }
258
+ ```
259
+
260
+ If you stage `src/auth/login.ts`, the `auth` scope is auto-suggested.
261
+
262
+ ## Commitlint Integration
263
+
264
+ If you use [commitlint](https://commitlint.js.org/) to enforce commit conventions, add this parser preset to handle the `type[ticket](scope): message` format:
265
+
266
+ ```javascript
267
+ // commitlint.config.js
268
+ module.exports = {
269
+ extends: ['@commitlint/config-conventional'],
270
+ parserPreset: {
271
+ parserOpts: {
272
+ headerPattern: /^(\w+)\[.*?\]!?\((.+)\): (.+)$/,
273
+ headerCorrespondence: ['type', 'scope', 'subject'],
274
+ },
275
+ },
276
+ rules: {
277
+ 'subject-case': [0],
278
+ },
279
+ };
280
+ ```
281
+
282
+ ## Git Hooks
283
+
284
+ Pair with [husky](https://typicode.github.io/husky/) for a guided commit experience:
285
+
286
+ ```bash
287
+ # .husky/commit-msg
288
+ npx --no -- commitlint --edit $1 || {
289
+ echo ""
290
+ echo " Commit message does not follow the required format."
291
+ echo " Use: npm run commit"
292
+ echo ""
293
+ exit 1
294
+ }
295
+ ```
296
+
297
+ ## Requirements
298
+
299
+ - Node.js >= 18
300
+ - Git
301
+ - [GitHub CLI (gh)](https://cli.github.com/) — required for the `pr` command
302
+
303
+ ## License
304
+
305
+ MIT
@@ -0,0 +1,9 @@
1
+ export declare const bold: (text: string) => string;
2
+ export declare const dim: (text: string) => string;
3
+ export declare const green: (text: string) => string;
4
+ export declare const yellow: (text: string) => string;
5
+ export declare const red: (text: string) => string;
6
+ export declare const cyan: (text: string) => string;
7
+ export declare const gray: (text: string) => string;
8
+ export declare const magenta: (text: string) => string;
9
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,IAAI,SAJD,MAAM,WAIS,CAAC;AAChC,eAAO,MAAM,GAAG,SALA,MAAM,WAKQ,CAAC;AAC/B,eAAO,MAAM,KAAK,SANF,MAAM,WAMW,CAAC;AAClC,eAAO,MAAM,MAAM,SAPH,MAAM,WAOY,CAAC;AACnC,eAAO,MAAM,GAAG,SARA,MAAM,WAQS,CAAC;AAChC,eAAO,MAAM,IAAI,SATD,MAAM,WASU,CAAC;AACjC,eAAO,MAAM,IAAI,SAVD,MAAM,WAUU,CAAC;AACjC,eAAO,MAAM,OAAO,SAXJ,MAAM,WAWa,CAAC"}
package/dist/colors.js ADDED
@@ -0,0 +1,13 @@
1
+ const enabled = process.stdout.isTTY !== false;
2
+ function wrap(code, resetCode) {
3
+ return (text) => enabled ? `\x1b[${code}m${text}\x1b[${resetCode}m` : text;
4
+ }
5
+ export const bold = wrap(1, 22);
6
+ export const dim = wrap(2, 22);
7
+ export const green = wrap(32, 39);
8
+ export const yellow = wrap(33, 39);
9
+ export const red = wrap(31, 39);
10
+ export const cyan = wrap(36, 39);
11
+ export const gray = wrap(90, 39);
12
+ export const magenta = wrap(35, 39);
13
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;AAE/C,SAAS,IAAI,CAAC,IAAY,EAAE,SAAiB;IAC3C,OAAO,CAAC,IAAY,EAAE,EAAE,CACtB,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,QAAQ,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function amendCommand(options?: {
2
+ dryRun?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=amend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amend.d.ts","sourceRoot":"","sources":["../../src/commands/amend.ts"],"names":[],"mappings":"AA4CA,wBAAsB,YAAY,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA2HpF"}
@@ -0,0 +1,138 @@
1
+ import { confirm, input, select, search } from "@inquirer/prompts";
2
+ import { execSync } from "child_process";
3
+ import { loadConfig } from "../config.js";
4
+ import { inferTicket } from "../git.js";
5
+ import { bold, dim, green, yellow, cyan } from "../colors.js";
6
+ function getLastCommitMessage() {
7
+ return execSync("git log -1 --format=%s", { encoding: "utf-8" }).trim();
8
+ }
9
+ function parseCommitMessage(msg, format) {
10
+ // Try to parse the default format: type[ticket]!(scope): message
11
+ const match = msg.match(/^(\w+)\[([^\]]*)\](!?)\(([^)]*)\): (.+)$/);
12
+ if (match) {
13
+ return {
14
+ type: match[1],
15
+ ticket: match[2],
16
+ breaking: match[3] === "!",
17
+ scope: match[4],
18
+ message: match[5],
19
+ };
20
+ }
21
+ // Try standard conventional commit: type(scope): message
22
+ const conventional = msg.match(/^(\w+)(!?)\(([^)]*)\): (.+)$/);
23
+ if (conventional) {
24
+ return {
25
+ type: conventional[1],
26
+ breaking: conventional[2] === "!",
27
+ scope: conventional[3],
28
+ message: conventional[4],
29
+ };
30
+ }
31
+ // Fallback: treat whole thing as message
32
+ return { message: msg, breaking: false };
33
+ }
34
+ export async function amendCommand(options = {}) {
35
+ try {
36
+ const config = loadConfig();
37
+ const lastMessage = getLastCommitMessage();
38
+ const parsed = parseCommitMessage(lastMessage, config.commitFormat);
39
+ console.log(`\n${dim("Last commit:")} ${lastMessage}\n`);
40
+ const editMessage = await confirm({
41
+ message: "Edit commit message?",
42
+ default: true,
43
+ });
44
+ let newMessage = lastMessage;
45
+ if (editMessage) {
46
+ const type = await select({
47
+ message: "Select commit type:",
48
+ choices: config.commitTypes.map((t) => ({ value: t.value, name: t.label })),
49
+ default: parsed.type,
50
+ });
51
+ let finalScope;
52
+ if (config.scopes.length > 0) {
53
+ finalScope = await search({
54
+ message: parsed.scope
55
+ ? `Select scope (current: ${cyan(parsed.scope)}):`
56
+ : "Select scope (type to filter):",
57
+ source: (term) => {
58
+ const filtered = config.scopes.filter((s) => !term ||
59
+ s.value.includes(term.toLowerCase()) ||
60
+ s.description.toLowerCase().includes(term.toLowerCase()));
61
+ if (parsed.scope) {
62
+ filtered.sort((a, b) => a.value === parsed.scope ? -1 : b.value === parsed.scope ? 1 : 0);
63
+ }
64
+ return filtered.map((s) => ({
65
+ value: s.value,
66
+ name: `${s.value} — ${s.description}`,
67
+ }));
68
+ },
69
+ });
70
+ }
71
+ else {
72
+ finalScope = await input({
73
+ message: "Enter scope (optional):",
74
+ default: parsed.scope,
75
+ });
76
+ }
77
+ const message = await input({
78
+ message: "Enter commit message:",
79
+ default: parsed.message,
80
+ validate: (val) => val.trim().length > 0 || "Commit message is required",
81
+ });
82
+ const isBreaking = await confirm({
83
+ message: "Is this a breaking change?",
84
+ default: parsed.breaking,
85
+ });
86
+ const ticket = parsed.ticket || inferTicket();
87
+ const breaking = isBreaking ? "!" : "";
88
+ const scope = finalScope || "";
89
+ // Build using format
90
+ let result = config.commitFormat;
91
+ result = result.replace("{type}", type);
92
+ result = result.replace("{ticket}", ticket);
93
+ result = result.replace("{breaking}", breaking);
94
+ result = result.replace("{scope}", scope);
95
+ result = result.replace("{message}", message.trim());
96
+ result = result.replace(/\[\]/g, "");
97
+ result = result.replace(/\(\)/g, "");
98
+ newMessage = result;
99
+ }
100
+ // Check for additional staged changes
101
+ const staged = execSync("git diff --cached --name-only", { encoding: "utf-8" }).trim();
102
+ if (staged) {
103
+ console.log(dim("\nStaged changes will be included:"));
104
+ staged.split("\n").forEach((f) => console.log(dim(` ${f}`)));
105
+ }
106
+ console.log(`\n${dim("───")} ${bold("Amend Preview")} ${dim("───")}`);
107
+ console.log(`${dim("Before:")} ${yellow(lastMessage)}`);
108
+ console.log(`${dim("After:")} ${green(newMessage)}`);
109
+ if (staged) {
110
+ console.log(`${dim("Files:")} +${staged.split("\n").length} staged`);
111
+ }
112
+ console.log(`${dim("───────────────────")}\n`);
113
+ if (options.dryRun) {
114
+ console.log(dim("[dry-run] No amend performed."));
115
+ return;
116
+ }
117
+ const confirmed = await confirm({
118
+ message: "Amend this commit?",
119
+ default: true,
120
+ });
121
+ if (!confirmed) {
122
+ console.log("Aborted.");
123
+ process.exit(0);
124
+ }
125
+ execSync(`git commit --amend -m ${JSON.stringify(newMessage)}`, {
126
+ stdio: "inherit",
127
+ });
128
+ console.log(green("✓ Commit amended successfully."));
129
+ }
130
+ catch (error) {
131
+ if (error.name === "ExitPromptError") {
132
+ console.log("\nCancelled.");
133
+ process.exit(0);
134
+ }
135
+ process.exit(1);
136
+ }
137
+ }
138
+ //# sourceMappingURL=amend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amend.js","sourceRoot":"","sources":["../../src/commands/amend.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,4 @@
1
- export declare function branchCommand(): Promise<void>;
1
+ export declare function branchCommand(options?: {
2
+ dryRun?: boolean;
3
+ }): Promise<void>;
2
4
  //# sourceMappingURL=branch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/commands/branch.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAiDnD"}
1
+ {"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/commands/branch.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDrF"}
@@ -1,7 +1,8 @@
1
1
  import { select, input, confirm } from "@inquirer/prompts";
2
2
  import { execSync } from "child_process";
3
3
  import { loadConfig } from "../config.js";
4
- export async function branchCommand() {
4
+ import { bold, dim, green, cyan } from "../colors.js";
5
+ export async function branchCommand(options = {}) {
5
6
  try {
6
7
  const config = loadConfig();
7
8
  const type = await select({
@@ -22,9 +23,13 @@ export async function branchCommand() {
22
23
  .replace(/[^a-z0-9]+/g, "-")
23
24
  .replace(/^-|-$/g, "");
24
25
  const branchName = `${type}/${ticketPart}_${kebab}`;
25
- console.log(`\n--- Branch Preview ---`);
26
- console.log(branchName);
27
- console.log(`---------------------\n`);
26
+ console.log(`\n${dim("───")} ${bold("Branch Preview")} ${dim("───")}`);
27
+ console.log(cyan(branchName));
28
+ console.log(`${dim("───────────────────")}\n`);
29
+ if (options.dryRun) {
30
+ console.log(dim("[dry-run] No branch created."));
31
+ return;
32
+ }
28
33
  const confirmed = await confirm({
29
34
  message: "Create this branch?",
30
35
  default: true,
@@ -34,7 +39,7 @@ export async function branchCommand() {
34
39
  process.exit(0);
35
40
  }
36
41
  execSync(`git checkout -b ${branchName}`, { stdio: "inherit" });
37
- console.log(`Branch created and checked out: ${branchName}`);
42
+ console.log(green(`✓ Branch created: ${branchName}`));
38
43
  }
39
44
  catch (error) {
40
45
  if (error.name === "ExitPromptError") {
@@ -1 +1 @@
1
- {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/commands/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC;YACxB,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;SAChE,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;YACzB,OAAO,EAAE,4CAA4C;SACtD,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC;YAC9B,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,yBAAyB;SACtE,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC;QAChD,MAAM,KAAK,GAAG,WAAW;aACtB,IAAI,EAAE;aACN,WAAW,EAAE;aACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;aAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzB,MAAM,UAAU,GAAG,GAAG,IAAI,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QAEpD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAEvC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,QAAQ,CAAC,mBAAmB,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAe,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/commands/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAgC,EAAE;IACpE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC;YACxB,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;SAChE,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;YACzB,OAAO,EAAE,4CAA4C;SACtD,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC;YAC9B,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,yBAAyB;SACtE,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC;QAChD,MAAM,KAAK,GAAG,WAAW;aACtB,IAAI,EAAE;aACN,WAAW,EAAE;aACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;aAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzB,MAAM,UAAU,GAAG,GAAG,IAAI,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QAEpD,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,QAAQ,CAAC,mBAAmB,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAe,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function changelogCommand(options?: {
2
+ dryRun?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=changelog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../src/commands/changelog.ts"],"names":[],"mappings":"AAuIA,wBAAsB,gBAAgB,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsExF"}