@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
@@ -0,0 +1,83 @@
1
+ import { execSync } from "child_process";
2
+ import { loadConfig } from "../config.js";
3
+ import { bold, dim, cyan, green, yellow, gray } from "../colors.js";
4
+ import { getBranch, parseBranch, getDefaultBase, getCommits } from "../git.js";
5
+ function getPrInfo() {
6
+ try {
7
+ const result = execSync("gh pr view --json url,number,state", {
8
+ encoding: "utf-8",
9
+ stdio: ["pipe", "pipe", "ignore"],
10
+ }).trim();
11
+ return JSON.parse(result);
12
+ }
13
+ catch {
14
+ return undefined;
15
+ }
16
+ }
17
+ function getUncommittedCount() {
18
+ const staged = execSync("git diff --cached --name-only", { encoding: "utf-8" }).trim();
19
+ const unstaged = execSync("git diff --name-only", { encoding: "utf-8" }).trim();
20
+ const untracked = execSync("git ls-files --others --exclude-standard", { encoding: "utf-8" }).trim();
21
+ return {
22
+ staged: staged ? staged.split("\n").length : 0,
23
+ unstaged: unstaged ? unstaged.split("\n").length : 0,
24
+ untracked: untracked ? untracked.split("\n").length : 0,
25
+ };
26
+ }
27
+ export async function statusCommand() {
28
+ const config = loadConfig();
29
+ const branch = getBranch();
30
+ const { type, ticket, description } = parseBranch(branch);
31
+ const base = getDefaultBase(branch);
32
+ const commits = getCommits(base);
33
+ const changes = getUncommittedCount();
34
+ const pr = getPrInfo();
35
+ console.log(`\n${dim("───")} ${bold("devflow status")} ${dim("───")}\n`);
36
+ // Branch info
37
+ console.log(`${dim("Branch:")} ${cyan(branch)}`);
38
+ if (type) {
39
+ console.log(`${dim("Type:")} ${type}`);
40
+ console.log(`${dim("Ticket:")} ${ticket === "UNTRACKED" ? yellow(ticket) : green(ticket)}`);
41
+ console.log(`${dim("Desc:")} ${description}`);
42
+ }
43
+ console.log(`${dim("Base:")} ${cyan(base)}`);
44
+ // Commits
45
+ console.log(`\n${dim("Commits:")} ${commits.length > 0 ? commits.length.toString() : gray("none")}`);
46
+ if (commits.length > 0) {
47
+ const shown = commits.slice(0, 5);
48
+ for (const c of shown) {
49
+ console.log(` ${dim("•")} ${c}`);
50
+ }
51
+ if (commits.length > 5) {
52
+ console.log(gray(` ... and ${commits.length - 5} more`));
53
+ }
54
+ }
55
+ // Working tree
56
+ const totalChanges = changes.staged + changes.unstaged + changes.untracked;
57
+ if (totalChanges > 0) {
58
+ console.log(`\n${dim("Changes:")}`);
59
+ if (changes.staged > 0)
60
+ console.log(` ${green(`${changes.staged} staged`)}`);
61
+ if (changes.unstaged > 0)
62
+ console.log(` ${yellow(`${changes.unstaged} modified`)}`);
63
+ if (changes.untracked > 0)
64
+ console.log(` ${gray(`${changes.untracked} untracked`)}`);
65
+ }
66
+ else {
67
+ console.log(`\n${dim("Changes:")} ${green("clean")}`);
68
+ }
69
+ // PR info
70
+ if (pr) {
71
+ const stateColor = pr.state === "OPEN" ? green : pr.state === "MERGED" ? cyan : gray;
72
+ console.log(`\n${dim("PR:")} ${stateColor(`#${pr.number} (${pr.state.toLowerCase()})`)} ${dim(pr.url)}`);
73
+ }
74
+ else {
75
+ console.log(`\n${dim("PR:")} ${gray("none")}`);
76
+ }
77
+ // Config info
78
+ if (config.ticketBaseUrl) {
79
+ console.log(`\n${dim("Config:")} ${green("✓")} .devflow.json loaded`);
80
+ }
81
+ console.log("");
82
+ }
83
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export interface Scope {
2
2
  value: string;
3
3
  description: string;
4
+ paths?: string[];
4
5
  }
5
6
  export interface DevflowConfig {
6
7
  ticketBaseUrl?: string;
@@ -11,6 +12,18 @@ export interface DevflowConfig {
11
12
  label: string;
12
13
  }>;
13
14
  checklist: string[];
15
+ commitFormat: string;
16
+ prTemplate: PrTemplate;
17
+ prReviewers?: string[];
14
18
  }
19
+ export interface PrTemplate {
20
+ sections: string[];
21
+ screenshotsTable: boolean;
22
+ }
23
+ export interface ConfigWarning {
24
+ field: string;
25
+ message: string;
26
+ }
27
+ export declare function validateConfig(raw: Record<string, unknown>): ConfigWarning[];
15
28
  export declare function loadConfig(cwd?: string): DevflowConfig;
16
29
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAwBD,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,aAAa,CAoBrE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AA+BD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,EAAE,CAuC5E;AAED,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,aAAa,CA+BrE"}
package/dist/config.js CHANGED
@@ -1,5 +1,10 @@
1
1
  import { readFileSync, existsSync } from "fs";
2
2
  import { resolve } from "path";
3
+ import { yellow } from "./colors.js";
4
+ const DEFAULT_PR_TEMPLATE = {
5
+ sections: ["summary", "ticket", "type", "screenshots", "testPlan", "checklist"],
6
+ screenshotsTable: true,
7
+ };
3
8
  const DEFAULT_CONFIG = {
4
9
  scopes: [],
5
10
  branchTypes: ["feat", "fix", "chore", "refactor", "docs", "test", "release", "hotfix"],
@@ -20,7 +25,44 @@ const DEFAULT_CONFIG = {
20
25
  "Self-reviewed the changes",
21
26
  "No new warnings or errors introduced",
22
27
  ],
28
+ commitFormat: "{type}[{ticket}]{breaking}({scope}): {message}",
29
+ prTemplate: DEFAULT_PR_TEMPLATE,
23
30
  };
31
+ export function validateConfig(raw) {
32
+ const warnings = [];
33
+ const validFields = [
34
+ "ticketBaseUrl", "scopes", "branchTypes", "commitTypes",
35
+ "checklist", "commitFormat", "prTemplate", "prReviewers",
36
+ ];
37
+ for (const key of Object.keys(raw)) {
38
+ if (!validFields.includes(key)) {
39
+ warnings.push({ field: key, message: `Unknown field "${key}" will be ignored` });
40
+ }
41
+ }
42
+ if (raw.scopes && Array.isArray(raw.scopes)) {
43
+ for (let i = 0; i < raw.scopes.length; i++) {
44
+ const scope = raw.scopes[i];
45
+ if (!scope.value) {
46
+ warnings.push({ field: `scopes[${i}]`, message: "Scope is missing required field \"value\"" });
47
+ }
48
+ }
49
+ }
50
+ if (raw.commitFormat && typeof raw.commitFormat === "string") {
51
+ const format = raw.commitFormat;
52
+ if (!format.includes("{type}") || !format.includes("{message}")) {
53
+ warnings.push({ field: "commitFormat", message: "Format should include at least {type} and {message} placeholders" });
54
+ }
55
+ }
56
+ if (raw.commitTypes && Array.isArray(raw.commitTypes)) {
57
+ for (let i = 0; i < raw.commitTypes.length; i++) {
58
+ const ct = raw.commitTypes[i];
59
+ if (!ct.value || !ct.label) {
60
+ warnings.push({ field: `commitTypes[${i}]`, message: "Commit type is missing \"value\" or \"label\"" });
61
+ }
62
+ }
63
+ }
64
+ return warnings;
65
+ }
24
66
  export function loadConfig(cwd = process.cwd()) {
25
67
  const configPath = resolve(cwd, ".devflow.json");
26
68
  if (!existsSync(configPath)) {
@@ -28,16 +70,25 @@ export function loadConfig(cwd = process.cwd()) {
28
70
  }
29
71
  try {
30
72
  const raw = JSON.parse(readFileSync(configPath, "utf-8"));
73
+ const warnings = validateConfig(raw);
74
+ if (warnings.length > 0) {
75
+ for (const w of warnings) {
76
+ console.error(yellow(`⚠ .devflow.json: ${w.message}`));
77
+ }
78
+ }
31
79
  return {
32
80
  ticketBaseUrl: raw.ticketBaseUrl ?? DEFAULT_CONFIG.ticketBaseUrl,
33
81
  scopes: raw.scopes ?? DEFAULT_CONFIG.scopes,
34
82
  branchTypes: raw.branchTypes ?? DEFAULT_CONFIG.branchTypes,
35
83
  commitTypes: raw.commitTypes ?? DEFAULT_CONFIG.commitTypes,
36
84
  checklist: raw.checklist ?? DEFAULT_CONFIG.checklist,
85
+ commitFormat: raw.commitFormat ?? DEFAULT_CONFIG.commitFormat,
86
+ prTemplate: raw.prTemplate ?? DEFAULT_CONFIG.prTemplate,
87
+ prReviewers: raw.prReviewers,
37
88
  };
38
89
  }
39
90
  catch {
40
- console.error("Warning: Failed to parse .devflow.json, using defaults.");
91
+ console.error(yellow(" Failed to parse .devflow.json, using defaults."));
41
92
  return DEFAULT_CONFIG;
42
93
  }
43
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAe/B,MAAM,cAAc,GAAkB;IACpC,MAAM,EAAE,EAAE;IACV,WAAW,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;IACtF,WAAW,EAAE;QACX,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,EAAE;QACnD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE;QAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,6BAA6B,EAAE;QACxD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,8BAA8B,EAAE;QAC5D,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iCAAiC,EAAE;QAC3D,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,oCAAoC,EAAE;QAC9D,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,8BAA8B,EAAE;QACzD,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,yBAAyB,EAAE;QACjD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,oCAAoC,EAAE;QAC9D,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,gCAAgC,EAAE;KAC5D;IACD,SAAS,EAAE;QACT,kCAAkC;QAClC,2BAA2B;QAC3B,sCAAsC;KACvC;CACF,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACpD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAEjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,OAAO;YACL,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,cAAc,CAAC,aAAa;YAChE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM;YAC3C,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,cAAc,CAAC,WAAW;YAC1D,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,cAAc,CAAC,WAAW;YAC1D,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS;SACrD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACzE,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,26 +4,124 @@ import { branchCommand } from "./commands/branch.js";
4
4
  import { commitCommand } from "./commands/commit.js";
5
5
  import { prCommand } from "./commands/pr.js";
6
6
  import { initCommand } from "./commands/init.js";
7
+ import { statusCommand } from "./commands/status.js";
8
+ import { amendCommand } from "./commands/amend.js";
9
+ import { cleanupCommand } from "./commands/cleanup.js";
10
+ import { changelogCommand } from "./commands/changelog.js";
11
+ import { doctorCommand } from "./commands/doctor.js";
7
12
  const program = new Command();
8
13
  program
9
14
  .name("devflow")
10
15
  .description("Interactive CLI for branch creation, conventional commits, and PR management")
11
- .version("0.1.0");
16
+ .version("0.2.0");
12
17
  program
13
18
  .command("branch")
14
19
  .description("Create a new branch with type/ticket/description format")
15
- .action(branchCommand);
20
+ .option("--dry-run", "Preview without executing git commands")
21
+ .action((opts) => branchCommand(opts));
16
22
  program
17
23
  .command("commit")
18
24
  .description("Create a conventional commit with guided prompts")
19
- .action(commitCommand);
25
+ .option("--dry-run", "Preview without executing git commands")
26
+ .action((opts) => commitCommand(opts));
20
27
  program
21
28
  .command("pr")
22
29
  .description("Create or update a pull request with auto-filled template")
23
- .action(prCommand);
30
+ .option("--dry-run", "Preview without executing git commands")
31
+ .action((opts) => prCommand(opts));
24
32
  program
25
33
  .command("init")
26
- .description("Initialize a .devflow.json config file in the current project")
34
+ .description("Initialize a .devflow.json config and project setup")
27
35
  .action(initCommand);
36
+ program
37
+ .command("status")
38
+ .description("Show current branch, ticket, commits, and PR info")
39
+ .action(statusCommand);
40
+ program
41
+ .command("amend")
42
+ .description("Amend the last commit with guided prompts")
43
+ .option("--dry-run", "Preview without executing git commands")
44
+ .action((opts) => amendCommand(opts));
45
+ program
46
+ .command("cleanup")
47
+ .description("Delete local branches that have been merged or whose remote is gone")
48
+ .option("--dry-run", "Preview without deleting branches")
49
+ .action((opts) => cleanupCommand(opts));
50
+ program
51
+ .command("changelog")
52
+ .description("Generate a changelog from conventional commits since last tag")
53
+ .option("--dry-run", "Preview without writing to file")
54
+ .action((opts) => changelogCommand(opts));
55
+ program
56
+ .command("doctor")
57
+ .description("Check that all devflow dependencies are properly configured")
58
+ .action(doctorCommand);
59
+ program
60
+ .command("completions")
61
+ .description("Output shell completion script")
62
+ .option("--shell <shell>", "Shell type (bash or zsh)", "zsh")
63
+ .action((opts) => {
64
+ if (opts.shell === "bash") {
65
+ console.log(generateBashCompletions());
66
+ }
67
+ else {
68
+ console.log(generateZshCompletions());
69
+ }
70
+ });
28
71
  program.parse();
72
+ function generateBashCompletions() {
73
+ return `# devflow bash completions
74
+ # Add to ~/.bashrc: eval "$(devflow completions --shell bash)"
75
+ _devflow_completions() {
76
+ local cur="\${COMP_WORDS[COMP_CWORD]}"
77
+ local commands="branch commit pr init status amend cleanup changelog doctor completions"
78
+
79
+ if [ "\${COMP_CWORD}" -eq 1 ]; then
80
+ COMPREPLY=($(compgen -W "\${commands}" -- "\${cur}"))
81
+ elif [ "\${COMP_CWORD}" -eq 2 ]; then
82
+ COMPREPLY=($(compgen -W "--dry-run --help" -- "\${cur}"))
83
+ fi
84
+ }
85
+ complete -F _devflow_completions devflow`;
86
+ }
87
+ function generateZshCompletions() {
88
+ return `# devflow zsh completions
89
+ # Add to ~/.zshrc: eval "$(devflow completions --shell zsh)"
90
+ _devflow() {
91
+ local -a commands
92
+ commands=(
93
+ 'branch:Create a new branch with type/ticket/description format'
94
+ 'commit:Create a conventional commit with guided prompts'
95
+ 'pr:Create or update a pull request'
96
+ 'init:Initialize devflow config and project setup'
97
+ 'status:Show current branch, ticket, commits, and PR info'
98
+ 'amend:Amend the last commit with guided prompts'
99
+ 'cleanup:Delete merged local branches'
100
+ 'changelog:Generate changelog from conventional commits'
101
+ 'doctor:Check devflow dependencies'
102
+ 'completions:Output shell completion script'
103
+ )
104
+
105
+ _arguments -C \\
106
+ '1: :->command' \\
107
+ '*::arg:->args'
108
+
109
+ case "\$state" in
110
+ command)
111
+ _describe 'command' commands
112
+ ;;
113
+ args)
114
+ case "\${words[1]}" in
115
+ branch|commit|pr|amend|cleanup|changelog)
116
+ _arguments '--dry-run[Preview without executing]'
117
+ ;;
118
+ completions)
119
+ _arguments '--shell[Shell type]:shell:(bash zsh)'
120
+ ;;
121
+ esac
122
+ ;;
123
+ esac
124
+ }
125
+ compdef _devflow devflow`;
126
+ }
29
127
  //# sourceMappingURL=index.js.map
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,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;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,8EAA8E,CAAC;KAC3F,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,SAAS,CAAC,CAAC;AAErB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Interactive CLI for branch creation, conventional commits, and PR management",
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,9 +12,18 @@
12
12
  "publish:public": "npm publish --access=public",
13
13
  "prepublishOnly": "npm run build"
14
14
  },
15
- "keywords": ["cli", "git", "commits", "conventional-commits", "branch", "pull-request"],
15
+ "keywords": [
16
+ "cli",
17
+ "git",
18
+ "commits",
19
+ "conventional-commits",
20
+ "branch",
21
+ "pull-request"
22
+ ],
16
23
  "license": "MIT",
17
- "files": ["dist"],
24
+ "files": [
25
+ "dist"
26
+ ],
18
27
  "engines": {
19
28
  "node": ">=18"
20
29
  },