@alejandrochaves/devflow-cli 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +4 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/issues.d.ts +11 -0
- package/dist/commands/issues.d.ts.map +1 -0
- package/dist/commands/issues.js +290 -0
- package/dist/commands/issues.js.map +1 -0
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +18 -1
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/update.d.ts +6 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +305 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +24 -1
- package/dist/config.js.map +1 -1
- package/dist/devflow-version.d.ts +18 -0
- package/dist/devflow-version.d.ts.map +1 -0
- package/dist/devflow-version.js +87 -0
- package/dist/devflow-version.js.map +1 -0
- package/dist/index.js +32 -2
- package/dist/index.js.map +1 -1
- package/dist/providers/projects.d.ts +48 -0
- package/dist/providers/projects.d.ts.map +1 -0
- package/dist/providers/projects.js +275 -0
- package/dist/providers/projects.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -23,11 +23,20 @@ import { statsCommand } from "./commands/stats.js";
|
|
|
23
23
|
import { lintConfigCommand } from "./commands/lint-config.js";
|
|
24
24
|
import { commentsCommand } from "./commands/comments.js";
|
|
25
25
|
import { issueCommand } from "./commands/issue.js";
|
|
26
|
+
import { issuesCommand } from "./commands/issues.js";
|
|
27
|
+
import { updateCommand } from "./commands/update.js";
|
|
26
28
|
import { loadPlugins } from "./plugins.js";
|
|
27
29
|
import { checkForUpdates } from "./update-notifier.js";
|
|
30
|
+
import { checkForDevflowUpdates } from "./devflow-version.js";
|
|
28
31
|
const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf-8"));
|
|
29
32
|
// Check for updates (non-blocking, cached)
|
|
30
33
|
checkForUpdates();
|
|
34
|
+
// Check if devflow generated files need updating (skip for certain commands)
|
|
35
|
+
const skipVersionCheck = ["update", "up", "init", "doctor", "completions", "--help", "-h", "--version", "-V"];
|
|
36
|
+
const args = process.argv.slice(2);
|
|
37
|
+
if (args.length > 0 && !skipVersionCheck.some((cmd) => args[0] === cmd)) {
|
|
38
|
+
checkForDevflowUpdates();
|
|
39
|
+
}
|
|
31
40
|
const program = new Command();
|
|
32
41
|
program
|
|
33
42
|
.name("devflow")
|
|
@@ -145,6 +154,18 @@ program
|
|
|
145
154
|
.option("--branch-desc <desc>", "Branch description (for --create-branch)")
|
|
146
155
|
.option("--yes", "Skip confirmation prompts")
|
|
147
156
|
.action((opts) => issueCommand(opts));
|
|
157
|
+
program
|
|
158
|
+
.command("issues")
|
|
159
|
+
.alias("is")
|
|
160
|
+
.description("List and manage GitHub project board issues")
|
|
161
|
+
.option("--status <status>", "Filter by status: todo, in-progress, in-review, done")
|
|
162
|
+
.option("--available", "Show unassigned Todo items")
|
|
163
|
+
.option("--work", "Start work on an issue (assign + move status + create branch)")
|
|
164
|
+
.option("--issue <number>", "Issue number (with --work)")
|
|
165
|
+
.option("--branch-desc <desc>", "Branch description (with --work)")
|
|
166
|
+
.option("--dry-run", "Preview without making changes")
|
|
167
|
+
.option("--yes", "Skip confirmation prompts")
|
|
168
|
+
.action((opts) => issuesCommand(opts));
|
|
148
169
|
program
|
|
149
170
|
.command("stash")
|
|
150
171
|
.alias("st")
|
|
@@ -218,6 +239,13 @@ program
|
|
|
218
239
|
.command("doctor")
|
|
219
240
|
.description("Check that all devflow dependencies are properly configured")
|
|
220
241
|
.action(doctorCommand);
|
|
242
|
+
program
|
|
243
|
+
.command("update")
|
|
244
|
+
.alias("up")
|
|
245
|
+
.description("Update AI instructions and other devflow files to latest version")
|
|
246
|
+
.option("--dry-run", "Preview without writing files")
|
|
247
|
+
.option("--yes", "Skip confirmation prompts")
|
|
248
|
+
.action((opts) => updateCommand(opts));
|
|
221
249
|
program
|
|
222
250
|
.command("completions")
|
|
223
251
|
.description("Output shell completion script")
|
|
@@ -238,7 +266,7 @@ function generateBashCompletions() {
|
|
|
238
266
|
# Add to ~/.bashrc: eval "$(devflow completions --shell bash)"
|
|
239
267
|
_devflow_completions() {
|
|
240
268
|
local cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
241
|
-
local commands="branch commit pr amend undo fixup merge release review comments issue stash worktree log status test-plan changelog cleanup stats lint-config init doctor completions"
|
|
269
|
+
local commands="branch commit pr amend undo fixup merge release review comments issue issues stash worktree log status test-plan changelog cleanup stats lint-config init doctor update completions"
|
|
242
270
|
|
|
243
271
|
if [ "\${COMP_CWORD}" -eq 1 ]; then
|
|
244
272
|
COMPREPLY=($(compgen -W "\${commands}" -- "\${cur}"))
|
|
@@ -265,6 +293,7 @@ _devflow() {
|
|
|
265
293
|
'review:List and interact with PRs (alias: rv)'
|
|
266
294
|
'comments:Show PR reviews and inline comments (alias: cm)'
|
|
267
295
|
'issue:Create GitHub issue with Scrum templates (alias: i)'
|
|
296
|
+
'issues:List and manage project board issues (alias: is)'
|
|
268
297
|
'stash:Manage named stashes (alias: st)'
|
|
269
298
|
'worktree:Manage git worktrees (alias: wt)'
|
|
270
299
|
'log:Interactive commit log (alias: l)'
|
|
@@ -276,6 +305,7 @@ _devflow() {
|
|
|
276
305
|
'lint-config:Validate devflow config (alias: lint)'
|
|
277
306
|
'init:Initialize devflow config'
|
|
278
307
|
'doctor:Check devflow dependencies'
|
|
308
|
+
'update:Update AI instructions to latest (alias: up)'
|
|
279
309
|
'completions:Output shell completion script'
|
|
280
310
|
)
|
|
281
311
|
|
|
@@ -289,7 +319,7 @@ _devflow() {
|
|
|
289
319
|
;;
|
|
290
320
|
args)
|
|
291
321
|
case "\${words[1]}" in
|
|
292
|
-
branch|commit|pr|amend|undo|fixup|merge|cleanup|changelog|issue)
|
|
322
|
+
branch|commit|pr|amend|undo|fixup|merge|cleanup|changelog|issue|issues|update)
|
|
293
323
|
_arguments '--dry-run[Preview without executing]'
|
|
294
324
|
;;
|
|
295
325
|
completions)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ProjectConfig } from "../config.js";
|
|
2
|
+
export interface ProjectItem {
|
|
3
|
+
id: string;
|
|
4
|
+
contentId: string;
|
|
5
|
+
issueNumber: number;
|
|
6
|
+
title: string;
|
|
7
|
+
status: string | null;
|
|
8
|
+
assignees: string[];
|
|
9
|
+
labels: string[];
|
|
10
|
+
url: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ProjectFieldOption {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ProjectField {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
options?: ProjectFieldOption[];
|
|
20
|
+
}
|
|
21
|
+
export interface ProjectInfo {
|
|
22
|
+
id: string;
|
|
23
|
+
title: string;
|
|
24
|
+
fields: ProjectField[];
|
|
25
|
+
}
|
|
26
|
+
interface RepoInfo {
|
|
27
|
+
owner: string;
|
|
28
|
+
repo: string;
|
|
29
|
+
isOrg: boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare function getRepoInfo(): RepoInfo | undefined;
|
|
32
|
+
export declare function getCurrentUser(): string | undefined;
|
|
33
|
+
export declare function getProjectInfo(owner: string, projectNumber: number, isOrg: boolean): ProjectInfo | undefined;
|
|
34
|
+
export declare function listProjectItems(projectId: string, statusFieldName: string): ProjectItem[];
|
|
35
|
+
export declare function updateItemStatus(projectId: string, itemId: string, fieldId: string, optionId: string): boolean;
|
|
36
|
+
export declare function getIssueNodeId(owner: string, repo: string, issueNumber: number): string | undefined;
|
|
37
|
+
export declare function addIssueToProject(projectId: string, issueNodeId: string): string | undefined;
|
|
38
|
+
export declare function assignIssue(issueNumber: number, assignee: string): boolean;
|
|
39
|
+
export interface ProjectContext {
|
|
40
|
+
repoInfo: RepoInfo;
|
|
41
|
+
projectInfo: ProjectInfo;
|
|
42
|
+
statusField: ProjectField;
|
|
43
|
+
statusOptions: Map<string, string>;
|
|
44
|
+
}
|
|
45
|
+
export declare function getProjectContext(config: ProjectConfig): ProjectContext | undefined;
|
|
46
|
+
export declare function moveIssueToStatus(issueNumber: number, statusKey: "todo" | "inProgress" | "inReview" | "done", config: ProjectConfig): boolean;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/providers/projects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAkBD,wBAAgB,WAAW,IAAI,QAAQ,GAAG,SAAS,CAelD;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAUnD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CA+D5G;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,WAAW,EAAE,CAwFf;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CA2BT;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoBnG;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoB5F;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAU1E;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,YAAY,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,CA0CnF;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,EACtD,MAAM,EAAE,aAAa,GACpB,OAAO,CAgCT"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import { yellow } from "../colors.js";
|
|
3
|
+
function escapeQuery(query) {
|
|
4
|
+
return query.replace(/'/g, "'\\''");
|
|
5
|
+
}
|
|
6
|
+
function executeGraphQL(query) {
|
|
7
|
+
try {
|
|
8
|
+
const result = execSync(`gh api graphql -f query='${escapeQuery(query)}'`, {
|
|
9
|
+
encoding: "utf-8",
|
|
10
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
11
|
+
}).trim();
|
|
12
|
+
return JSON.parse(result);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function getRepoInfo() {
|
|
19
|
+
try {
|
|
20
|
+
const result = execSync("gh repo view --json owner,name,isInOrganization", {
|
|
21
|
+
encoding: "utf-8",
|
|
22
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
23
|
+
}).trim();
|
|
24
|
+
const data = JSON.parse(result);
|
|
25
|
+
return {
|
|
26
|
+
owner: data.owner.login,
|
|
27
|
+
repo: data.name,
|
|
28
|
+
isOrg: data.isInOrganization,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function getCurrentUser() {
|
|
36
|
+
try {
|
|
37
|
+
const result = execSync("gh api user --jq '.login'", {
|
|
38
|
+
encoding: "utf-8",
|
|
39
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
40
|
+
}).trim();
|
|
41
|
+
return result || undefined;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function getProjectInfo(owner, projectNumber, isOrg) {
|
|
48
|
+
const ownerType = isOrg ? "organization" : "user";
|
|
49
|
+
const query = `
|
|
50
|
+
query {
|
|
51
|
+
${ownerType}(login: "${owner}") {
|
|
52
|
+
projectV2(number: ${projectNumber}) {
|
|
53
|
+
id
|
|
54
|
+
title
|
|
55
|
+
fields(first: 30) {
|
|
56
|
+
nodes {
|
|
57
|
+
... on ProjectV2SingleSelectField {
|
|
58
|
+
id
|
|
59
|
+
name
|
|
60
|
+
options {
|
|
61
|
+
id
|
|
62
|
+
name
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
... on ProjectV2Field {
|
|
66
|
+
id
|
|
67
|
+
name
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
const result = executeGraphQL(query);
|
|
76
|
+
if (!result?.data)
|
|
77
|
+
return undefined;
|
|
78
|
+
const projectData = result.data[ownerType]?.projectV2;
|
|
79
|
+
if (!projectData)
|
|
80
|
+
return undefined;
|
|
81
|
+
return {
|
|
82
|
+
id: projectData.id,
|
|
83
|
+
title: projectData.title,
|
|
84
|
+
fields: projectData.fields.nodes
|
|
85
|
+
.filter((f) => f.id && f.name)
|
|
86
|
+
.map((f) => ({
|
|
87
|
+
id: f.id,
|
|
88
|
+
name: f.name,
|
|
89
|
+
options: f.options?.map((o) => ({ id: o.id, name: o.name })),
|
|
90
|
+
})),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function listProjectItems(projectId, statusFieldName) {
|
|
94
|
+
const query = `
|
|
95
|
+
query {
|
|
96
|
+
node(id: "${projectId}") {
|
|
97
|
+
... on ProjectV2 {
|
|
98
|
+
items(first: 100) {
|
|
99
|
+
nodes {
|
|
100
|
+
id
|
|
101
|
+
fieldValues(first: 20) {
|
|
102
|
+
nodes {
|
|
103
|
+
... on ProjectV2ItemFieldSingleSelectValue {
|
|
104
|
+
name
|
|
105
|
+
field { ... on ProjectV2SingleSelectField { name } }
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
content {
|
|
110
|
+
... on Issue {
|
|
111
|
+
id
|
|
112
|
+
number
|
|
113
|
+
title
|
|
114
|
+
url
|
|
115
|
+
assignees(first: 10) { nodes { login } }
|
|
116
|
+
labels(first: 10) { nodes { name } }
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
`;
|
|
125
|
+
const result = executeGraphQL(query);
|
|
126
|
+
if (!result?.data?.node?.items)
|
|
127
|
+
return [];
|
|
128
|
+
const items = [];
|
|
129
|
+
for (const node of result.data.node.items.nodes) {
|
|
130
|
+
if (!node.content)
|
|
131
|
+
continue;
|
|
132
|
+
// Find status field value
|
|
133
|
+
let status = null;
|
|
134
|
+
for (const fieldValue of node.fieldValues.nodes) {
|
|
135
|
+
if (fieldValue.field?.name === statusFieldName && fieldValue.name) {
|
|
136
|
+
status = fieldValue.name;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
items.push({
|
|
141
|
+
id: node.id,
|
|
142
|
+
contentId: node.content.id,
|
|
143
|
+
issueNumber: node.content.number,
|
|
144
|
+
title: node.content.title,
|
|
145
|
+
status,
|
|
146
|
+
assignees: node.content.assignees.nodes.map((a) => a.login),
|
|
147
|
+
labels: node.content.labels.nodes.map((l) => l.name),
|
|
148
|
+
url: node.content.url,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return items;
|
|
152
|
+
}
|
|
153
|
+
export function updateItemStatus(projectId, itemId, fieldId, optionId) {
|
|
154
|
+
const mutation = `
|
|
155
|
+
mutation {
|
|
156
|
+
updateProjectV2ItemFieldValue(
|
|
157
|
+
input: {
|
|
158
|
+
projectId: "${projectId}"
|
|
159
|
+
itemId: "${itemId}"
|
|
160
|
+
fieldId: "${fieldId}"
|
|
161
|
+
value: { singleSelectOptionId: "${optionId}" }
|
|
162
|
+
}
|
|
163
|
+
) {
|
|
164
|
+
projectV2Item {
|
|
165
|
+
id
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
`;
|
|
170
|
+
const result = executeGraphQL(mutation);
|
|
171
|
+
return !!result?.data?.updateProjectV2ItemFieldValue?.projectV2Item;
|
|
172
|
+
}
|
|
173
|
+
export function getIssueNodeId(owner, repo, issueNumber) {
|
|
174
|
+
const query = `
|
|
175
|
+
query {
|
|
176
|
+
repository(owner: "${owner}", name: "${repo}") {
|
|
177
|
+
issue(number: ${issueNumber}) {
|
|
178
|
+
id
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
`;
|
|
183
|
+
const result = executeGraphQL(query);
|
|
184
|
+
return result?.data?.repository?.issue?.id;
|
|
185
|
+
}
|
|
186
|
+
export function addIssueToProject(projectId, issueNodeId) {
|
|
187
|
+
const mutation = `
|
|
188
|
+
mutation {
|
|
189
|
+
addProjectV2ItemById(input: { projectId: "${projectId}", contentId: "${issueNodeId}" }) {
|
|
190
|
+
item {
|
|
191
|
+
id
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
`;
|
|
196
|
+
const result = executeGraphQL(mutation);
|
|
197
|
+
return result?.data?.addProjectV2ItemById?.item?.id;
|
|
198
|
+
}
|
|
199
|
+
export function assignIssue(issueNumber, assignee) {
|
|
200
|
+
try {
|
|
201
|
+
execSync(`gh issue edit ${issueNumber} --add-assignee "${assignee}"`, {
|
|
202
|
+
encoding: "utf-8",
|
|
203
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
204
|
+
});
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
export function getProjectContext(config) {
|
|
212
|
+
if (!config.enabled)
|
|
213
|
+
return undefined;
|
|
214
|
+
const repoInfo = getRepoInfo();
|
|
215
|
+
if (!repoInfo) {
|
|
216
|
+
console.error(yellow("Could not determine repository info."));
|
|
217
|
+
return undefined;
|
|
218
|
+
}
|
|
219
|
+
const projectInfo = getProjectInfo(repoInfo.owner, config.number, repoInfo.isOrg);
|
|
220
|
+
if (!projectInfo) {
|
|
221
|
+
console.error(yellow(`Project #${config.number} not found. Check project.number in config.`));
|
|
222
|
+
return undefined;
|
|
223
|
+
}
|
|
224
|
+
const statusField = projectInfo.fields.find((f) => f.name === config.statusField);
|
|
225
|
+
if (!statusField || !statusField.options) {
|
|
226
|
+
console.error(yellow(`Status field "${config.statusField}" not found in project. Available fields: ${projectInfo.fields.map((f) => f.name).join(", ")}`));
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
// Map config status names to option IDs
|
|
230
|
+
const statusOptions = new Map();
|
|
231
|
+
for (const [key, configName] of Object.entries(config.statuses)) {
|
|
232
|
+
const option = statusField.options.find((o) => o.name === configName);
|
|
233
|
+
if (option) {
|
|
234
|
+
statusOptions.set(key, option.id);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
console.error(yellow(`Status "${configName}" not found in project. Available: ${statusField.options.map((o) => o.name).join(", ")}`));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
repoInfo,
|
|
242
|
+
projectInfo,
|
|
243
|
+
statusField,
|
|
244
|
+
statusOptions,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
export function moveIssueToStatus(issueNumber, statusKey, config) {
|
|
248
|
+
const ctx = getProjectContext(config);
|
|
249
|
+
if (!ctx)
|
|
250
|
+
return false;
|
|
251
|
+
const optionId = ctx.statusOptions.get(statusKey);
|
|
252
|
+
if (!optionId) {
|
|
253
|
+
console.error(yellow(`Could not find option ID for status "${statusKey}"`));
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
// Find the item in the project
|
|
257
|
+
const items = listProjectItems(ctx.projectInfo.id, config.statusField);
|
|
258
|
+
const item = items.find((i) => i.issueNumber === issueNumber);
|
|
259
|
+
if (!item) {
|
|
260
|
+
// Issue might not be in project yet - try to add it
|
|
261
|
+
const issueNodeId = getIssueNodeId(ctx.repoInfo.owner, ctx.repoInfo.repo, issueNumber);
|
|
262
|
+
if (!issueNodeId) {
|
|
263
|
+
console.error(yellow(`Could not find issue #${issueNumber}`));
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
const newItemId = addIssueToProject(ctx.projectInfo.id, issueNodeId);
|
|
267
|
+
if (!newItemId) {
|
|
268
|
+
console.error(yellow(`Could not add issue #${issueNumber} to project`));
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
return updateItemStatus(ctx.projectInfo.id, newItemId, ctx.statusField.id, optionId);
|
|
272
|
+
}
|
|
273
|
+
return updateItemStatus(ctx.projectInfo.id, item.id, ctx.statusField.id, optionId);
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/providers/projects.ts"],"names":[],"mappings":"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"}
|