@idea1/cli 1.0.11 → 1.1.1
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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +33 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/release.d.ts +3 -0
- package/dist/commands/release.d.ts.map +1 -0
- package/dist/commands/release.js +350 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/lib/settings.d.ts +9 -0
- package/dist/lib/settings.d.ts.map +1 -1
- package/dist/lib/settings.js +24 -1
- package/dist/lib/settings.js.map +1 -1
- package/dist/services/hooks.d.ts +8 -0
- package/dist/services/hooks.d.ts.map +1 -0
- package/dist/services/hooks.js +82 -0
- package/dist/services/hooks.js.map +1 -0
- package/dist/types/index.d.ts +50 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAuOvC;AAiBD;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0E1D"}
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import { startProjectItemCommand, closeWorktreeCommand, createWorktreeCommand, pushCommand, updateDocsCommand, helpCommand } from './commands/index.js';
|
|
2
|
+
import { startProjectItemCommand, closeWorktreeCommand, createWorktreeCommand, pushCommand, updateDocsCommand, helpCommand, releaseCommand } from './commands/index.js';
|
|
3
3
|
import { runInteractiveMode } from './interactive.js';
|
|
4
4
|
import { logger } from './lib/logger.js';
|
|
5
5
|
import { VERSION } from './version.js';
|
|
@@ -174,6 +174,38 @@ export function createProgram() {
|
|
|
174
174
|
.action(async () => {
|
|
175
175
|
await helpCommand.execute([]);
|
|
176
176
|
});
|
|
177
|
+
// Release command
|
|
178
|
+
program
|
|
179
|
+
.command('release')
|
|
180
|
+
.alias('r')
|
|
181
|
+
.description('Create a release PR from release branch to main')
|
|
182
|
+
.option('-b, --branch <branch>', 'Source branch to release from')
|
|
183
|
+
.option('-t, --target <branch>', 'Target branch to release to')
|
|
184
|
+
.option('-pr, --pr-mode <mode>', 'PR mode: merge or review')
|
|
185
|
+
.option('--title <title>', 'PR title')
|
|
186
|
+
.action(async (options) => {
|
|
187
|
+
try {
|
|
188
|
+
const args = [];
|
|
189
|
+
if (options.branch) {
|
|
190
|
+
args.push('-b', options.branch);
|
|
191
|
+
}
|
|
192
|
+
if (options.target) {
|
|
193
|
+
args.push('-t', options.target);
|
|
194
|
+
}
|
|
195
|
+
if (options.prMode) {
|
|
196
|
+
args.push('--pr-mode', options.prMode);
|
|
197
|
+
}
|
|
198
|
+
if (options.title) {
|
|
199
|
+
args.push('--title', options.title);
|
|
200
|
+
}
|
|
201
|
+
await releaseCommand.execute(args);
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
const err = error;
|
|
205
|
+
logger.error(err.message);
|
|
206
|
+
process.exit(1);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
177
209
|
return program;
|
|
178
210
|
}
|
|
179
211
|
/**
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { createWorktreeCommand } from './create-worktree.js';
|
|
|
5
5
|
import { pushCommand } from './push.js';
|
|
6
6
|
import { updateDocsCommand } from './update-docs.js';
|
|
7
7
|
import { helpCommand } from './help.js';
|
|
8
|
+
import { releaseCommand } from './release.js';
|
|
8
9
|
/**
|
|
9
10
|
* Get a command by name or alias
|
|
10
11
|
*/
|
|
@@ -17,5 +18,5 @@ export declare function getAllCommands(): Command[];
|
|
|
17
18
|
* Get all command names and aliases for autocomplete
|
|
18
19
|
*/
|
|
19
20
|
export declare function getAllCommandNamesAndAliases(): string[];
|
|
20
|
-
export { startProjectItemCommand, closeWorktreeCommand, createWorktreeCommand, pushCommand, updateDocsCommand, helpCommand };
|
|
21
|
+
export { startProjectItemCommand, closeWorktreeCommand, createWorktreeCommand, pushCommand, updateDocsCommand, helpCommand, releaseCommand };
|
|
21
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA6B9C;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEnE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,EAAE,CAM1C;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,EAAE,CAEvD;AAED,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { createWorktreeCommand } from './create-worktree.js';
|
|
|
4
4
|
import { pushCommand } from './push.js';
|
|
5
5
|
import { updateDocsCommand } from './update-docs.js';
|
|
6
6
|
import { helpCommand } from './help.js';
|
|
7
|
+
import { releaseCommand } from './release.js';
|
|
7
8
|
/**
|
|
8
9
|
* Command registry - Map-based for O(1) lookup
|
|
9
10
|
*/
|
|
@@ -26,6 +27,7 @@ registerCommand(createWorktreeCommand);
|
|
|
26
27
|
registerCommand(pushCommand);
|
|
27
28
|
registerCommand(updateDocsCommand);
|
|
28
29
|
registerCommand(helpCommand);
|
|
30
|
+
registerCommand(releaseCommand);
|
|
29
31
|
/**
|
|
30
32
|
* Get a command by name or alias
|
|
31
33
|
*/
|
|
@@ -48,5 +50,5 @@ export function getAllCommands() {
|
|
|
48
50
|
export function getAllCommandNamesAndAliases() {
|
|
49
51
|
return Array.from(commandRegistry.keys());
|
|
50
52
|
}
|
|
51
|
-
export { startProjectItemCommand, closeWorktreeCommand, createWorktreeCommand, pushCommand, updateDocsCommand, helpCommand };
|
|
53
|
+
export { startProjectItemCommand, closeWorktreeCommand, createWorktreeCommand, pushCommand, updateDocsCommand, helpCommand, releaseCommand };
|
|
52
54
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;GAEG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEnD;;GAEG;AACH,SAAS,eAAe,CAAC,OAAgB;IACvC,mBAAmB;IACnB,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE3C,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,wBAAwB;AACxB,eAAe,CAAC,uBAAuB,CAAC,CAAC;AACzC,eAAe,CAAC,oBAAoB,CAAC,CAAC;AACtC,eAAe,CAAC,qBAAqB,CAAC,CAAC;AACvC,eAAe,CAAC,WAAW,CAAC,CAAC;AAC7B,eAAe,CAAC,iBAAiB,CAAC,CAAC;AACnC,eAAe,CAAC,WAAW,CAAC,CAAC;AAC7B,eAAe,CAAC,cAAc,CAAC,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,OAAO,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,cAAc,GAAG,IAAI,GAAG,EAAW,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,mBAAmB,CAAC;AAqVjE,eAAO,MAAM,cAAc,EAAE,OAgG5B,CAAC"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import { logger } from '../lib/logger.js';
|
|
2
|
+
import { getReleaseBranch, getReleaseTargetBranch } from '../lib/settings.js';
|
|
3
|
+
import { exec, execOrThrow } from '../lib/shell.js';
|
|
4
|
+
import { runHook } from '../services/hooks.js';
|
|
5
|
+
import * as git from '../services/git.js';
|
|
6
|
+
import * as github from '../services/github.js';
|
|
7
|
+
import inquirer from 'inquirer';
|
|
8
|
+
/**
|
|
9
|
+
* Parse command line arguments for release
|
|
10
|
+
*/
|
|
11
|
+
function parseArgs(args) {
|
|
12
|
+
const options = {};
|
|
13
|
+
let i = 0;
|
|
14
|
+
while (i < args.length) {
|
|
15
|
+
const arg = args[i];
|
|
16
|
+
switch (arg) {
|
|
17
|
+
case '--branch':
|
|
18
|
+
case '-b':
|
|
19
|
+
i++;
|
|
20
|
+
options.branch = args[i];
|
|
21
|
+
break;
|
|
22
|
+
case '--target':
|
|
23
|
+
case '-t':
|
|
24
|
+
i++;
|
|
25
|
+
options.target = args[i];
|
|
26
|
+
break;
|
|
27
|
+
case '--pr-mode':
|
|
28
|
+
case '-pr':
|
|
29
|
+
i++;
|
|
30
|
+
if (args[i] === 'merge' || args[i] === 'review') {
|
|
31
|
+
options.prMode = args[i];
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
throw new Error(`Invalid pr-mode: ${args[i]}. Valid values: merge, review`);
|
|
35
|
+
}
|
|
36
|
+
break;
|
|
37
|
+
case '--title':
|
|
38
|
+
i++;
|
|
39
|
+
options.title = args[i];
|
|
40
|
+
break;
|
|
41
|
+
case '--help':
|
|
42
|
+
case '-h':
|
|
43
|
+
printHelp();
|
|
44
|
+
process.exit(0);
|
|
45
|
+
default:
|
|
46
|
+
if (arg.startsWith('-')) {
|
|
47
|
+
throw new Error(`Unknown option: ${arg}`);
|
|
48
|
+
}
|
|
49
|
+
throw new Error(`Unexpected argument: ${arg}`);
|
|
50
|
+
}
|
|
51
|
+
i++;
|
|
52
|
+
}
|
|
53
|
+
return options;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Print help information
|
|
57
|
+
*/
|
|
58
|
+
function printHelp() {
|
|
59
|
+
console.log(`
|
|
60
|
+
Usage: idea1 release [OPTIONS]
|
|
61
|
+
|
|
62
|
+
Creates a pull request from a release branch to the target branch.
|
|
63
|
+
|
|
64
|
+
Options:
|
|
65
|
+
--branch, -b <branch> Source branch to release from
|
|
66
|
+
Default: defaults.releaseBranch or "working/release"
|
|
67
|
+
|
|
68
|
+
--target, -t <branch> Target branch to release to
|
|
69
|
+
Default: defaults.releaseTargetBranch or "main"
|
|
70
|
+
|
|
71
|
+
--pr-mode, -pr <mode> PR mode: "merge" or "review"
|
|
72
|
+
merge - Auto-merge the PR immediately (admin override)
|
|
73
|
+
review - Open PR in browser for manual review
|
|
74
|
+
Default: interactive prompt
|
|
75
|
+
|
|
76
|
+
--title <title> PR title
|
|
77
|
+
Default: "Release YYYY-MM-DD"
|
|
78
|
+
|
|
79
|
+
--help, -h Show this help message
|
|
80
|
+
|
|
81
|
+
Examples:
|
|
82
|
+
idea1 release Interactive mode
|
|
83
|
+
idea1 release --pr-mode merge Auto-merge the release
|
|
84
|
+
idea1 release -b staging -t production Custom branches
|
|
85
|
+
`);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Resolve the release branch (source branch)
|
|
89
|
+
*/
|
|
90
|
+
async function resolveReleaseBranch(cliBranch) {
|
|
91
|
+
if (cliBranch) {
|
|
92
|
+
return cliBranch;
|
|
93
|
+
}
|
|
94
|
+
const repoRoot = await git.getRepoRoot();
|
|
95
|
+
const settingsBranch = await getReleaseBranch(repoRoot);
|
|
96
|
+
if (settingsBranch) {
|
|
97
|
+
return settingsBranch;
|
|
98
|
+
}
|
|
99
|
+
return 'working/release';
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Resolve the target branch
|
|
103
|
+
*/
|
|
104
|
+
async function resolveTargetBranch(cliTarget) {
|
|
105
|
+
if (cliTarget) {
|
|
106
|
+
return cliTarget;
|
|
107
|
+
}
|
|
108
|
+
const repoRoot = await git.getRepoRoot();
|
|
109
|
+
const settingsTarget = await getReleaseTargetBranch(repoRoot);
|
|
110
|
+
if (settingsTarget) {
|
|
111
|
+
return settingsTarget;
|
|
112
|
+
}
|
|
113
|
+
return 'main';
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Validate that we're on the expected branch
|
|
117
|
+
*/
|
|
118
|
+
async function validateBranch(expectedBranch) {
|
|
119
|
+
const currentBranch = await git.getCurrentBranch();
|
|
120
|
+
if (currentBranch !== expectedBranch) {
|
|
121
|
+
throw new Error(`You must be on the '${expectedBranch}' branch to run this command.\n` +
|
|
122
|
+
`Current branch: ${currentBranch}`);
|
|
123
|
+
}
|
|
124
|
+
logger.success(`On ${expectedBranch} branch`);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check for uncommitted changes
|
|
128
|
+
*/
|
|
129
|
+
async function checkUncommittedChanges() {
|
|
130
|
+
const result = await exec('git', ['status', '--porcelain']);
|
|
131
|
+
if (result.stdout.trim()) {
|
|
132
|
+
throw new Error('You have uncommitted changes. Please commit or stash them first.\n\n' +
|
|
133
|
+
result.stdout);
|
|
134
|
+
}
|
|
135
|
+
logger.success('No uncommitted changes');
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Check for unpushed commits
|
|
139
|
+
*/
|
|
140
|
+
async function checkUnpushedCommits() {
|
|
141
|
+
const result = await exec('git', ['log', '@{u}..HEAD', '--oneline']);
|
|
142
|
+
if (result.exitCode === 0 && result.stdout.trim()) {
|
|
143
|
+
throw new Error('You have local commits that haven\'t been pushed. Please push first.\n\n' +
|
|
144
|
+
'Unpushed commits:\n' + result.stdout);
|
|
145
|
+
}
|
|
146
|
+
logger.success('No unpushed commits');
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Check if local is behind remote
|
|
150
|
+
*/
|
|
151
|
+
async function checkLocalBehindRemote() {
|
|
152
|
+
const localCommit = (await execOrThrow('git', ['rev-parse', 'HEAD'])).trim();
|
|
153
|
+
const remoteCommit = (await execOrThrow('git', ['rev-parse', '@{u}'])).trim();
|
|
154
|
+
if (localCommit !== remoteCommit) {
|
|
155
|
+
throw new Error('Your local branch is behind the remote. Please pull the latest changes.\n\n' +
|
|
156
|
+
`Local: ${localCommit}\n` +
|
|
157
|
+
`Remote: ${remoteCommit}`);
|
|
158
|
+
}
|
|
159
|
+
logger.success('Local branch matches remote');
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Prompt for PR title
|
|
163
|
+
*/
|
|
164
|
+
async function promptPrTitle(existingTitle) {
|
|
165
|
+
if (existingTitle) {
|
|
166
|
+
return existingTitle;
|
|
167
|
+
}
|
|
168
|
+
const defaultTitle = `Release ${new Date().toISOString().split('T')[0]}`;
|
|
169
|
+
const { title } = await inquirer.prompt([{
|
|
170
|
+
type: 'input',
|
|
171
|
+
name: 'title',
|
|
172
|
+
message: 'Enter PR title:',
|
|
173
|
+
default: defaultTitle
|
|
174
|
+
}]);
|
|
175
|
+
return title;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Prompt for PR mode
|
|
179
|
+
*/
|
|
180
|
+
async function promptPrMode(existingMode) {
|
|
181
|
+
if (existingMode) {
|
|
182
|
+
return existingMode;
|
|
183
|
+
}
|
|
184
|
+
const { mode } = await inquirer.prompt([{
|
|
185
|
+
type: 'list',
|
|
186
|
+
name: 'mode',
|
|
187
|
+
message: 'Select PR mode:',
|
|
188
|
+
choices: [
|
|
189
|
+
{ name: 'review - Open PR in browser for manual review', value: 'review' },
|
|
190
|
+
{ name: 'merge - Auto-merge the PR immediately (admin override)', value: 'merge' }
|
|
191
|
+
],
|
|
192
|
+
default: 'review'
|
|
193
|
+
}]);
|
|
194
|
+
return mode;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Create the PR
|
|
198
|
+
*/
|
|
199
|
+
async function createPr(sourceBranch, targetBranch, title) {
|
|
200
|
+
await github.ensureGitHubCli();
|
|
201
|
+
logger.step('Creating pull request...');
|
|
202
|
+
const body = `Release from ${sourceBranch} branch.`;
|
|
203
|
+
const result = await exec('gh', [
|
|
204
|
+
'pr', 'create',
|
|
205
|
+
'--base', targetBranch,
|
|
206
|
+
'--head', sourceBranch,
|
|
207
|
+
'--title', title,
|
|
208
|
+
'--body', body
|
|
209
|
+
]);
|
|
210
|
+
if (result.exitCode !== 0) {
|
|
211
|
+
throw new Error(`Failed to create PR: ${result.stderr}`);
|
|
212
|
+
}
|
|
213
|
+
const prUrl = result.stdout.trim();
|
|
214
|
+
logger.success(`PR created: ${prUrl}`);
|
|
215
|
+
return prUrl;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Merge the PR with admin override
|
|
219
|
+
*/
|
|
220
|
+
async function mergePr() {
|
|
221
|
+
logger.step('Merging pull request (admin override)...');
|
|
222
|
+
const result = await exec('gh', ['pr', 'merge', '--admin', '--merge']);
|
|
223
|
+
if (result.exitCode !== 0) {
|
|
224
|
+
throw new Error(`Failed to merge PR: ${result.stderr}`);
|
|
225
|
+
}
|
|
226
|
+
logger.success('PR merged');
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Open URL in browser (cross-platform)
|
|
230
|
+
*/
|
|
231
|
+
async function openUrlInBrowser(url) {
|
|
232
|
+
// Try cross-platform browser opening commands
|
|
233
|
+
const commands = [
|
|
234
|
+
'open', // macOS
|
|
235
|
+
'xdg-open', // Linux
|
|
236
|
+
'start' // Windows
|
|
237
|
+
];
|
|
238
|
+
for (const command of commands) {
|
|
239
|
+
const result = await exec(command, [url]);
|
|
240
|
+
if (result.exitCode === 0) {
|
|
241
|
+
return; // Success, browser opened
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Fallback: print URL for manual opening
|
|
245
|
+
logger.warning('Could not automatically open browser. Please open the following URL manually:');
|
|
246
|
+
logger.info(url);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Open GitHub Actions page
|
|
250
|
+
*/
|
|
251
|
+
async function openGitHubActions() {
|
|
252
|
+
logger.step('Opening GitHub Actions...');
|
|
253
|
+
const result = await exec('gh', ['repo', 'view', '--json', 'url', '-q', '.url']);
|
|
254
|
+
if (result.exitCode !== 0) {
|
|
255
|
+
logger.warning('Could not get repository URL');
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
const repoUrl = result.stdout.trim();
|
|
259
|
+
const actionsUrl = `${repoUrl}/actions`;
|
|
260
|
+
logger.info(`Opening: ${actionsUrl}`);
|
|
261
|
+
await openUrlInBrowser(actionsUrl);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Open PR in browser
|
|
265
|
+
*/
|
|
266
|
+
async function openPrInBrowser() {
|
|
267
|
+
logger.step('Opening PR in browser...');
|
|
268
|
+
await exec('gh', ['pr', 'view', '--web']);
|
|
269
|
+
}
|
|
270
|
+
export const releaseCommand = {
|
|
271
|
+
name: 'release',
|
|
272
|
+
aliases: ['r', 'rel'],
|
|
273
|
+
description: 'Create a release PR from release branch to main',
|
|
274
|
+
async execute(args) {
|
|
275
|
+
const options = parseArgs(args);
|
|
276
|
+
// Resolve branches
|
|
277
|
+
const sourceBranch = await resolveReleaseBranch(options.branch);
|
|
278
|
+
const targetBranch = await resolveTargetBranch(options.target);
|
|
279
|
+
logger.header(`Release: ${sourceBranch} -> ${targetBranch}`);
|
|
280
|
+
logger.newline();
|
|
281
|
+
// Step 1: Validate current branch
|
|
282
|
+
logger.step('Step 1: Validating current branch...');
|
|
283
|
+
await validateBranch(sourceBranch);
|
|
284
|
+
logger.newline();
|
|
285
|
+
// Step 2: Check for uncommitted changes
|
|
286
|
+
logger.step('Step 2: Checking for uncommitted changes...');
|
|
287
|
+
await checkUncommittedChanges();
|
|
288
|
+
logger.newline();
|
|
289
|
+
// Step 3: Fetch latest from remote
|
|
290
|
+
logger.step('Step 3: Fetching latest from remote...');
|
|
291
|
+
await git.fetchLatest();
|
|
292
|
+
logger.newline();
|
|
293
|
+
// Step 4: Check for unpushed commits
|
|
294
|
+
logger.step('Step 4: Checking for unpushed commits...');
|
|
295
|
+
await checkUnpushedCommits();
|
|
296
|
+
logger.newline();
|
|
297
|
+
// Step 5: Check if local is behind remote
|
|
298
|
+
logger.step('Step 5: Checking if local branch is up to date with remote...');
|
|
299
|
+
await checkLocalBehindRemote();
|
|
300
|
+
logger.newline();
|
|
301
|
+
// Step 6: Run pre-release hook (if configured)
|
|
302
|
+
logger.step('Step 6: Running pre-release hook...');
|
|
303
|
+
const repoRoot = await git.getRepoRoot();
|
|
304
|
+
const hookResult = await runHook('pre-release', repoRoot);
|
|
305
|
+
if (!hookResult.success) {
|
|
306
|
+
throw new Error('Pre-release hook failed. Aborting release.');
|
|
307
|
+
}
|
|
308
|
+
logger.newline();
|
|
309
|
+
// Step 7: Prompt for PR title
|
|
310
|
+
logger.step('Step 7: PR Title');
|
|
311
|
+
const prTitle = await promptPrTitle(options.title);
|
|
312
|
+
logger.info(`Using title: ${prTitle}`);
|
|
313
|
+
logger.newline();
|
|
314
|
+
// Step 8: Prompt for PR mode
|
|
315
|
+
logger.step('Step 8: PR Mode');
|
|
316
|
+
const prMode = await promptPrMode(options.prMode);
|
|
317
|
+
logger.info(`PR mode: ${prMode}`);
|
|
318
|
+
logger.newline();
|
|
319
|
+
// Step 9: Create PR
|
|
320
|
+
logger.step('Step 9: Creating pull request...');
|
|
321
|
+
const prUrl = await createPr(sourceBranch, targetBranch, prTitle);
|
|
322
|
+
logger.newline();
|
|
323
|
+
// Step 10: Handle based on mode
|
|
324
|
+
if (prMode === 'merge') {
|
|
325
|
+
// Step 10a: Merge PR
|
|
326
|
+
logger.step('Step 10: Merging pull request...');
|
|
327
|
+
await mergePr();
|
|
328
|
+
logger.newline();
|
|
329
|
+
// Step 11: Open GitHub Actions
|
|
330
|
+
logger.step('Step 11: Opening GitHub Actions...');
|
|
331
|
+
await openGitHubActions();
|
|
332
|
+
logger.newline();
|
|
333
|
+
logger.success('========================================');
|
|
334
|
+
logger.success('Release merge to main complete!');
|
|
335
|
+
logger.success('========================================');
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
// Step 10b: Open PR in browser
|
|
339
|
+
logger.step('Step 10: Opening PR in browser...');
|
|
340
|
+
await openPrInBrowser();
|
|
341
|
+
logger.newline();
|
|
342
|
+
logger.success('================================================');
|
|
343
|
+
logger.success('Release PR created and opened in browser');
|
|
344
|
+
logger.success('================================================');
|
|
345
|
+
}
|
|
346
|
+
logger.newline();
|
|
347
|
+
logger.hint(`PR: ${prUrl}`);
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
//# sourceMappingURL=release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/settings.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type { Idea1Settings } from '../types/index.js';
|
|
|
5
5
|
export declare function readSettings(repoRoot: string): Promise<Idea1Settings | null>;
|
|
6
6
|
/**
|
|
7
7
|
* Get the setup-worktree hook command if defined
|
|
8
|
+
* Handles both string and object hook formats for backward compatibility
|
|
8
9
|
*/
|
|
9
10
|
export declare function getSetupWorktreeHook(repoRoot: string): Promise<string | null>;
|
|
10
11
|
/**
|
|
@@ -19,4 +20,12 @@ export declare function getBaseBranch(repoRoot: string): Promise<string | null>;
|
|
|
19
20
|
* Get the test command from settings
|
|
20
21
|
*/
|
|
21
22
|
export declare function getTestCommand(repoRoot: string): Promise<string | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Get the release branch from settings (branch to release from)
|
|
25
|
+
*/
|
|
26
|
+
export declare function getReleaseBranch(repoRoot: string): Promise<string | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Get the release target branch from settings (branch to release to)
|
|
29
|
+
*/
|
|
30
|
+
export declare function getReleaseTargetBranch(repoRoot: string): Promise<string | null>;
|
|
22
31
|
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/lib/settings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAalF;AAED
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/lib/settings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAalF;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWnF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAG9E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAG5E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAG7E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAG/E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGrF"}
|
package/dist/lib/settings.js
CHANGED
|
@@ -19,10 +19,19 @@ export async function readSettings(repoRoot) {
|
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Get the setup-worktree hook command if defined
|
|
22
|
+
* Handles both string and object hook formats for backward compatibility
|
|
22
23
|
*/
|
|
23
24
|
export async function getSetupWorktreeHook(repoRoot) {
|
|
24
25
|
const settings = await readSettings(repoRoot);
|
|
25
|
-
|
|
26
|
+
const hook = settings?.hooks?.['setup-worktree'];
|
|
27
|
+
if (!hook) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
// Handle both string and object formats
|
|
31
|
+
if (typeof hook === 'string') {
|
|
32
|
+
return hook;
|
|
33
|
+
}
|
|
34
|
+
return hook.command;
|
|
26
35
|
}
|
|
27
36
|
/**
|
|
28
37
|
* Get the default branch prefix from settings
|
|
@@ -45,4 +54,18 @@ export async function getTestCommand(repoRoot) {
|
|
|
45
54
|
const settings = await readSettings(repoRoot);
|
|
46
55
|
return settings?.defaults?.testCommand ?? null;
|
|
47
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Get the release branch from settings (branch to release from)
|
|
59
|
+
*/
|
|
60
|
+
export async function getReleaseBranch(repoRoot) {
|
|
61
|
+
const settings = await readSettings(repoRoot);
|
|
62
|
+
return settings?.defaults?.releaseBranch ?? null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get the release target branch from settings (branch to release to)
|
|
66
|
+
*/
|
|
67
|
+
export async function getReleaseTargetBranch(repoRoot) {
|
|
68
|
+
const settings = await readSettings(repoRoot);
|
|
69
|
+
return settings?.defaults?.releaseTargetBranch ?? null;
|
|
70
|
+
}
|
|
48
71
|
//# sourceMappingURL=settings.js.map
|
package/dist/lib/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/lib/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IAE/D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/lib/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IAE/D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACzD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,wCAAwC;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,QAAQ,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,QAAQ,EAAE,QAAQ,EAAE,UAAU,IAAI,IAAI,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,QAAQ,EAAE,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,QAAQ,EAAE,QAAQ,EAAE,aAAa,IAAI,IAAI,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,QAAgB;IAC3D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,IAAI,IAAI,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/services/hooks.ts"],"names":[],"mappings":"AA0DA;;GAEG;AACH,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAiCjD"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
import { logger } from '../lib/logger.js';
|
|
4
|
+
import { execWithOutput } from '../lib/shell.js';
|
|
5
|
+
import { readSettings } from '../lib/settings.js';
|
|
6
|
+
/**
|
|
7
|
+
* Normalize a hook to HookConfig format
|
|
8
|
+
*/
|
|
9
|
+
function normalizeHook(hook) {
|
|
10
|
+
if (typeof hook === 'string') {
|
|
11
|
+
return { command: hook, inputs: [] };
|
|
12
|
+
}
|
|
13
|
+
return hook;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Collect inputs from user based on hook configuration
|
|
17
|
+
*/
|
|
18
|
+
async function collectHookInputs(inputs) {
|
|
19
|
+
const collected = {};
|
|
20
|
+
for (const input of inputs) {
|
|
21
|
+
if (input.type === 'select' && input.choices) {
|
|
22
|
+
const { value } = await inquirer.prompt([{
|
|
23
|
+
type: 'list',
|
|
24
|
+
name: 'value',
|
|
25
|
+
message: input.label,
|
|
26
|
+
choices: input.choices.map(c => ({ name: c.label, value: c.value })),
|
|
27
|
+
default: input.default
|
|
28
|
+
}]);
|
|
29
|
+
collected[input.name] = value;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const { value } = await inquirer.prompt([{
|
|
33
|
+
type: 'input',
|
|
34
|
+
name: 'value',
|
|
35
|
+
message: input.label,
|
|
36
|
+
default: input.default
|
|
37
|
+
}]);
|
|
38
|
+
collected[input.name] = value;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return collected;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build command arguments from collected inputs
|
|
45
|
+
*/
|
|
46
|
+
function buildHookArgs(inputs) {
|
|
47
|
+
const args = [];
|
|
48
|
+
for (const [name, value] of Object.entries(inputs)) {
|
|
49
|
+
args.push(`--${name}`, value);
|
|
50
|
+
}
|
|
51
|
+
return args;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Run a hook with input collection
|
|
55
|
+
*/
|
|
56
|
+
export async function runHook(hookName, repoRoot) {
|
|
57
|
+
const settings = await readSettings(repoRoot);
|
|
58
|
+
const hook = settings?.hooks?.[hookName];
|
|
59
|
+
if (!hook) {
|
|
60
|
+
logger.dim(`No ${hookName} hook defined`);
|
|
61
|
+
return { success: true, skipped: true };
|
|
62
|
+
}
|
|
63
|
+
const config = normalizeHook(hook);
|
|
64
|
+
// Collect inputs if any
|
|
65
|
+
let args = [];
|
|
66
|
+
if (config.inputs && config.inputs.length > 0) {
|
|
67
|
+
logger.newline();
|
|
68
|
+
const inputs = await collectHookInputs(config.inputs);
|
|
69
|
+
args = buildHookArgs(inputs);
|
|
70
|
+
}
|
|
71
|
+
// Determine working directory (default to repo root)
|
|
72
|
+
const hookCwd = config.cwd ? path.join(repoRoot, config.cwd) : repoRoot;
|
|
73
|
+
logger.step(`Running ${hookName} hook: ${config.command}`);
|
|
74
|
+
const exitCode = await execWithOutput('bash', [config.command, ...args], { cwd: hookCwd });
|
|
75
|
+
if (exitCode !== 0) {
|
|
76
|
+
logger.error(`${hookName} hook failed with exit code ${exitCode}`);
|
|
77
|
+
return { success: false, skipped: false };
|
|
78
|
+
}
|
|
79
|
+
logger.success(`${hookName} hook completed`);
|
|
80
|
+
return { success: true, skipped: false };
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/services/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -42,17 +42,53 @@ export interface CommandOption {
|
|
|
42
42
|
description: string;
|
|
43
43
|
defaultValue?: string | boolean;
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Hook input definition for collecting user input before running a hook
|
|
47
|
+
*/
|
|
48
|
+
export interface HookInput {
|
|
49
|
+
/** Name used as the CLI argument (e.g., "version-type" becomes --version-type) */
|
|
50
|
+
name: string;
|
|
51
|
+
/** Display label for the prompt */
|
|
52
|
+
label: string;
|
|
53
|
+
/** Input type: 'text' for free-form input, 'select' for menu selection */
|
|
54
|
+
type: 'text' | 'select';
|
|
55
|
+
/** Default value (user can press Enter to accept) */
|
|
56
|
+
default?: string;
|
|
57
|
+
/** Choices for 'select' type */
|
|
58
|
+
choices?: Array<{
|
|
59
|
+
label: string;
|
|
60
|
+
value: string;
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Hook configuration object
|
|
65
|
+
*/
|
|
66
|
+
export interface HookConfig {
|
|
67
|
+
/** Command to execute (relative to repo root) */
|
|
68
|
+
command: string;
|
|
69
|
+
/** User inputs to collect before running the hook */
|
|
70
|
+
inputs?: HookInput[];
|
|
71
|
+
/** Working directory for the hook (relative to repo root, defaults to repo root) */
|
|
72
|
+
cwd?: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* A hook can be either a simple string (command) or a full config object
|
|
76
|
+
*/
|
|
77
|
+
export type Hook = string | HookConfig;
|
|
45
78
|
/**
|
|
46
79
|
* Idea1 settings from .idea1/settings.json
|
|
47
80
|
*/
|
|
48
81
|
export interface Idea1Settings {
|
|
49
82
|
hooks?: {
|
|
50
|
-
'setup-worktree'?:
|
|
83
|
+
'setup-worktree'?: Hook;
|
|
84
|
+
'pre-release'?: Hook;
|
|
51
85
|
};
|
|
52
86
|
defaults?: {
|
|
53
87
|
branchPrefix?: string;
|
|
54
88
|
baseBranch?: string;
|
|
55
89
|
testCommand?: string;
|
|
90
|
+
releaseBranch?: string;
|
|
91
|
+
releaseTargetBranch?: string;
|
|
56
92
|
};
|
|
57
93
|
}
|
|
58
94
|
/**
|
|
@@ -107,4 +143,17 @@ export interface PrInfo {
|
|
|
107
143
|
url: string;
|
|
108
144
|
state: string;
|
|
109
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Release command options
|
|
148
|
+
*/
|
|
149
|
+
export interface ReleaseOptions {
|
|
150
|
+
/** Source branch to release from */
|
|
151
|
+
branch?: string;
|
|
152
|
+
/** Target branch to release to */
|
|
153
|
+
target?: string;
|
|
154
|
+
/** PR mode: merge or review */
|
|
155
|
+
prMode?: 'merge' | 'review';
|
|
156
|
+
/** PR title */
|
|
157
|
+
title?: string;
|
|
158
|
+
}
|
|
110
159
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,uEAAuE;IACvE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,gCAAgC;IAChC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,qDAAqD;IACrD,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE;QACN,gBAAgB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.1.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/version.js
CHANGED
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|