@alejandrochaves/devflow-cli 0.3.1 → 0.4.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 (39) hide show
  1. package/README.md +129 -4
  2. package/dist/commands/commit.d.ts.map +1 -1
  3. package/dist/commands/commit.js +37 -2
  4. package/dist/commands/commit.js.map +1 -1
  5. package/dist/commands/lint-config.d.ts +2 -0
  6. package/dist/commands/lint-config.d.ts.map +1 -0
  7. package/dist/commands/lint-config.js +91 -0
  8. package/dist/commands/lint-config.js.map +1 -0
  9. package/dist/commands/log.d.ts +2 -0
  10. package/dist/commands/log.d.ts.map +1 -0
  11. package/dist/commands/log.js +89 -0
  12. package/dist/commands/log.js.map +1 -0
  13. package/dist/commands/release.d.ts +4 -0
  14. package/dist/commands/release.d.ts.map +1 -0
  15. package/dist/commands/release.js +196 -0
  16. package/dist/commands/release.js.map +1 -0
  17. package/dist/commands/review.d.ts +2 -0
  18. package/dist/commands/review.d.ts.map +1 -0
  19. package/dist/commands/review.js +109 -0
  20. package/dist/commands/review.js.map +1 -0
  21. package/dist/commands/stash.d.ts +2 -0
  22. package/dist/commands/stash.d.ts.map +1 -0
  23. package/dist/commands/stash.js +139 -0
  24. package/dist/commands/stash.js.map +1 -0
  25. package/dist/commands/stats.d.ts +2 -0
  26. package/dist/commands/stats.d.ts.map +1 -0
  27. package/dist/commands/stats.js +98 -0
  28. package/dist/commands/stats.js.map +1 -0
  29. package/dist/commands/worktree.d.ts +2 -0
  30. package/dist/commands/worktree.d.ts.map +1 -0
  31. package/dist/commands/worktree.js +132 -0
  32. package/dist/commands/worktree.js.map +1 -0
  33. package/dist/index.js +52 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/plugins.d.ts +3 -0
  36. package/dist/plugins.d.ts.map +1 -0
  37. package/dist/plugins.js +69 -0
  38. package/dist/plugins.js.map +1 -0
  39. package/package.json +1 -1
@@ -0,0 +1,132 @@
1
+ import { select, input, confirm } from "@inquirer/prompts";
2
+ import { execSync } from "child_process";
3
+ import { bold, dim, green, cyan, yellow, red } from "../colors.js";
4
+ function listWorktrees() {
5
+ try {
6
+ const result = execSync("git worktree list --porcelain", { encoding: "utf-8" }).trim();
7
+ if (!result)
8
+ return [];
9
+ const trees = [];
10
+ let current = {};
11
+ for (const line of result.split("\n")) {
12
+ if (line.startsWith("worktree ")) {
13
+ if (current.path)
14
+ trees.push(current);
15
+ current = { path: line.substring(9), bare: false };
16
+ }
17
+ else if (line.startsWith("branch ")) {
18
+ current.branch = line.substring(7).replace("refs/heads/", "");
19
+ }
20
+ else if (line === "bare") {
21
+ current.bare = true;
22
+ }
23
+ }
24
+ if (current.path)
25
+ trees.push(current);
26
+ return trees;
27
+ }
28
+ catch {
29
+ return [];
30
+ }
31
+ }
32
+ function getRepoRoot() {
33
+ return execSync("git rev-parse --show-toplevel", { encoding: "utf-8" }).trim();
34
+ }
35
+ export async function worktreeCommand() {
36
+ try {
37
+ const trees = listWorktrees();
38
+ console.log(`\n${dim("───")} ${bold("Worktrees")} ${dim("───")}\n`);
39
+ if (trees.length > 0) {
40
+ for (const tree of trees) {
41
+ const isCurrent = tree.path === getRepoRoot();
42
+ const marker = isCurrent ? cyan("● ") : " ";
43
+ console.log(`${marker}${tree.branch || dim("(bare)")} ${dim(`→ ${tree.path}`)}`);
44
+ }
45
+ console.log("");
46
+ }
47
+ const action = await select({
48
+ message: "Action:",
49
+ choices: [
50
+ { value: "add", name: "Add a new worktree" },
51
+ ...(trees.length > 1
52
+ ? [{ value: "remove", name: "Remove a worktree" }]
53
+ : []),
54
+ { value: "done", name: "Done" },
55
+ ],
56
+ });
57
+ if (action === "add") {
58
+ const branch = await input({
59
+ message: "Branch name for new worktree:",
60
+ validate: (val) => val.trim().length > 0 || "Branch name is required",
61
+ });
62
+ const root = getRepoRoot();
63
+ const defaultPath = `${root}-${branch.trim().replace(/\//g, "-")}`;
64
+ const path = await input({
65
+ message: "Worktree path:",
66
+ default: defaultPath,
67
+ });
68
+ // Check if branch exists
69
+ let branchExists = false;
70
+ try {
71
+ execSync(`git rev-parse --verify ${branch.trim()}`, { stdio: "ignore" });
72
+ branchExists = true;
73
+ }
74
+ catch {
75
+ // Branch doesn't exist
76
+ }
77
+ const createFlag = branchExists ? "" : "-b ";
78
+ try {
79
+ execSync(`git worktree add ${JSON.stringify(path.trim())} ${createFlag}${branch.trim()}`, {
80
+ stdio: "inherit",
81
+ });
82
+ console.log(green(`✓ Created worktree at ${path.trim()}`));
83
+ console.log(dim(` cd ${path.trim()}`));
84
+ }
85
+ catch {
86
+ console.log(red("✗ Failed to create worktree"));
87
+ }
88
+ }
89
+ else if (action === "remove") {
90
+ const removable = trees.filter((t) => t.path !== getRepoRoot() && !t.bare);
91
+ if (removable.length === 0) {
92
+ console.log("No removable worktrees.");
93
+ return;
94
+ }
95
+ const selected = await select({
96
+ message: "Select worktree to remove:",
97
+ choices: removable.map((t) => ({
98
+ value: t.path,
99
+ name: `${t.branch} ${dim(`→ ${t.path}`)}`,
100
+ })),
101
+ });
102
+ const confirmed = await confirm({
103
+ message: `Remove worktree at ${selected}?`,
104
+ default: false,
105
+ });
106
+ if (confirmed) {
107
+ try {
108
+ execSync(`git worktree remove ${JSON.stringify(selected)}`, { stdio: "inherit" });
109
+ console.log(green("✓ Worktree removed"));
110
+ }
111
+ catch {
112
+ const force = await confirm({
113
+ message: "Worktree has changes. Force remove?",
114
+ default: false,
115
+ });
116
+ if (force) {
117
+ execSync(`git worktree remove --force ${JSON.stringify(selected)}`, { stdio: "inherit" });
118
+ console.log(yellow("✓ Force removed worktree"));
119
+ }
120
+ }
121
+ }
122
+ }
123
+ }
124
+ catch (error) {
125
+ if (error.name === "ExitPromptError") {
126
+ console.log("\nCancelled.");
127
+ process.exit(0);
128
+ }
129
+ process.exit(1);
130
+ }
131
+ }
132
+ //# sourceMappingURL=worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/commands/worktree.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -14,6 +14,14 @@ import { undoCommand } from "./commands/undo.js";
14
14
  import { mergeCommand } from "./commands/merge.js";
15
15
  import { fixupCommand } from "./commands/fixup.js";
16
16
  import { testPlanCommand } from "./commands/test-plan.js";
17
+ import { releaseCommand } from "./commands/release.js";
18
+ import { reviewCommand } from "./commands/review.js";
19
+ import { stashCommand } from "./commands/stash.js";
20
+ import { worktreeCommand } from "./commands/worktree.js";
21
+ import { logCommand } from "./commands/log.js";
22
+ import { statsCommand } from "./commands/stats.js";
23
+ import { lintConfigCommand } from "./commands/lint-config.js";
24
+ import { loadPlugins } from "./plugins.js";
17
25
  import { checkForUpdates } from "./update-notifier.js";
18
26
  const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf-8"));
19
27
  // Check for updates (non-blocking, cached)
@@ -66,6 +74,31 @@ program
66
74
  .description("Merge the current branch PR with squash/merge/rebase")
67
75
  .option("--dry-run", "Preview without executing git commands")
68
76
  .action((opts) => mergeCommand(opts));
77
+ program
78
+ .command("release")
79
+ .alias("rel")
80
+ .description("Create a release with version bump, changelog, tag, and GitHub release")
81
+ .action(releaseCommand);
82
+ program
83
+ .command("review")
84
+ .alias("rv")
85
+ .description("List and interact with open pull requests")
86
+ .action(reviewCommand);
87
+ program
88
+ .command("stash")
89
+ .alias("st")
90
+ .description("Save, pop, apply, or drop named stashes")
91
+ .action(stashCommand);
92
+ program
93
+ .command("worktree")
94
+ .alias("wt")
95
+ .description("Manage git worktrees for parallel branch work")
96
+ .action(worktreeCommand);
97
+ program
98
+ .command("log")
99
+ .alias("l")
100
+ .description("Interactive commit log with cherry-pick, revert, and fixup actions")
101
+ .action(logCommand);
69
102
  // --- Info commands ---
70
103
  program
71
104
  .command("status")
@@ -87,6 +120,15 @@ program
87
120
  .description("Delete local branches that have been merged or whose remote is gone")
88
121
  .option("--dry-run", "Preview without deleting branches")
89
122
  .action((opts) => cleanupCommand(opts));
123
+ program
124
+ .command("stats")
125
+ .description("Show commit type distribution, top scopes, and contributor stats")
126
+ .action(statsCommand);
127
+ program
128
+ .command("lint-config")
129
+ .alias("lint")
130
+ .description("Validate .devflow.json for errors and warnings (CI-friendly)")
131
+ .action(lintConfigCommand);
90
132
  // --- Setup commands ---
91
133
  program
92
134
  .command("init")
@@ -108,13 +150,15 @@ program
108
150
  console.log(generateZshCompletions());
109
151
  }
110
152
  });
153
+ // Load plugins before parsing
154
+ await loadPlugins(program);
111
155
  program.parse();
112
156
  function generateBashCompletions() {
113
157
  return `# devflow bash completions
114
158
  # Add to ~/.bashrc: eval "$(devflow completions --shell bash)"
115
159
  _devflow_completions() {
116
160
  local cur="\${COMP_WORDS[COMP_CWORD]}"
117
- local commands="branch commit pr amend undo fixup merge status test-plan changelog cleanup init doctor completions"
161
+ local commands="branch commit pr amend undo fixup merge release review stash worktree log status test-plan changelog cleanup stats lint-config init doctor completions"
118
162
 
119
163
  if [ "\${COMP_CWORD}" -eq 1 ]; then
120
164
  COMPREPLY=($(compgen -W "\${commands}" -- "\${cur}"))
@@ -137,10 +181,17 @@ _devflow() {
137
181
  'undo:Undo the last commit (alias: u)'
138
182
  'fixup:Create a fixup commit (alias: f)'
139
183
  'merge:Merge the current PR (alias: m)'
184
+ 'release:Create a release (alias: rel)'
185
+ 'review:List and interact with PRs (alias: rv)'
186
+ 'stash:Manage named stashes (alias: st)'
187
+ 'worktree:Manage git worktrees (alias: wt)'
188
+ 'log:Interactive commit log (alias: l)'
140
189
  'status:Show branch and PR info (alias: s)'
141
190
  'test-plan:View or edit test plan (alias: tp)'
142
191
  'changelog:Generate changelog from commits'
143
192
  'cleanup:Delete merged local branches'
193
+ 'stats:Show commit and contributor stats'
194
+ 'lint-config:Validate .devflow.json (alias: lint)'
144
195
  'init:Initialize devflow config'
145
196
  'doctor:Check devflow dependencies'
146
197
  'completions:Output shell completion script'
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3F,2CAA2C;AAC3C,eAAe,EAAE,CAAC;AAElB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,8EAA8E,CAAC;KAC3F,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,wBAAwB;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;KAC7D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAEzC,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;KAC7D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAEzC,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;KAC7D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAErC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;KAC7D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAExC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;KAC7D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;KAC7D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAExC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;KAC7D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAExC,wBAAwB;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,WAAW,EAAE,iCAAiC,CAAC;KACtD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAE5C,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,qEAAqE,CAAC;KAClF,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;KACxD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1C,yBAAyB;AAEzB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,KAAK,CAAC;KAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACxC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,SAAS,uBAAuB;IAC9B,OAAO;;;;;;;;;;;;yCAYgC,CAAC;AAC1C,CAAC;AAED,SAAS,sBAAsB;IAC7B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAyCgB,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function loadPlugins(program: Command, cwd?: string): Promise<void>;
3
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDpC,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB9F"}
@@ -0,0 +1,69 @@
1
+ import { existsSync, readFileSync } from "fs";
2
+ import { resolve } from "path";
3
+ import { yellow } from "./colors.js";
4
+ const PLUGIN_PREFIX = "devflow-plugin-";
5
+ function findPlugins(cwd) {
6
+ const plugins = [];
7
+ // Check package.json for devflow plugins in dependencies
8
+ const pkgPath = resolve(cwd, "package.json");
9
+ if (existsSync(pkgPath)) {
10
+ try {
11
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
12
+ const allDeps = {
13
+ ...pkg.dependencies,
14
+ ...pkg.devDependencies,
15
+ };
16
+ for (const dep of Object.keys(allDeps || {})) {
17
+ if (dep.startsWith(PLUGIN_PREFIX) || dep.startsWith("@") && dep.includes(`/${PLUGIN_PREFIX}`)) {
18
+ plugins.push(dep);
19
+ }
20
+ }
21
+ }
22
+ catch {
23
+ // ignore
24
+ }
25
+ }
26
+ // Check .devflow.json for explicit plugin list
27
+ const configPath = resolve(cwd, ".devflow.json");
28
+ if (existsSync(configPath)) {
29
+ try {
30
+ const config = JSON.parse(readFileSync(configPath, "utf-8"));
31
+ if (Array.isArray(config.plugins)) {
32
+ for (const plugin of config.plugins) {
33
+ if (!plugins.includes(plugin)) {
34
+ plugins.push(plugin);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ catch {
40
+ // ignore
41
+ }
42
+ }
43
+ return plugins;
44
+ }
45
+ export async function loadPlugins(program, cwd = process.cwd()) {
46
+ const plugins = findPlugins(cwd);
47
+ for (const pluginName of plugins) {
48
+ try {
49
+ // Try to resolve the plugin from node_modules
50
+ const pluginPath = resolve(cwd, "node_modules", pluginName);
51
+ if (!existsSync(pluginPath))
52
+ continue;
53
+ const pkgJson = resolve(pluginPath, "package.json");
54
+ if (!existsSync(pkgJson))
55
+ continue;
56
+ const pkg = JSON.parse(readFileSync(pkgJson, "utf-8"));
57
+ const mainFile = pkg.main || pkg.exports?.["."] || "index.js";
58
+ const entryPoint = resolve(pluginPath, mainFile);
59
+ const mod = await import(entryPoint);
60
+ if (typeof mod.register === "function") {
61
+ mod.register(program);
62
+ }
63
+ }
64
+ catch (err) {
65
+ console.error(yellow(`⚠ Failed to load plugin: ${pluginName}`));
66
+ }
67
+ }
68
+ }
69
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alejandrochaves/devflow-cli",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Interactive CLI for branch creation, conventional commits, and PR management",
5
5
  "type": "module",
6
6
  "bin": {