@alejandrochaves/devflow-cli 0.3.1 → 0.5.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 (43) hide show
  1. package/README.md +145 -4
  2. package/dist/commands/comments.d.ts +4 -0
  3. package/dist/commands/comments.d.ts.map +1 -0
  4. package/dist/commands/comments.js +173 -0
  5. package/dist/commands/comments.js.map +1 -0
  6. package/dist/commands/commit.d.ts.map +1 -1
  7. package/dist/commands/commit.js +37 -2
  8. package/dist/commands/commit.js.map +1 -1
  9. package/dist/commands/lint-config.d.ts +2 -0
  10. package/dist/commands/lint-config.d.ts.map +1 -0
  11. package/dist/commands/lint-config.js +91 -0
  12. package/dist/commands/lint-config.js.map +1 -0
  13. package/dist/commands/log.d.ts +2 -0
  14. package/dist/commands/log.d.ts.map +1 -0
  15. package/dist/commands/log.js +89 -0
  16. package/dist/commands/log.js.map +1 -0
  17. package/dist/commands/release.d.ts +4 -0
  18. package/dist/commands/release.d.ts.map +1 -0
  19. package/dist/commands/release.js +196 -0
  20. package/dist/commands/release.js.map +1 -0
  21. package/dist/commands/review.d.ts +2 -0
  22. package/dist/commands/review.d.ts.map +1 -0
  23. package/dist/commands/review.js +109 -0
  24. package/dist/commands/review.js.map +1 -0
  25. package/dist/commands/stash.d.ts +2 -0
  26. package/dist/commands/stash.d.ts.map +1 -0
  27. package/dist/commands/stash.js +139 -0
  28. package/dist/commands/stash.js.map +1 -0
  29. package/dist/commands/stats.d.ts +2 -0
  30. package/dist/commands/stats.d.ts.map +1 -0
  31. package/dist/commands/stats.js +98 -0
  32. package/dist/commands/stats.js.map +1 -0
  33. package/dist/commands/worktree.d.ts +2 -0
  34. package/dist/commands/worktree.d.ts.map +1 -0
  35. package/dist/commands/worktree.js +132 -0
  36. package/dist/commands/worktree.js.map +1 -0
  37. package/dist/index.js +60 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/plugins.d.ts +3 -0
  40. package/dist/plugins.d.ts.map +1 -0
  41. package/dist/plugins.js +69 -0
  42. package/dist/plugins.js.map +1 -0
  43. package/package.json +6 -2
package/README.md CHANGED
@@ -82,9 +82,11 @@ Interactive conventional commit with file staging, scope selection, and ticket i
82
82
  1. If no files are staged, select files to stage (checkbox selection)
83
83
  2. Select commit type
84
84
  3. Select or enter scope (searchable list if configured, free text otherwise)
85
- 4. Enter commit message
86
- 5. Confirm if breaking change
87
- 6. Preview and confirm
85
+ 4. Enter commit subject
86
+ 5. Optional: enter commit body (longer description)
87
+ 6. Confirm if breaking change (adds `BREAKING CHANGE:` footer)
88
+ 7. Optional: enter ticket reference (added as `Refs: TICKET` footer)
89
+ 8. Preview and confirm
88
90
 
89
91
  **Commit format:**
90
92
  ```
@@ -153,6 +155,106 @@ When you run `devflow pr`, stored test plan steps auto-populate the "Test Plan"
153
155
  - [ ] Confirm logout clears session data
154
156
  ```
155
157
 
158
+ ### `devflow release` (alias: `rel`)
159
+
160
+ Automated release flow: version bump, changelog update, git tag, push, and GitHub release.
161
+
162
+ **Flow:**
163
+ 1. Detects current version from `package.json`
164
+ 2. Analyzes commits since last tag to suggest bump type (patch/minor/major)
165
+ 3. Confirm version
166
+ 4. Updates `CHANGELOG.md` with grouped commits
167
+ 5. Commits version bump and changelog
168
+ 6. Creates git tag
169
+ 7. Pushes tag and commits
170
+ 8. Creates GitHub release with changelog body
171
+
172
+ Requires `gh` CLI for the GitHub release step.
173
+
174
+ ### `devflow review` (alias: `rv`)
175
+
176
+ List and interact with open pull requests.
177
+
178
+ **Flow:**
179
+ 1. Lists open PRs for the repo with author, title, and status
180
+ 2. Select a PR to inspect
181
+ 3. Shows diff stat summary
182
+ 4. Choose an action: checkout, approve, comment, request changes, or open in browser
183
+
184
+ Requires `gh` CLI.
185
+
186
+ ### `devflow comments` (alias: `cm`)
187
+
188
+ Show PR reviews and inline comments with diff context. Displays all reviews and inline code comments grouped by file, with the surrounding diff hunk so you can see exactly what was commented on.
189
+
190
+ **Usage:**
191
+ ```bash
192
+ # Comments for the current branch's PR
193
+ devflow comments
194
+
195
+ # Comments for a specific PR
196
+ devflow comments --number 303
197
+ ```
198
+
199
+ Requires `gh` CLI.
200
+
201
+ ### `devflow stash` (alias: `st`)
202
+
203
+ Named stash management with an interactive interface.
204
+
205
+ **Actions:**
206
+ - **Save** — stash with a descriptive name, optionally include untracked files
207
+ - **Pop** — apply and remove a stash
208
+ - **Apply** — apply without removing
209
+ - **Drop** — delete a stash
210
+ - **Show** — view the stash diff
211
+
212
+ ### `devflow worktree` (alias: `wt`)
213
+
214
+ Manage git worktrees for working on multiple branches in parallel.
215
+
216
+ **Actions:**
217
+ - **Add** — create a new worktree (auto-creates branch if needed), suggests a path based on repo root
218
+ - **Remove** — select and remove a worktree (with force option for dirty trees)
219
+
220
+ Shows all existing worktrees with the current one highlighted.
221
+
222
+ ### `devflow log` (alias: `l`)
223
+
224
+ Interactive commit history with actions.
225
+
226
+ **Flow:**
227
+ 1. Shows commits on the current branch (since diverging from base)
228
+ 2. Select a commit to inspect
229
+ 3. Shows commit details and file stats
230
+ 4. Choose an action: cherry-pick, revert, create fixup, or view full diff
231
+
232
+ ### `devflow stats`
233
+
234
+ Show commit pattern analytics for the repository:
235
+
236
+ - **Commit types** — distribution with bar chart (feat, fix, chore, etc.)
237
+ - **Top scopes** — most frequently used scopes
238
+ - **Contributors** — commit counts per author
239
+ - **Summary** — total commits, local branches, first commit date
240
+
241
+ ### `devflow lint-config` (alias: `lint`)
242
+
243
+ Validate `.devflow.json` for errors and warnings. Designed to run in CI pipelines (exits with code 1 on errors).
244
+
245
+ **Checks:**
246
+ - Valid JSON syntax
247
+ - Config structure validation (via `validateConfig`)
248
+ - Scopes have descriptions
249
+ - Scope path patterns contain globs or path separators
250
+ - PR template sections are recognized values
251
+ - Commit format placeholders are valid
252
+
253
+ ```bash
254
+ # In CI
255
+ npx devflow lint-config
256
+ ```
257
+
156
258
  ### `devflow undo` (alias: `u`)
157
259
 
158
260
  Undo the last commit, keeping changes staged. Shows a preview of the commit that will be undone before confirming.
@@ -208,7 +310,7 @@ Generates a changelog entry from conventional commits since the last git tag:
208
310
  ### `devflow doctor`
209
311
 
210
312
  Checks that all devflow dependencies are properly configured:
211
- - git, node (>= 18), gh CLI + auth
313
+ - git, node (>= 20), gh CLI + auth
212
314
  - `.devflow.json`, commitlint config, husky hooks
213
315
  - `package.json` scripts
214
316
 
@@ -235,8 +337,15 @@ eval "$(devflow completions --shell bash)"
235
337
  | `devflow undo` | `devflow u` |
236
338
  | `devflow fixup` | `devflow f` |
237
339
  | `devflow merge` | `devflow m` |
340
+ | `devflow release` | `devflow rel` |
341
+ | `devflow review` | `devflow rv` |
342
+ | `devflow comments` | `devflow cm` |
343
+ | `devflow stash` | `devflow st` |
344
+ | `devflow worktree` | `devflow wt` |
345
+ | `devflow log` | `devflow l` |
238
346
  | `devflow status` | `devflow s` |
239
347
  | `devflow test-plan` | `devflow tp` |
348
+ | `devflow lint-config` | `devflow lint` |
240
349
 
241
350
  ## Global Options
242
351
 
@@ -401,6 +510,38 @@ devflow checks for newer versions on npm once every 24 hours and displays a non-
401
510
  ─ Update available: 0.2.0 → 0.3.0 (npm update @alejandrochaves/devflow-cli) ─
402
511
  ```
403
512
 
513
+ ## Plugins
514
+
515
+ Extend devflow with custom commands via the plugin system. Plugins are automatically discovered from:
516
+
517
+ 1. **npm packages** — any dependency matching `devflow-plugin-*` or `@scope/devflow-plugin-*`
518
+ 2. **Config** — explicit list in `.devflow.json`:
519
+
520
+ ```json
521
+ {
522
+ "plugins": ["devflow-plugin-jira", "@myorg/devflow-plugin-deploy"]
523
+ }
524
+ ```
525
+
526
+ ### Writing a Plugin
527
+
528
+ A plugin is an npm package that exports a `register` function:
529
+
530
+ ```typescript
531
+ import { Command } from "commander";
532
+
533
+ export function register(program: Command): void {
534
+ program
535
+ .command("deploy")
536
+ .description("Deploy the current branch")
537
+ .action(() => {
538
+ // your logic here
539
+ });
540
+ }
541
+ ```
542
+
543
+ Plugins receive the Commander `program` instance and can add commands, options, or hooks.
544
+
404
545
  ## Requirements
405
546
 
406
547
  - Node.js >= 20.12
@@ -0,0 +1,4 @@
1
+ export declare function commentsCommand(opts: {
2
+ number?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=comments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/commands/comments.ts"],"names":[],"mappings":"AAmHA,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8F9E"}
@@ -0,0 +1,173 @@
1
+ import { execSync } from "child_process";
2
+ import { bold, dim, cyan, yellow, green, magenta, gray } from "../colors.js";
3
+ import { checkGhInstalled } from "../git.js";
4
+ function getCurrentPr() {
5
+ try {
6
+ const result = execSync("gh pr view --json number,title,url", {
7
+ encoding: "utf-8",
8
+ stdio: ["pipe", "pipe", "ignore"],
9
+ }).trim();
10
+ return JSON.parse(result);
11
+ }
12
+ catch {
13
+ return undefined;
14
+ }
15
+ }
16
+ function getRepoInfo() {
17
+ try {
18
+ const result = execSync("gh repo view --json owner,name", {
19
+ encoding: "utf-8",
20
+ stdio: ["pipe", "pipe", "ignore"],
21
+ }).trim();
22
+ const data = JSON.parse(result);
23
+ return { owner: data.owner.login, repo: data.name };
24
+ }
25
+ catch {
26
+ return undefined;
27
+ }
28
+ }
29
+ function getInlineComments(owner, repo, prNumber) {
30
+ try {
31
+ const result = execSync(`gh api repos/${owner}/${repo}/pulls/${prNumber}/comments --jq '[.[] | {path: .path, line: .line, body: .body, diffHunk: .diff_hunk, author: .user.login, createdAt: .created_at}]'`, { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] }).trim();
32
+ return result ? JSON.parse(result) : [];
33
+ }
34
+ catch {
35
+ return [];
36
+ }
37
+ }
38
+ function getReviews(owner, repo, prNumber) {
39
+ try {
40
+ const result = execSync(`gh api repos/${owner}/${repo}/pulls/${prNumber}/reviews --jq '[.[] | {author: .user.login, state: .state, body: .body, submittedAt: .submitted_at}]'`, { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] }).trim();
41
+ return result ? JSON.parse(result) : [];
42
+ }
43
+ catch {
44
+ return [];
45
+ }
46
+ }
47
+ function formatState(state) {
48
+ switch (state) {
49
+ case "APPROVED":
50
+ return green("APPROVED");
51
+ case "CHANGES_REQUESTED":
52
+ return yellow("CHANGES REQUESTED");
53
+ case "COMMENTED":
54
+ return cyan("COMMENTED");
55
+ case "DISMISSED":
56
+ return gray("DISMISSED");
57
+ default:
58
+ return state;
59
+ }
60
+ }
61
+ function formatDiffHunk(hunk) {
62
+ const lines = hunk.split("\n").slice(-4); // Show last 4 lines of context
63
+ return lines
64
+ .map((line) => {
65
+ if (line.startsWith("+"))
66
+ return green(` ┃ ${line}`);
67
+ if (line.startsWith("-"))
68
+ return yellow(` ┃ ${line}`);
69
+ if (line.startsWith("@@"))
70
+ return dim(` ┃ ${line}`);
71
+ return gray(` ┃ ${line}`);
72
+ })
73
+ .join("\n");
74
+ }
75
+ function formatDate(iso) {
76
+ const date = new Date(iso);
77
+ const now = new Date();
78
+ const diffMs = now.getTime() - date.getTime();
79
+ const diffHours = Math.floor(diffMs / (1000 * 60 * 60));
80
+ const diffDays = Math.floor(diffHours / 24);
81
+ if (diffHours < 1)
82
+ return "just now";
83
+ if (diffHours < 24)
84
+ return `${diffHours}h ago`;
85
+ if (diffDays < 7)
86
+ return `${diffDays}d ago`;
87
+ return date.toLocaleDateString();
88
+ }
89
+ export async function commentsCommand(opts) {
90
+ checkGhInstalled();
91
+ const repoInfo = getRepoInfo();
92
+ if (!repoInfo) {
93
+ console.error("Error: Could not determine repository info.");
94
+ process.exit(1);
95
+ }
96
+ let prNumber;
97
+ let prTitle;
98
+ if (opts.number) {
99
+ prNumber = parseInt(opts.number, 10);
100
+ prTitle = `PR #${prNumber}`;
101
+ }
102
+ else {
103
+ const pr = getCurrentPr();
104
+ if (!pr) {
105
+ console.error("No PR found for the current branch. Use --number <n> to specify a PR.");
106
+ process.exit(1);
107
+ }
108
+ prNumber = pr.number;
109
+ prTitle = pr.title;
110
+ }
111
+ const reviews = getReviews(repoInfo.owner, repoInfo.repo, prNumber);
112
+ const comments = getInlineComments(repoInfo.owner, repoInfo.repo, prNumber);
113
+ console.log(`\n${dim("───")} ${cyan(`#${prNumber}`)} ${bold(prTitle)} ${dim("───")}\n`);
114
+ // Show reviews (top-level)
115
+ const meaningfulReviews = reviews.filter((r) => r.state !== "PENDING");
116
+ if (meaningfulReviews.length > 0) {
117
+ console.log(`${bold("Reviews")}\n`);
118
+ for (const review of meaningfulReviews) {
119
+ console.log(` ${magenta(`@${review.author}`)} ${formatState(review.state)} ${dim(formatDate(review.submittedAt))}`);
120
+ if (review.body && review.body.trim()) {
121
+ const bodyLines = review.body.trim().split("\n");
122
+ for (const line of bodyLines) {
123
+ console.log(` ${line}`);
124
+ }
125
+ }
126
+ console.log("");
127
+ }
128
+ }
129
+ // Show inline comments grouped by file
130
+ if (comments.length > 0) {
131
+ console.log(`${bold("Inline Comments")} ${dim(`(${comments.length})`)}\n`);
132
+ // Group by file
133
+ const byFile = new Map();
134
+ for (const comment of comments) {
135
+ const existing = byFile.get(comment.path) || [];
136
+ existing.push(comment);
137
+ byFile.set(comment.path, existing);
138
+ }
139
+ for (const [file, fileComments] of byFile) {
140
+ console.log(` ${cyan(file)}`);
141
+ for (const comment of fileComments) {
142
+ const lineInfo = comment.line ? `:${comment.line}` : "";
143
+ console.log(` ${dim(`line${lineInfo}`)} ${dim("·")} ${magenta(`@${comment.author}`)} ${dim(formatDate(comment.createdAt))}`);
144
+ if (comment.diffHunk) {
145
+ console.log(formatDiffHunk(comment.diffHunk));
146
+ }
147
+ const bodyLines = comment.body.trim().split("\n");
148
+ for (const line of bodyLines) {
149
+ console.log(` ${dim("│")} ${line}`);
150
+ }
151
+ console.log("");
152
+ }
153
+ }
154
+ }
155
+ if (meaningfulReviews.length === 0 && comments.length === 0) {
156
+ console.log(dim(" No reviews or comments yet."));
157
+ console.log("");
158
+ }
159
+ // Summary
160
+ const approvals = reviews.filter((r) => r.state === "APPROVED").length;
161
+ const changesRequested = reviews.filter((r) => r.state === "CHANGES_REQUESTED").length;
162
+ const parts = [];
163
+ if (approvals > 0)
164
+ parts.push(green(`${approvals} approval${approvals > 1 ? "s" : ""}`));
165
+ if (changesRequested > 0)
166
+ parts.push(yellow(`${changesRequested} change request${changesRequested > 1 ? "s" : ""}`));
167
+ if (comments.length > 0)
168
+ parts.push(cyan(`${comments.length} inline comment${comments.length > 1 ? "s" : ""}`));
169
+ if (parts.length > 0) {
170
+ console.log(`${dim("───")} ${parts.join(dim(" · "))} ${dim("───")}\n`);
171
+ }
172
+ }
173
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/commands/comments.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,EAAE,MAAM,cAAc,CAAC;AAIjD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,SAAS,CAqB9F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CASzE;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvF,MAAM,CAaR;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiLrF"}
1
+ {"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,EAAE,MAAM,cAAc,CAAC;AAIjD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,SAAS,CAqB9F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CASzE;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvF,MAAM,CAaR;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkNrF"}
@@ -170,15 +170,50 @@ export async function commitCommand(options = {}) {
170
170
  const ticket = inferTicket();
171
171
  const breaking = isBreaking ? "!" : "";
172
172
  const scope = finalScope || "";
173
- const fullMessage = formatCommitMessage(config.commitFormat, {
173
+ const subject = formatCommitMessage(config.commitFormat, {
174
174
  type,
175
175
  ticket,
176
176
  breaking,
177
177
  scope,
178
178
  message: message.trim(),
179
179
  });
180
+ // Optional body
181
+ const addBody = await confirm({
182
+ message: "Add a longer description (body)?",
183
+ default: false,
184
+ });
185
+ let body = "";
186
+ if (addBody) {
187
+ body = await input({
188
+ message: "Body (longer explanation):",
189
+ });
190
+ }
191
+ // Breaking change footer
192
+ let breakingFooter = "";
193
+ if (isBreaking) {
194
+ breakingFooter = await input({
195
+ message: "Describe the breaking change:",
196
+ validate: (val) => val.trim().length > 0 || "Breaking change description is required",
197
+ });
198
+ }
199
+ // Build full message
200
+ const parts = [subject];
201
+ if (body.trim())
202
+ parts.push(body.trim());
203
+ const footers = [];
204
+ if (breakingFooter.trim())
205
+ footers.push(`BREAKING CHANGE: ${breakingFooter.trim()}`);
206
+ if (ticket && ticket !== "UNTRACKED")
207
+ footers.push(`Refs: ${ticket}`);
208
+ if (footers.length > 0)
209
+ parts.push(footers.join("\n"));
210
+ const fullMessage = parts.join("\n\n");
180
211
  console.log(`\n${dim("───")} ${bold("Commit Preview")} ${dim("───")}`);
181
- console.log(green(fullMessage));
212
+ console.log(green(subject));
213
+ if (body.trim())
214
+ console.log(`\n${body.trim()}`);
215
+ if (footers.length > 0)
216
+ console.log(`\n${dim(footers.join("\n"))}`);
182
217
  console.log(`${dim("───────────────────")}\n`);
183
218
  if (options.dryRun) {
184
219
  console.log(dim("[dry-run] No commit created."));
@@ -1 +1 @@
1
- {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function lintConfigCommand(): void;
2
+ //# sourceMappingURL=lint-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint-config.d.ts","sourceRoot":"","sources":["../../src/commands/lint-config.ts"],"names":[],"mappings":"AAKA,wBAAgB,iBAAiB,IAAI,IAAI,CAgGxC"}
@@ -0,0 +1,91 @@
1
+ import { existsSync, readFileSync } from "fs";
2
+ import { resolve } from "path";
3
+ import { bold, dim, green, yellow, red } from "../colors.js";
4
+ import { validateConfig } from "../config.js";
5
+ export function lintConfigCommand() {
6
+ const cwd = process.cwd();
7
+ const configPath = resolve(cwd, ".devflow.json");
8
+ console.log(`\n${dim("───")} ${bold("Config Lint")} ${dim("───")}\n`);
9
+ if (!existsSync(configPath)) {
10
+ console.log(red("✗ No .devflow.json found"));
11
+ console.log(dim(" Run: devflow init"));
12
+ process.exit(1);
13
+ }
14
+ let raw;
15
+ try {
16
+ raw = JSON.parse(readFileSync(configPath, "utf-8"));
17
+ }
18
+ catch (err) {
19
+ console.log(red("✗ Invalid JSON in .devflow.json"));
20
+ console.log(dim(` ${err.message}`));
21
+ process.exit(1);
22
+ }
23
+ const warnings = validateConfig(raw);
24
+ // Additional checks for CI
25
+ const errors = [];
26
+ // Check scopes have descriptions
27
+ if (raw.scopes && Array.isArray(raw.scopes)) {
28
+ for (let i = 0; i < raw.scopes.length; i++) {
29
+ const scope = raw.scopes[i];
30
+ if (!scope.description) {
31
+ warnings.push({
32
+ field: `scopes[${i}]`,
33
+ message: `Scope "${scope.value}" is missing a description`,
34
+ });
35
+ }
36
+ if (scope.paths && Array.isArray(scope.paths)) {
37
+ for (const pattern of scope.paths) {
38
+ if (!pattern.includes("*") && !pattern.includes("/")) {
39
+ warnings.push({
40
+ field: `scopes[${i}].paths`,
41
+ message: `Pattern "${pattern}" may not match any files (missing glob or path separator)`,
42
+ });
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ // Check PR template sections are valid
49
+ if (raw.prTemplate && typeof raw.prTemplate === "object") {
50
+ const template = raw.prTemplate;
51
+ const validSections = ["summary", "ticket", "type", "screenshots", "testPlan", "checklist"];
52
+ if (template.sections && Array.isArray(template.sections)) {
53
+ for (const section of template.sections) {
54
+ if (!validSections.includes(section)) {
55
+ errors.push(`Unknown PR template section: "${section}"`);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ // Check commit format placeholders
61
+ if (raw.commitFormat && typeof raw.commitFormat === "string") {
62
+ const format = raw.commitFormat;
63
+ const validPlaceholders = ["{type}", "{ticket}", "{breaking}", "{scope}", "{message}"];
64
+ const found = format.match(/\{[^}]+\}/g) || [];
65
+ for (const ph of found) {
66
+ if (!validPlaceholders.includes(ph)) {
67
+ errors.push(`Unknown placeholder in commitFormat: "${ph}"`);
68
+ }
69
+ }
70
+ }
71
+ // Report
72
+ if (errors.length === 0 && warnings.length === 0) {
73
+ console.log(green("✓ .devflow.json is valid"));
74
+ return;
75
+ }
76
+ if (warnings.length > 0) {
77
+ console.log(yellow(`${warnings.length} warning(s):\n`));
78
+ for (const w of warnings) {
79
+ console.log(` ${yellow("⚠")} ${dim(`[${w.field}]`)} ${w.message}`);
80
+ }
81
+ }
82
+ if (errors.length > 0) {
83
+ console.log(red(`\n${errors.length} error(s):\n`));
84
+ for (const e of errors) {
85
+ console.log(` ${red("✗")} ${e}`);
86
+ }
87
+ process.exit(1);
88
+ }
89
+ console.log("");
90
+ }
91
+ //# sourceMappingURL=lint-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint-config.js","sourceRoot":"","sources":["../../src/commands/lint-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEtE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,GAA4B,CAAC;IACjC,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAErC,2BAA2B;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,iCAAiC;IACjC,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAA4B,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,UAAU,CAAC,GAAG;oBACrB,OAAO,EAAE,UAAU,KAAK,CAAC,KAAK,4BAA4B;iBAC3D,CAAC,CAAC;YACL,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAiB,EAAE,CAAC;oBAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrD,QAAQ,CAAC,IAAI,CAAC;4BACZ,KAAK,EAAE,UAAU,CAAC,SAAS;4BAC3B,OAAO,EAAE,YAAY,OAAO,4DAA4D;yBACzF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,IAAI,GAAG,CAAC,UAAU,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAqC,CAAC;QAC3D,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC5F,IAAI,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAoB,EAAE,CAAC;gBACpD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,iCAAiC,OAAO,GAAG,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,GAAG,CAAC,YAAY,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,GAAG,CAAC,YAAsB,CAAC;QAC1C,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACvF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC/C,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS;IACT,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function logCommand(): Promise<void>;
2
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"AA8BA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA0EhD"}