@camaradesuk/git-worktree-tools 1.0.3

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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +259 -0
  3. package/dist/cli/cleanpr.d.ts +13 -0
  4. package/dist/cli/cleanpr.d.ts.map +1 -0
  5. package/dist/cli/cleanpr.js +441 -0
  6. package/dist/cli/cleanpr.js.map +1 -0
  7. package/dist/cli/lswt.d.ts +11 -0
  8. package/dist/cli/lswt.d.ts.map +1 -0
  9. package/dist/cli/lswt.js +313 -0
  10. package/dist/cli/lswt.js.map +1 -0
  11. package/dist/cli/newpr.d.ts +11 -0
  12. package/dist/cli/newpr.d.ts.map +1 -0
  13. package/dist/cli/newpr.js +888 -0
  14. package/dist/cli/newpr.js.map +1 -0
  15. package/dist/cli/wtlink.d.ts +15 -0
  16. package/dist/cli/wtlink.d.ts.map +1 -0
  17. package/dist/cli/wtlink.js +124 -0
  18. package/dist/cli/wtlink.js.map +1 -0
  19. package/dist/e2e/cli.e2e.test.d.ts +2 -0
  20. package/dist/e2e/cli.e2e.test.d.ts.map +1 -0
  21. package/dist/e2e/cli.e2e.test.js +215 -0
  22. package/dist/e2e/cli.e2e.test.js.map +1 -0
  23. package/dist/index.d.ts +20 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +17 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/integration/git.integration.test.d.ts +2 -0
  28. package/dist/integration/git.integration.test.d.ts.map +1 -0
  29. package/dist/integration/git.integration.test.js +333 -0
  30. package/dist/integration/git.integration.test.js.map +1 -0
  31. package/dist/lib/colors.d.ts +59 -0
  32. package/dist/lib/colors.d.ts.map +1 -0
  33. package/dist/lib/colors.js +145 -0
  34. package/dist/lib/colors.js.map +1 -0
  35. package/dist/lib/colors.test.d.ts +2 -0
  36. package/dist/lib/colors.test.d.ts.map +1 -0
  37. package/dist/lib/colors.test.js +69 -0
  38. package/dist/lib/colors.test.js.map +1 -0
  39. package/dist/lib/config.d.ts +58 -0
  40. package/dist/lib/config.d.ts.map +1 -0
  41. package/dist/lib/config.js +91 -0
  42. package/dist/lib/config.js.map +1 -0
  43. package/dist/lib/config.test.d.ts +2 -0
  44. package/dist/lib/config.test.d.ts.map +1 -0
  45. package/dist/lib/config.test.js +84 -0
  46. package/dist/lib/config.test.js.map +1 -0
  47. package/dist/lib/constants.d.ts +37 -0
  48. package/dist/lib/constants.d.ts.map +1 -0
  49. package/dist/lib/constants.js +37 -0
  50. package/dist/lib/constants.js.map +1 -0
  51. package/dist/lib/errors.d.ts +88 -0
  52. package/dist/lib/errors.d.ts.map +1 -0
  53. package/dist/lib/errors.js +112 -0
  54. package/dist/lib/errors.js.map +1 -0
  55. package/dist/lib/errors.test.d.ts +2 -0
  56. package/dist/lib/errors.test.d.ts.map +1 -0
  57. package/dist/lib/errors.test.js +117 -0
  58. package/dist/lib/errors.test.js.map +1 -0
  59. package/dist/lib/git.d.ts +224 -0
  60. package/dist/lib/git.d.ts.map +1 -0
  61. package/dist/lib/git.js +524 -0
  62. package/dist/lib/git.js.map +1 -0
  63. package/dist/lib/git.test.d.ts +2 -0
  64. package/dist/lib/git.test.d.ts.map +1 -0
  65. package/dist/lib/git.test.js +402 -0
  66. package/dist/lib/git.test.js.map +1 -0
  67. package/dist/lib/github.d.ts +82 -0
  68. package/dist/lib/github.d.ts.map +1 -0
  69. package/dist/lib/github.js +254 -0
  70. package/dist/lib/github.js.map +1 -0
  71. package/dist/lib/github.test.d.ts +2 -0
  72. package/dist/lib/github.test.d.ts.map +1 -0
  73. package/dist/lib/github.test.js +258 -0
  74. package/dist/lib/github.test.js.map +1 -0
  75. package/dist/lib/prompts.d.ts +39 -0
  76. package/dist/lib/prompts.d.ts.map +1 -0
  77. package/dist/lib/prompts.js +213 -0
  78. package/dist/lib/prompts.js.map +1 -0
  79. package/dist/lib/prompts.test.d.ts +2 -0
  80. package/dist/lib/prompts.test.d.ts.map +1 -0
  81. package/dist/lib/prompts.test.js +250 -0
  82. package/dist/lib/prompts.test.js.map +1 -0
  83. package/dist/lib/state-detection.d.ts +65 -0
  84. package/dist/lib/state-detection.d.ts.map +1 -0
  85. package/dist/lib/state-detection.js +186 -0
  86. package/dist/lib/state-detection.js.map +1 -0
  87. package/dist/lib/state-detection.test.d.ts +2 -0
  88. package/dist/lib/state-detection.test.d.ts.map +1 -0
  89. package/dist/lib/state-detection.test.js +164 -0
  90. package/dist/lib/state-detection.test.js.map +1 -0
  91. package/dist/lib/wtlink/index.d.ts +5 -0
  92. package/dist/lib/wtlink/index.d.ts.map +1 -0
  93. package/dist/lib/wtlink/index.js +7 -0
  94. package/dist/lib/wtlink/index.js.map +1 -0
  95. package/dist/lib/wtlink/link-configs.d.ts +10 -0
  96. package/dist/lib/wtlink/link-configs.d.ts.map +1 -0
  97. package/dist/lib/wtlink/link-configs.js +411 -0
  98. package/dist/lib/wtlink/link-configs.js.map +1 -0
  99. package/dist/lib/wtlink/link-configs.test.d.ts +2 -0
  100. package/dist/lib/wtlink/link-configs.test.d.ts.map +1 -0
  101. package/dist/lib/wtlink/link-configs.test.js +179 -0
  102. package/dist/lib/wtlink/link-configs.test.js.map +1 -0
  103. package/dist/lib/wtlink/main-menu.d.ts +2 -0
  104. package/dist/lib/wtlink/main-menu.d.ts.map +1 -0
  105. package/dist/lib/wtlink/main-menu.js +149 -0
  106. package/dist/lib/wtlink/main-menu.js.map +1 -0
  107. package/dist/lib/wtlink/manage-manifest.d.ts +9 -0
  108. package/dist/lib/wtlink/manage-manifest.d.ts.map +1 -0
  109. package/dist/lib/wtlink/manage-manifest.js +1262 -0
  110. package/dist/lib/wtlink/manage-manifest.js.map +1 -0
  111. package/dist/lib/wtlink/validate-manifest.d.ts +6 -0
  112. package/dist/lib/wtlink/validate-manifest.d.ts.map +1 -0
  113. package/dist/lib/wtlink/validate-manifest.js +51 -0
  114. package/dist/lib/wtlink/validate-manifest.js.map +1 -0
  115. package/dist/lib/wtlink/validate-manifest.test.d.ts +2 -0
  116. package/dist/lib/wtlink/validate-manifest.test.d.ts.map +1 -0
  117. package/dist/lib/wtlink/validate-manifest.test.js +115 -0
  118. package/dist/lib/wtlink/validate-manifest.test.js.map +1 -0
  119. package/package.json +84 -0
@@ -0,0 +1,313 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * lswt - List git worktrees with PR status
4
+ *
5
+ * Usage:
6
+ * lswt List all worktrees
7
+ * lswt --status Include PR status (open/merged/closed)
8
+ * lswt --json Output as JSON
9
+ */
10
+ import * as path from 'path';
11
+ import * as git from '../lib/git.js';
12
+ import * as github from '../lib/github.js';
13
+ import * as colors from '../lib/colors.js';
14
+ import { loadConfig } from '../lib/config.js';
15
+ function parseArgs() {
16
+ const args = process.argv.slice(2);
17
+ const options = {
18
+ showStatus: false,
19
+ json: false,
20
+ verbose: false,
21
+ };
22
+ for (const arg of args) {
23
+ switch (arg) {
24
+ case '-h':
25
+ case '--help':
26
+ printHelp();
27
+ process.exit(0);
28
+ break;
29
+ case '-s':
30
+ case '--status':
31
+ options.showStatus = true;
32
+ break;
33
+ case '-j':
34
+ case '--json':
35
+ options.json = true;
36
+ break;
37
+ case '-v':
38
+ case '--verbose':
39
+ options.verbose = true;
40
+ break;
41
+ default:
42
+ if (arg.startsWith('-')) {
43
+ console.error(colors.error(`Unknown option: ${arg}`));
44
+ process.exit(1);
45
+ }
46
+ }
47
+ }
48
+ return options;
49
+ }
50
+ function printHelp() {
51
+ console.log(`
52
+ ${colors.bold('lswt')} - List git worktrees with PR status
53
+
54
+ ${colors.bold('USAGE')}
55
+ lswt [options]
56
+
57
+ ${colors.bold('OPTIONS')}
58
+ -s, --status Include PR status from GitHub (open/merged/closed)
59
+ -j, --json Output as JSON
60
+ -v, --verbose Show more details (commit hashes, full paths)
61
+ -h, --help Show this help message
62
+
63
+ ${colors.bold('EXAMPLES')}
64
+ lswt # List all worktrees
65
+ lswt --status # Include PR status (requires gh cli)
66
+ lswt --json # Output as JSON for scripting
67
+
68
+ ${colors.bold('OUTPUT')}
69
+ Shows each worktree with:
70
+ - Type indicator: [main], [PR #123 OPEN], [branch], [detached]
71
+ - Branch name
72
+ - Path (relative or absolute based on context)
73
+ - Uncommitted changes indicator
74
+ `);
75
+ }
76
+ /**
77
+ * Extract PR number from worktree path
78
+ */
79
+ function extractPrNumber(worktreePath, config) {
80
+ const name = path.basename(worktreePath);
81
+ // Try common patterns
82
+ const patterns = [/\.pr(\d+)$/, /\.pr-(\d+)$/, /-pr(\d+)$/, /_pr(\d+)$/];
83
+ for (const p of patterns) {
84
+ const match = name.match(p);
85
+ if (match) {
86
+ return parseInt(match[1], 10);
87
+ }
88
+ }
89
+ return null;
90
+ }
91
+ /**
92
+ * Check if worktree is the main/bare worktree
93
+ */
94
+ function isMainWorktree(worktreePath, repoRoot) {
95
+ return path.resolve(worktreePath) === path.resolve(repoRoot);
96
+ }
97
+ /**
98
+ * Check for uncommitted changes in a worktree
99
+ */
100
+ function hasUncommittedChanges(worktreePath) {
101
+ try {
102
+ const { execSync } = require('child_process');
103
+ const status = execSync('git status --porcelain', {
104
+ cwd: worktreePath,
105
+ encoding: 'utf-8',
106
+ stdio: ['pipe', 'pipe', 'pipe'],
107
+ }).trim();
108
+ return status.length > 0;
109
+ }
110
+ catch {
111
+ return false;
112
+ }
113
+ }
114
+ /**
115
+ * Get PR state from GitHub
116
+ */
117
+ async function getPrState(prNumber) {
118
+ try {
119
+ const pr = await github.getPr(prNumber);
120
+ if (!pr) {
121
+ return null;
122
+ }
123
+ // pr.state is already 'OPEN' | 'CLOSED' | 'MERGED'
124
+ return pr.state;
125
+ }
126
+ catch {
127
+ return null;
128
+ }
129
+ }
130
+ /**
131
+ * Format type label with colors
132
+ */
133
+ function formatTypeLabel(display) {
134
+ switch (display.type) {
135
+ case 'main':
136
+ return colors.cyan('[main]');
137
+ case 'pr':
138
+ const prLabel = `PR #${display.prNumber}`;
139
+ if (display.prState === 'OPEN') {
140
+ return colors.green(`[${prLabel} OPEN]`);
141
+ }
142
+ else if (display.prState === 'MERGED') {
143
+ return colors.yellow(`[${prLabel} MERGED]`);
144
+ }
145
+ else if (display.prState === 'CLOSED') {
146
+ return colors.red(`[${prLabel} CLOSED]`);
147
+ }
148
+ else {
149
+ return colors.dim(`[${prLabel}]`);
150
+ }
151
+ case 'branch':
152
+ return colors.blue('[branch]');
153
+ case 'detached':
154
+ return colors.dim('[detached]');
155
+ default:
156
+ return colors.dim('[unknown]');
157
+ }
158
+ }
159
+ /**
160
+ * Gather worktree information
161
+ */
162
+ async function gatherWorktreeInfo(repoRoot, config, options) {
163
+ const worktrees = await git.listWorktrees();
164
+ const result = [];
165
+ for (const wt of worktrees) {
166
+ const name = path.basename(wt.path);
167
+ const prNumber = extractPrNumber(wt.path, config);
168
+ const isMain = isMainWorktree(wt.path, repoRoot);
169
+ const hasChanges = hasUncommittedChanges(wt.path);
170
+ let type;
171
+ let prState = null;
172
+ if (isMain) {
173
+ type = 'main';
174
+ }
175
+ else if (prNumber !== null) {
176
+ type = 'pr';
177
+ if (options.showStatus) {
178
+ prState = await getPrState(prNumber);
179
+ }
180
+ }
181
+ else if (wt.branch) {
182
+ type = 'branch';
183
+ }
184
+ else {
185
+ type = 'detached';
186
+ }
187
+ result.push({
188
+ path: wt.path,
189
+ name,
190
+ branch: wt.branch,
191
+ commit: wt.commit,
192
+ type,
193
+ prNumber,
194
+ prState,
195
+ hasChanges,
196
+ });
197
+ }
198
+ // Sort: main first, then PRs by number, then others
199
+ result.sort((a, b) => {
200
+ if (a.type === 'main')
201
+ return -1;
202
+ if (b.type === 'main')
203
+ return 1;
204
+ if (a.type === 'pr' && b.type === 'pr') {
205
+ return (a.prNumber || 0) - (b.prNumber || 0);
206
+ }
207
+ if (a.type === 'pr')
208
+ return -1;
209
+ if (b.type === 'pr')
210
+ return 1;
211
+ return a.name.localeCompare(b.name);
212
+ });
213
+ return result;
214
+ }
215
+ /**
216
+ * Print worktrees in table format
217
+ */
218
+ function printTable(worktrees, options) {
219
+ if (worktrees.length === 0) {
220
+ console.log(colors.info('No worktrees found.'));
221
+ return;
222
+ }
223
+ const repoName = path.basename(worktrees[0].path.replace(/\.pr\d+$/, ''));
224
+ console.log('');
225
+ console.log(colors.bold(`${repoName} worktrees:`));
226
+ console.log('');
227
+ for (const wt of worktrees) {
228
+ const typeLabel = formatTypeLabel(wt);
229
+ const changeIndicator = wt.hasChanges ? colors.red(' *') : '';
230
+ console.log(` ${typeLabel}${changeIndicator}`);
231
+ console.log(` Branch: ${wt.branch || colors.dim('(detached)')}`);
232
+ if (options.verbose) {
233
+ console.log(` Path: ${wt.path}`);
234
+ console.log(` Commit: ${colors.dim(wt.commit)}`);
235
+ }
236
+ else {
237
+ // Show relative path if possible
238
+ const cwd = process.cwd();
239
+ let displayPath = wt.path;
240
+ if (wt.path.startsWith(cwd)) {
241
+ displayPath = path.relative(cwd, wt.path) || '.';
242
+ }
243
+ else if (wt.path.startsWith(path.dirname(cwd))) {
244
+ displayPath = path.relative(path.dirname(cwd), wt.path);
245
+ }
246
+ console.log(` Path: ${displayPath}`);
247
+ }
248
+ console.log('');
249
+ }
250
+ // Summary
251
+ const prCount = worktrees.filter((w) => w.type === 'pr').length;
252
+ const openCount = worktrees.filter((w) => w.prState === 'OPEN').length;
253
+ const changesCount = worktrees.filter((w) => w.hasChanges).length;
254
+ const parts = [`${worktrees.length} worktrees`];
255
+ if (prCount > 0) {
256
+ parts.push(`${prCount} PRs`);
257
+ }
258
+ if (openCount > 0) {
259
+ parts.push(`${openCount} open`);
260
+ }
261
+ if (changesCount > 0) {
262
+ parts.push(colors.red(`${changesCount} with changes`));
263
+ }
264
+ console.log(colors.dim(parts.join(' · ')));
265
+ console.log('');
266
+ }
267
+ /**
268
+ * Print worktrees as JSON
269
+ */
270
+ function printJson(worktrees) {
271
+ const output = worktrees.map((wt) => ({
272
+ path: wt.path,
273
+ name: wt.name,
274
+ branch: wt.branch,
275
+ commit: wt.commit,
276
+ type: wt.type,
277
+ prNumber: wt.prNumber,
278
+ prState: wt.prState,
279
+ hasChanges: wt.hasChanges,
280
+ }));
281
+ console.log(JSON.stringify(output, null, 2));
282
+ }
283
+ async function main() {
284
+ const options = parseArgs();
285
+ // Check for gh cli if status requested
286
+ if (options.showStatus && !github.isGhInstalled()) {
287
+ console.error(colors.warning('GitHub CLI (gh) not installed. PR status will not be shown.'));
288
+ console.error(colors.dim('Install: https://cli.github.com/'));
289
+ options.showStatus = false;
290
+ }
291
+ // Find repo root
292
+ const repoRoot = git.getRepoRoot();
293
+ if (!repoRoot) {
294
+ console.error(colors.error('Not in a git repository.'));
295
+ process.exit(1);
296
+ }
297
+ // Load configuration
298
+ const config = loadConfig(repoRoot);
299
+ // Gather worktree info
300
+ const worktrees = await gatherWorktreeInfo(repoRoot, config, options);
301
+ // Output
302
+ if (options.json) {
303
+ printJson(worktrees);
304
+ }
305
+ else {
306
+ printTable(worktrees, options);
307
+ }
308
+ }
309
+ main().catch((err) => {
310
+ console.error(colors.error(`Error: ${err.message}`));
311
+ process.exit(1);
312
+ });
313
+ //# sourceMappingURL=lswt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lswt.js","sourceRoot":"","sources":["../../src/cli/lswt.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAmB9C,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAgB;QAC3B,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,KAAK;KACf,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBACX,SAAS,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,MAAM;YACR,KAAK,IAAI,CAAC;YACV,KAAK,UAAU;gBACb,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC1B,MAAM;YACR,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBACX,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBACpB,MAAM;YACR,KAAK,IAAI,CAAC;YACV,KAAK,WAAW;gBACd,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvB,MAAM;YACR;gBACE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC,CAAC;oBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;EACZ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;EAEnB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;;;EAGpB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;;;;;;EAMtB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;;;;;EAKvB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;;;;;;CAMtB,CAAC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,YAAoB,EACpB,MAAqC;IAErC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEzC,sBAAsB;IACtB,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAEzE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,YAAoB,EAAE,QAAgB;IAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,YAAoB;IACjD,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE;YAChD,GAAG,EAAE,YAAY;YACjB,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mDAAmD;QACnD,OAAO,EAAE,CAAC,KAAK,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAAwB;IAC/C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,KAAK,IAAI;YACP,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,QAAQ,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACxC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,UAAU,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACxC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,UAAU,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;YACpC,CAAC;QACH,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,KAAK,UAAU;YACb,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClC;YACE,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,QAAgB,EAChB,MAAqC,EACrC,OAAoB;IAEpB,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,IAA2C,CAAC;QAChD,IAAI,OAAO,GAAkB,IAAI,CAAC;QAElC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC;YACZ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,GAAG,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,IAAI;YACJ,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,IAAI;YACJ,QAAQ;YACR,OAAO;YACP,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,SAA4B,EAAE,OAAoB;IACpE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;IAE1E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,aAAa,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE9D,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,eAAe,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAEpE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,iCAAiC;YACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC;YAC1B,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;YACnD,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACjD,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,UAAU;IACV,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAElE,MAAM,KAAK,GAAa,CAAC,GAAG,SAAS,CAAC,MAAM,YAAY,CAAC,CAAC;IAC1D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,eAAe,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,SAA4B;IAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,UAAU,EAAE,EAAE,CAAC,UAAU;KAC1B,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAE5B,uCAAuC;IACvC,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,CAAC;QAC7F,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qBAAqB;IACrB,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEpC,uBAAuB;IACvB,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAEtE,SAAS;IACT,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * newpr - Create or setup a PR with a dedicated worktree
4
+ *
5
+ * Usage:
6
+ * newpr "feature description" Create new branch + PR + worktree
7
+ * newpr --pr <NUMBER> Setup worktree for existing PR
8
+ * newpr --branch <NAME> Create PR for existing branch + worktree
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=newpr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newpr.d.ts","sourceRoot":"","sources":["../../src/cli/newpr.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}