@bretwardjames/ghp-cli 0.1.14 → 0.2.0-beta.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/README.md +40 -161
- package/dist/active-label.d.ts +40 -0
- package/dist/active-label.d.ts.map +1 -0
- package/dist/active-label.js +128 -0
- package/dist/active-label.js.map +1 -0
- package/dist/commands/add-issue.d.ts +3 -0
- package/dist/commands/add-issue.d.ts.map +1 -1
- package/dist/commands/add-issue.js +26 -27
- package/dist/commands/add-issue.js.map +1 -1
- package/dist/commands/done.d.ts.map +1 -1
- package/dist/commands/done.js +27 -1
- package/dist/commands/done.js.map +1 -1
- package/dist/commands/mcp.d.ts +7 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +120 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/start.d.ts +16 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +213 -154
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/switch.d.ts +8 -1
- package/dist/commands/switch.d.ts.map +1 -1
- package/dist/commands/switch.js +67 -23
- package/dist/commands/switch.js.map +1 -1
- package/dist/commands/worktree.d.ts +16 -0
- package/dist/commands/worktree.d.ts.map +1 -0
- package/dist/commands/worktree.js +102 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/config.d.ts +16 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +22 -1
- package/dist/config.js.map +1 -1
- package/dist/git-utils.d.ts +2 -2
- package/dist/git-utils.d.ts.map +1 -1
- package/dist/git-utils.js +3 -1
- package/dist/git-utils.js.map +1 -1
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -1
- package/dist/prompts.d.ts +28 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +66 -0
- package/dist/prompts.js.map +1 -1
- package/dist/worktree-utils.d.ts +38 -0
- package/dist/worktree-utils.d.ts.map +1 -0
- package/dist/worktree-utils.js +145 -0
- package/dist/worktree-utils.js.map +1 -0
- package/package.json +10 -12
package/README.md
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
# ghp-cli
|
|
1
|
+
# @bretwardjames/ghp-cli
|
|
2
2
|
|
|
3
3
|
GitHub Projects CLI - manage project boards from your terminal.
|
|
4
4
|
|
|
5
|
-
Part of the [GHP
|
|
5
|
+
Part of the [GHP monorepo](https://github.com/bretwardjames/ghp). Works alongside the [VS Code/Cursor extension](https://github.com/bretwardjames/ghp/tree/main/apps/vscode) for a complete GitHub Projects workflow.
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
9
|
-
**Quick install (CLI + VS Code extension):**
|
|
10
|
-
```bash
|
|
11
|
-
curl -fsSL https://raw.githubusercontent.com/bretwardjames/ghp-core/main/install.sh | bash
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
**CLI only:**
|
|
15
9
|
```bash
|
|
16
10
|
npm install -g @bretwardjames/ghp-cli
|
|
17
11
|
```
|
|
@@ -28,8 +22,8 @@ ghp work
|
|
|
28
22
|
# View project board
|
|
29
23
|
ghp plan
|
|
30
24
|
|
|
31
|
-
#
|
|
32
|
-
ghp
|
|
25
|
+
# Start working on an issue
|
|
26
|
+
ghp start 123
|
|
33
27
|
```
|
|
34
28
|
|
|
35
29
|
## Commands
|
|
@@ -37,107 +31,68 @@ ghp add "Fix login bug"
|
|
|
37
31
|
### Views
|
|
38
32
|
|
|
39
33
|
```bash
|
|
40
|
-
# Your
|
|
41
|
-
ghp work
|
|
34
|
+
ghp work # Your assigned items
|
|
42
35
|
ghp work --status "In Progress"
|
|
43
|
-
ghp work --
|
|
44
|
-
ghp work --group priority # Group by field
|
|
36
|
+
ghp work --group priority # Group by field
|
|
45
37
|
|
|
46
|
-
# Project board
|
|
47
|
-
ghp plan
|
|
48
|
-
ghp plan --
|
|
49
|
-
ghp plan
|
|
50
|
-
ghp plan --slice type=Bug # Filter by field
|
|
51
|
-
ghp plan bugs # Use configured shortcut
|
|
38
|
+
ghp plan # Project board
|
|
39
|
+
ghp plan --mine # Only my items
|
|
40
|
+
ghp plan --slice type=Bug # Filter by field
|
|
41
|
+
ghp plan bugs # Use configured shortcut
|
|
52
42
|
```
|
|
53
43
|
|
|
54
44
|
### Issue Management
|
|
55
45
|
|
|
56
46
|
```bash
|
|
57
|
-
# Create issue
|
|
58
|
-
ghp add
|
|
59
|
-
ghp
|
|
60
|
-
ghp
|
|
61
|
-
|
|
62
|
-
#
|
|
63
|
-
ghp open 123
|
|
64
|
-
ghp open 123 --browser # Open in browser
|
|
65
|
-
|
|
66
|
-
# Edit issue description
|
|
67
|
-
ghp edit 123 # Opens in $EDITOR
|
|
68
|
-
|
|
69
|
-
# Add comment
|
|
70
|
-
ghp comment 123 -m "Fixed in latest commit"
|
|
71
|
-
ghp comment 123 # Opens editor
|
|
47
|
+
ghp add "Issue title" # Create issue
|
|
48
|
+
ghp add -t bug_report # Use specific template
|
|
49
|
+
ghp open 123 # View issue details
|
|
50
|
+
ghp open 123 --browser # Open in browser
|
|
51
|
+
ghp edit 123 # Edit in $EDITOR
|
|
52
|
+
ghp comment 123 -m "message" # Add comment
|
|
72
53
|
```
|
|
73
54
|
|
|
74
55
|
### Workflow
|
|
75
56
|
|
|
76
57
|
```bash
|
|
77
|
-
|
|
78
|
-
ghp
|
|
79
|
-
|
|
80
|
-
#
|
|
81
|
-
ghp done 123
|
|
82
|
-
|
|
83
|
-
# Move to different status
|
|
84
|
-
ghp move 123 "In Review"
|
|
85
|
-
|
|
86
|
-
# Assign users
|
|
87
|
-
ghp assign 123 @username
|
|
88
|
-
ghp assign 123 # Assign to self
|
|
58
|
+
ghp start 123 # Create branch, update status
|
|
59
|
+
ghp done 123 # Mark as done
|
|
60
|
+
ghp move 123 "In Review" # Change status
|
|
61
|
+
ghp assign 123 @username # Assign users
|
|
89
62
|
```
|
|
90
63
|
|
|
91
64
|
### Branch Management
|
|
92
65
|
|
|
93
66
|
```bash
|
|
94
|
-
# Switch to issue's branch
|
|
95
|
-
ghp
|
|
96
|
-
|
|
97
|
-
#
|
|
98
|
-
ghp link-branch 123
|
|
99
|
-
|
|
100
|
-
# Unlink branch
|
|
101
|
-
ghp unlink-branch 123
|
|
102
|
-
|
|
103
|
-
# Sync active label with current branch
|
|
104
|
-
ghp sync
|
|
67
|
+
ghp switch 123 # Switch to issue's branch
|
|
68
|
+
ghp link-branch 123 # Link current branch to issue
|
|
69
|
+
ghp unlink-branch 123 # Unlink branch
|
|
70
|
+
ghp sync # Sync active label with branch
|
|
105
71
|
```
|
|
106
72
|
|
|
107
73
|
## Configuration
|
|
108
74
|
|
|
109
|
-
ghp-cli uses a layered config system (like VS Code):
|
|
110
|
-
|
|
111
|
-
| Layer | Path | Purpose |
|
|
112
|
-
|-------|------|---------|
|
|
113
|
-
| **Workspace** | `.ghp/config.json` | Team settings (commit this) |
|
|
114
|
-
| **User** | `~/.config/ghp-cli/config.json` | Personal overrides |
|
|
115
|
-
|
|
116
|
-
Settings merge: defaults → workspace → user
|
|
117
|
-
|
|
118
|
-
### Config Commands
|
|
119
|
-
|
|
120
75
|
```bash
|
|
121
|
-
# View
|
|
122
|
-
ghp config
|
|
123
|
-
|
|
124
|
-
#
|
|
125
|
-
|
|
76
|
+
ghp config --show # View all settings
|
|
77
|
+
ghp config # Edit user config
|
|
78
|
+
ghp config -w # Edit workspace config (shared)
|
|
79
|
+
ghp config sync # Sync with VS Code/Cursor
|
|
80
|
+
```
|
|
126
81
|
|
|
127
|
-
|
|
128
|
-
ghp config -w
|
|
82
|
+
## MCP Server (Claude Desktop)
|
|
129
83
|
|
|
130
|
-
|
|
131
|
-
ghp config mainBranch
|
|
132
|
-
ghp config mainBranch develop
|
|
133
|
-
ghp config mainBranch develop -w # Set in workspace config
|
|
84
|
+
Configure the ghp MCP server for use with Claude Desktop:
|
|
134
85
|
|
|
135
|
-
|
|
136
|
-
ghp
|
|
137
|
-
ghp config
|
|
86
|
+
```bash
|
|
87
|
+
ghp mcp --install # Auto-configure Claude Desktop
|
|
88
|
+
ghp mcp --config # Show config JSON to copy manually
|
|
138
89
|
```
|
|
139
90
|
|
|
140
|
-
|
|
91
|
+
**Config files:**
|
|
92
|
+
- User: `~/.config/ghp-cli/config.json`
|
|
93
|
+
- Workspace: `.ghp/config.json` (commit this)
|
|
94
|
+
|
|
95
|
+
### Example Config
|
|
141
96
|
|
|
142
97
|
```json
|
|
143
98
|
{
|
|
@@ -145,92 +100,16 @@ ghp config sync -w # Sync to workspace config
|
|
|
145
100
|
"branchPattern": "{user}/{number}-{title}",
|
|
146
101
|
"startWorkingStatus": "In Progress",
|
|
147
102
|
"doneStatus": "Done",
|
|
148
|
-
|
|
149
|
-
"defaults": {
|
|
150
|
-
"plan": {
|
|
151
|
-
"mine": true
|
|
152
|
-
},
|
|
153
|
-
"addIssue": {
|
|
154
|
-
"template": "bug_report",
|
|
155
|
-
"status": "Backlog"
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
|
|
159
103
|
"shortcuts": {
|
|
160
|
-
"bugs": {
|
|
161
|
-
"status": "Backlog",
|
|
162
|
-
"slice": ["type=Bug"]
|
|
163
|
-
},
|
|
164
|
-
"mywork": {
|
|
165
|
-
"status": "In Progress",
|
|
166
|
-
"mine": true
|
|
167
|
-
}
|
|
104
|
+
"bugs": { "status": "Backlog", "slice": ["type=Bug"] }
|
|
168
105
|
}
|
|
169
106
|
}
|
|
170
107
|
```
|
|
171
108
|
|
|
172
|
-
### Shortcuts
|
|
173
|
-
|
|
174
|
-
Define shortcuts for common `ghp plan` filters:
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
ghp plan bugs # Expands to: ghp plan --status Backlog --slice type=Bug
|
|
178
|
-
ghp plan mywork # Expands to: ghp plan --status "In Progress" --mine
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### Slice Filters
|
|
182
|
-
|
|
183
|
-
Filter by any field:
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
--slice type=Bug # Issue type (org-level)
|
|
187
|
-
--slice label=frontend # Labels
|
|
188
|
-
--slice assignee=username # Assignee
|
|
189
|
-
--slice Priority=High # Custom project fields
|
|
190
|
-
--slice Size=Small # Custom project fields
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
### Syncing with VS Code
|
|
194
|
-
|
|
195
|
-
If you use the VS Code extension, you can sync shared settings bidirectionally:
|
|
196
|
-
|
|
197
|
-
```bash
|
|
198
|
-
ghp config sync
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
This compares settings between CLI and VS Code/Cursor and lets you choose which to keep:
|
|
202
|
-
- For conflicting settings: choose CLI value, VS Code value, enter custom, or skip
|
|
203
|
-
- For settings only in one place: optionally sync to the other
|
|
204
|
-
- Changes are applied to both CLI config and VS Code settings
|
|
205
|
-
|
|
206
|
-
**Syncable settings:**
|
|
207
|
-
| CLI | VS Code |
|
|
208
|
-
|-----|---------|
|
|
209
|
-
| `mainBranch` | `ghProjects.mainBranch` |
|
|
210
|
-
| `branchPattern` | `ghProjects.branchNamePattern` |
|
|
211
|
-
| `startWorkingStatus` | `ghProjects.startWorkingStatus` |
|
|
212
|
-
| `doneStatus` | `ghProjects.prMergedStatus` |
|
|
213
|
-
|
|
214
|
-
You can also sync from VS Code using the Command Palette: "GitHub Projects: Sync Settings with CLI"
|
|
215
|
-
|
|
216
|
-
## Issue Templates
|
|
217
|
-
|
|
218
|
-
Place templates in `.github/ISSUE_TEMPLATE/` in your repo. When creating issues, you can:
|
|
219
|
-
|
|
220
|
-
- Select a template interactively (if no default set)
|
|
221
|
-
- Use `-t <name>` to specify a template
|
|
222
|
-
- Set `defaults.addIssue.template` in config for auto-selection
|
|
223
|
-
|
|
224
109
|
## Requirements
|
|
225
110
|
|
|
226
111
|
- Node.js >= 18
|
|
227
112
|
- GitHub account with Projects access
|
|
228
|
-
- `gh` CLI recommended (for auth token)
|
|
229
|
-
|
|
230
|
-
## Related
|
|
231
|
-
|
|
232
|
-
- [ghp-core](https://github.com/bretwardjames/ghp-core) - Shared library and install script
|
|
233
|
-
- [vscode-gh-projects](https://github.com/bretwardjames/vscode-gh-projects) - VS Code/Cursor extension
|
|
234
113
|
|
|
235
114
|
## License
|
|
236
115
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active label management for ghp CLI.
|
|
3
|
+
*
|
|
4
|
+
* The active label (@username:active) indicates which issue(s) a user is currently
|
|
5
|
+
* working on. This module handles applying and removing the label with awareness
|
|
6
|
+
* of parallel worktree workflows.
|
|
7
|
+
*/
|
|
8
|
+
import { type RepoInfo } from './github-api.js';
|
|
9
|
+
/**
|
|
10
|
+
* Apply the "actively working" label to an issue.
|
|
11
|
+
*
|
|
12
|
+
* @param repo - Repository information
|
|
13
|
+
* @param issueNumber - The issue number to apply the label to
|
|
14
|
+
* @param exclusive - If true (default), remove label from other issues.
|
|
15
|
+
* If false, just add without removing from others (for parallel work).
|
|
16
|
+
*/
|
|
17
|
+
export declare function applyActiveLabel(repo: RepoInfo, issueNumber: number, exclusive?: boolean): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Remove the active label from an issue, but protect other issues that have
|
|
20
|
+
* active worktrees. This is used when completing or moving away from an issue.
|
|
21
|
+
*
|
|
22
|
+
* Logic:
|
|
23
|
+
* - Remove the label from the specified issue
|
|
24
|
+
* - For other issues with the active label, only remove if they don't have
|
|
25
|
+
* an active worktree
|
|
26
|
+
*
|
|
27
|
+
* @param repo - Repository information
|
|
28
|
+
* @param issueNumber - The issue to remove the label from
|
|
29
|
+
* @param removeFromOthers - If true, also remove from other non-worktree issues
|
|
30
|
+
*/
|
|
31
|
+
export declare function removeActiveLabelSafely(repo: RepoInfo, issueNumber: number, removeFromOthers?: boolean): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Get all issues that have the active label and an active worktree.
|
|
34
|
+
* Useful for checking what parallel work is in progress.
|
|
35
|
+
*
|
|
36
|
+
* @param repo - Repository information
|
|
37
|
+
* @returns Array of issue numbers with both active label and worktree
|
|
38
|
+
*/
|
|
39
|
+
export declare function getActiveWorktreeIssues(repo: RepoInfo): Promise<number[]>;
|
|
40
|
+
//# sourceMappingURL=active-label.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-label.d.ts","sourceRoot":"","sources":["../src/active-label.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIrD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAClC,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAc,GAC1B,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CACzC,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,EACnB,gBAAgB,GAAE,OAAc,GACjC,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA0B/E"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active label management for ghp CLI.
|
|
3
|
+
*
|
|
4
|
+
* The active label (@username:active) indicates which issue(s) a user is currently
|
|
5
|
+
* working on. This module handles applying and removing the label with awareness
|
|
6
|
+
* of parallel worktree workflows.
|
|
7
|
+
*/
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { api } from './github-api.js';
|
|
10
|
+
import { listWorktrees } from './git-utils.js';
|
|
11
|
+
import { getBranchForIssue } from './branch-linker.js';
|
|
12
|
+
/**
|
|
13
|
+
* Apply the "actively working" label to an issue.
|
|
14
|
+
*
|
|
15
|
+
* @param repo - Repository information
|
|
16
|
+
* @param issueNumber - The issue number to apply the label to
|
|
17
|
+
* @param exclusive - If true (default), remove label from other issues.
|
|
18
|
+
* If false, just add without removing from others (for parallel work).
|
|
19
|
+
*/
|
|
20
|
+
export async function applyActiveLabel(repo, issueNumber, exclusive = true) {
|
|
21
|
+
const activeLabel = api.getActiveLabelName();
|
|
22
|
+
// Ensure the label exists
|
|
23
|
+
await api.ensureLabel(repo, activeLabel);
|
|
24
|
+
// In exclusive mode, remove label from other issues first
|
|
25
|
+
// But protect issues that have active worktrees
|
|
26
|
+
if (exclusive) {
|
|
27
|
+
const issuesWithLabel = await api.findIssuesWithLabel(repo, activeLabel);
|
|
28
|
+
// Get all worktree branches to protect issues with active worktrees
|
|
29
|
+
const worktrees = await listWorktrees();
|
|
30
|
+
const worktreeBranches = new Set(worktrees
|
|
31
|
+
.filter(wt => wt.branch && !wt.isMain)
|
|
32
|
+
.map(wt => wt.branch));
|
|
33
|
+
for (const otherIssue of issuesWithLabel) {
|
|
34
|
+
if (otherIssue === issueNumber)
|
|
35
|
+
continue;
|
|
36
|
+
// Check if this issue's branch has a worktree
|
|
37
|
+
const linkedBranch = await getBranchForIssue(repo, otherIssue);
|
|
38
|
+
if (linkedBranch && worktreeBranches.has(linkedBranch)) {
|
|
39
|
+
// Has active worktree - keep the label
|
|
40
|
+
console.log(chalk.dim(`Keeping ${activeLabel} on #${otherIssue} (has active worktree)`));
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
// No worktree - remove label
|
|
44
|
+
await api.removeLabelFromIssue(repo, otherIssue, activeLabel);
|
|
45
|
+
console.log(chalk.dim(`Removed ${activeLabel} from #${otherIssue}`));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Add label to current issue
|
|
49
|
+
const labelAdded = await api.addLabelToIssue(repo, issueNumber, activeLabel);
|
|
50
|
+
if (labelAdded) {
|
|
51
|
+
console.log(chalk.green('✓'), `Applied "${activeLabel}" label`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Remove the active label from an issue, but protect other issues that have
|
|
56
|
+
* active worktrees. This is used when completing or moving away from an issue.
|
|
57
|
+
*
|
|
58
|
+
* Logic:
|
|
59
|
+
* - Remove the label from the specified issue
|
|
60
|
+
* - For other issues with the active label, only remove if they don't have
|
|
61
|
+
* an active worktree
|
|
62
|
+
*
|
|
63
|
+
* @param repo - Repository information
|
|
64
|
+
* @param issueNumber - The issue to remove the label from
|
|
65
|
+
* @param removeFromOthers - If true, also remove from other non-worktree issues
|
|
66
|
+
*/
|
|
67
|
+
export async function removeActiveLabelSafely(repo, issueNumber, removeFromOthers = true) {
|
|
68
|
+
const activeLabel = api.getActiveLabelName();
|
|
69
|
+
// Get all issues with the active label
|
|
70
|
+
const issuesWithLabel = await api.findIssuesWithLabel(repo, activeLabel);
|
|
71
|
+
// If the target issue has the label, remove it
|
|
72
|
+
if (issuesWithLabel.includes(issueNumber)) {
|
|
73
|
+
await api.removeLabelFromIssue(repo, issueNumber, activeLabel);
|
|
74
|
+
console.log(chalk.dim(`Removed ${activeLabel} from #${issueNumber}`));
|
|
75
|
+
}
|
|
76
|
+
// Optionally clean up labels from issues without worktrees
|
|
77
|
+
if (removeFromOthers && issuesWithLabel.length > 1) {
|
|
78
|
+
// Get all worktree branches
|
|
79
|
+
const worktrees = await listWorktrees();
|
|
80
|
+
const worktreeBranches = new Set(worktrees
|
|
81
|
+
.filter(wt => wt.branch && !wt.isMain)
|
|
82
|
+
.map(wt => wt.branch));
|
|
83
|
+
// Check each other issue
|
|
84
|
+
for (const otherIssue of issuesWithLabel) {
|
|
85
|
+
if (otherIssue === issueNumber)
|
|
86
|
+
continue;
|
|
87
|
+
// Check if this issue's branch has a worktree
|
|
88
|
+
const linkedBranch = await getBranchForIssue(repo, otherIssue);
|
|
89
|
+
if (linkedBranch && worktreeBranches.has(linkedBranch)) {
|
|
90
|
+
// Has active worktree - keep the label
|
|
91
|
+
console.log(chalk.dim(`Keeping ${activeLabel} on #${otherIssue} (has active worktree)`));
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
// No worktree - remove label (normal exclusive behavior)
|
|
95
|
+
await api.removeLabelFromIssue(repo, otherIssue, activeLabel);
|
|
96
|
+
console.log(chalk.dim(`Removed ${activeLabel} from #${otherIssue}`));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get all issues that have the active label and an active worktree.
|
|
102
|
+
* Useful for checking what parallel work is in progress.
|
|
103
|
+
*
|
|
104
|
+
* @param repo - Repository information
|
|
105
|
+
* @returns Array of issue numbers with both active label and worktree
|
|
106
|
+
*/
|
|
107
|
+
export async function getActiveWorktreeIssues(repo) {
|
|
108
|
+
const activeLabel = api.getActiveLabelName();
|
|
109
|
+
const issuesWithLabel = await api.findIssuesWithLabel(repo, activeLabel);
|
|
110
|
+
if (issuesWithLabel.length === 0) {
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
// Get all worktree branches
|
|
114
|
+
const worktrees = await listWorktrees();
|
|
115
|
+
const worktreeBranches = new Set(worktrees
|
|
116
|
+
.filter(wt => wt.branch && !wt.isMain)
|
|
117
|
+
.map(wt => wt.branch));
|
|
118
|
+
// Filter to issues with worktrees
|
|
119
|
+
const result = [];
|
|
120
|
+
for (const issueNumber of issuesWithLabel) {
|
|
121
|
+
const linkedBranch = await getBranchForIssue(repo, issueNumber);
|
|
122
|
+
if (linkedBranch && worktreeBranches.has(linkedBranch)) {
|
|
123
|
+
result.push(issueNumber);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=active-label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-label.js","sourceRoot":"","sources":["../src/active-label.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,9 @@ interface AddIssueOptions {
|
|
|
5
5
|
edit?: boolean;
|
|
6
6
|
template?: string;
|
|
7
7
|
listTemplates?: boolean;
|
|
8
|
+
noTemplate?: boolean;
|
|
9
|
+
/** Use default values for all prompts (non-interactive mode) */
|
|
10
|
+
forceDefaults?: boolean;
|
|
8
11
|
}
|
|
9
12
|
export declare function addIssueCommand(title: string, options: AddIssueOptions): Promise<void>;
|
|
10
13
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-issue.d.ts","sourceRoot":"","sources":["../../src/commands/add-issue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add-issue.d.ts","sourceRoot":"","sources":["../../src/commands/add-issue.ts"],"names":[],"mappings":"AAUA,UAAU,eAAe;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AA6DD,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6M5F"}
|
|
@@ -6,6 +6,7 @@ import { spawn } from 'child_process';
|
|
|
6
6
|
import { writeFileSync, readFileSync, unlinkSync, existsSync, readdirSync } from 'fs';
|
|
7
7
|
import { tmpdir } from 'os';
|
|
8
8
|
import { join } from 'path';
|
|
9
|
+
import { promptSelectWithDefault, isInteractive } from '../prompts.js';
|
|
9
10
|
async function openEditor(initialContent) {
|
|
10
11
|
const editor = process.env.EDITOR || process.env.VISUAL || 'vim';
|
|
11
12
|
const tmpFile = join(tmpdir(), `ghp-issue-${Date.now()}.md`);
|
|
@@ -112,20 +113,15 @@ export async function addIssueCommand(title, options) {
|
|
|
112
113
|
// Determine which template to use (CLI > config default)
|
|
113
114
|
let templateName = options.template || defaults.template;
|
|
114
115
|
// If no template specified and templates exist, prompt user to pick one
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
rl.close();
|
|
125
|
-
resolve(answer.trim());
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
const idx = parseInt(choice, 10) - 1;
|
|
116
|
+
// --no-template flag skips this entirely
|
|
117
|
+
if (!templateName && templates.length > 0 && !options.body && !options.noTemplate) {
|
|
118
|
+
// Build options list: templates + blank issue
|
|
119
|
+
const templateOptions = [...templates.map(t => t.name), chalk.dim('Blank issue')];
|
|
120
|
+
// In non-interactive or with --force-defaults, default to blank issue
|
|
121
|
+
const defaultIdx = templates.length; // "Blank issue" is last
|
|
122
|
+
const idx = await promptSelectWithDefault('Select a template:', templateOptions, defaultIdx, // default: blank issue for non-interactive
|
|
123
|
+
options.forceDefaults ? defaultIdx : undefined // --force-defaults forces blank
|
|
124
|
+
);
|
|
129
125
|
if (idx >= 0 && idx < templates.length) {
|
|
130
126
|
templateName = templates[idx].name;
|
|
131
127
|
}
|
|
@@ -151,7 +147,9 @@ export async function addIssueCommand(title, options) {
|
|
|
151
147
|
}
|
|
152
148
|
}
|
|
153
149
|
// Open editor if: using template (always), -e flag, or no body provided
|
|
154
|
-
|
|
150
|
+
// But only if we're in interactive mode
|
|
151
|
+
const shouldOpenEditor = usingTemplate || options.edit || !options.body;
|
|
152
|
+
if (shouldOpenEditor && isInteractive()) {
|
|
155
153
|
const instructions = [
|
|
156
154
|
`# ${title || '<Replace with issue title>'}`,
|
|
157
155
|
'',
|
|
@@ -182,6 +180,14 @@ export async function addIssueCommand(title, options) {
|
|
|
182
180
|
process.exit(1);
|
|
183
181
|
}
|
|
184
182
|
}
|
|
183
|
+
else if (shouldOpenEditor && !isInteractive()) {
|
|
184
|
+
// Non-interactive mode: skip editor, use template body as-is
|
|
185
|
+
if (options.edit) {
|
|
186
|
+
console.log(chalk.yellow('Warning:'), 'Cannot open editor in non-interactive mode, using body as-is');
|
|
187
|
+
}
|
|
188
|
+
// Clean up template body (remove HTML comments)
|
|
189
|
+
body = body.replace(/<!--[\s\S]*?-->/g, '').trim();
|
|
190
|
+
}
|
|
185
191
|
// Validate title
|
|
186
192
|
if (!title || title === 'Issue Title' || title === '<Replace with issue title>') {
|
|
187
193
|
console.error(chalk.red('Error:'), 'Issue title is required');
|
|
@@ -191,18 +197,11 @@ export async function addIssueCommand(title, options) {
|
|
|
191
197
|
let statusName = options.status || defaults.status;
|
|
192
198
|
const statusField = await api.getStatusField(project.id);
|
|
193
199
|
if (!statusName && statusField && statusField.options.length > 0) {
|
|
194
|
-
|
|
195
|
-
statusField.options.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
const choice = await new Promise(resolve => {
|
|
200
|
-
rl.question('Status number: ', (answer) => {
|
|
201
|
-
rl.close();
|
|
202
|
-
resolve(answer.trim());
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
const idx = parseInt(choice, 10) - 1;
|
|
200
|
+
// In non-interactive or with --force-defaults, use first status option as default
|
|
201
|
+
const statusOptions = statusField.options.map(opt => opt.name);
|
|
202
|
+
const idx = await promptSelectWithDefault('Select initial status:', statusOptions, 0, // default: first status for non-interactive
|
|
203
|
+
options.forceDefaults ? 0 : undefined // --force-defaults forces first
|
|
204
|
+
);
|
|
206
205
|
if (idx >= 0 && idx < statusField.options.length) {
|
|
207
206
|
statusName = statusField.options[idx].name;
|
|
208
207
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-issue.js","sourceRoot":"","sources":["../../src/commands/add-issue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add-issue.js","sourceRoot":"","sources":["../../src/commands/add-issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../src/commands/done.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../src/commands/done.ts"],"names":[],"mappings":"AAQA,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2F9D"}
|
package/dist/commands/done.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { api } from '../github-api.js';
|
|
3
|
-
import { detectRepository } from '../git-utils.js';
|
|
3
|
+
import { detectRepository, listWorktrees, removeWorktree } from '../git-utils.js';
|
|
4
4
|
import { getConfig } from '../config.js';
|
|
5
|
+
import { removeActiveLabelSafely } from '../active-label.js';
|
|
6
|
+
import { getBranchForIssue } from '../branch-linker.js';
|
|
7
|
+
import { confirmWithDefault, isInteractive } from '../prompts.js';
|
|
5
8
|
export async function doneCommand(issue) {
|
|
6
9
|
const issueNumber = parseInt(issue, 10);
|
|
7
10
|
if (isNaN(issueNumber)) {
|
|
@@ -45,6 +48,29 @@ export async function doneCommand(issue) {
|
|
|
45
48
|
const success = await api.updateItemStatus(item.projectId, item.id, statusField.fieldId, option.id);
|
|
46
49
|
if (success) {
|
|
47
50
|
console.log(chalk.green('✓'), `Marked as done: ${item.title}`);
|
|
51
|
+
// Remove active label from this issue (but protect other worktree issues)
|
|
52
|
+
await removeActiveLabelSafely(repo, issueNumber, true);
|
|
53
|
+
// Check if this issue has a worktree and offer to remove it
|
|
54
|
+
const branchName = await getBranchForIssue(repo, issueNumber);
|
|
55
|
+
if (branchName) {
|
|
56
|
+
const worktrees = await listWorktrees();
|
|
57
|
+
const worktree = worktrees.find(wt => wt.branch === branchName && !wt.isMain);
|
|
58
|
+
if (worktree && isInteractive()) {
|
|
59
|
+
console.log();
|
|
60
|
+
console.log(chalk.dim('Found worktree:'), worktree.path);
|
|
61
|
+
const shouldRemove = await confirmWithDefault('Remove worktree?', true);
|
|
62
|
+
if (shouldRemove) {
|
|
63
|
+
try {
|
|
64
|
+
await removeWorktree(worktree.path);
|
|
65
|
+
console.log(chalk.green('✓'), 'Removed worktree');
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
console.log(chalk.yellow('⚠'), 'Could not remove worktree (may have uncommitted changes)');
|
|
69
|
+
console.log(chalk.dim('Run:'), `git worktree remove --force "${worktree.path}"`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
48
74
|
}
|
|
49
75
|
else {
|
|
50
76
|
console.error(chalk.red('Error:'), 'Failed to update status');
|