@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.
- package/README.md +305 -0
- package/dist/colors.d.ts +9 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js +13 -0
- package/dist/colors.js.map +1 -0
- package/dist/commands/amend.d.ts +4 -0
- package/dist/commands/amend.d.ts.map +1 -0
- package/dist/commands/amend.js +138 -0
- package/dist/commands/amend.js.map +1 -0
- package/dist/commands/branch.d.ts +3 -1
- package/dist/commands/branch.d.ts.map +1 -1
- package/dist/commands/branch.js +10 -5
- package/dist/commands/branch.js.map +1 -1
- package/dist/commands/changelog.d.ts +4 -0
- package/dist/commands/changelog.d.ts.map +1 -0
- package/dist/commands/changelog.js +204 -0
- package/dist/commands/changelog.js.map +1 -0
- package/dist/commands/cleanup.d.ts +4 -0
- package/dist/commands/cleanup.d.ts.map +1 -0
- package/dist/commands/cleanup.js +121 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/commit.d.ts +3 -1
- package/dist/commands/commit.d.ts.map +1 -1
- package/dist/commands/commit.js +91 -24
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +122 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +248 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pr.d.ts +3 -1
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +41 -40
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +83 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +52 -1
- package/dist/config.js.map +1 -1
- package/dist/index.js +103 -5
- package/dist/index.js.map +1 -1
- 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
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
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("
|
|
91
|
+
console.error(yellow("⚠ Failed to parse .devflow.json, using defaults."));
|
|
41
92
|
return DEFAULT_CONFIG;
|
|
42
93
|
}
|
|
43
94
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -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;
|
|
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.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
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
|
|
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;
|
|
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.
|
|
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": [
|
|
15
|
+
"keywords": [
|
|
16
|
+
"cli",
|
|
17
|
+
"git",
|
|
18
|
+
"commits",
|
|
19
|
+
"conventional-commits",
|
|
20
|
+
"branch",
|
|
21
|
+
"pull-request"
|
|
22
|
+
],
|
|
16
23
|
"license": "MIT",
|
|
17
|
-
"files": [
|
|
24
|
+
"files": [
|
|
25
|
+
"dist"
|
|
26
|
+
],
|
|
18
27
|
"engines": {
|
|
19
28
|
"node": ">=18"
|
|
20
29
|
},
|