@oh-gc/cli 0.4.5 → 0.5.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.
Files changed (37) hide show
  1. package/README.md +16 -0
  2. package/dist/api/client.js +8 -1
  3. package/dist/api/client.js.map +1 -1
  4. package/dist/api/prs.d.ts +76 -0
  5. package/dist/api/prs.js +103 -0
  6. package/dist/api/prs.js.map +1 -1
  7. package/dist/commands/pr/comments.d.ts +18 -0
  8. package/dist/commands/pr/comments.js +72 -0
  9. package/dist/commands/pr/comments.js.map +1 -0
  10. package/dist/commands/pr/commits.d.ts +16 -0
  11. package/dist/commands/pr/commits.js +59 -0
  12. package/dist/commands/pr/commits.js.map +1 -0
  13. package/dist/commands/pr/labels.d.ts +17 -0
  14. package/dist/commands/pr/labels.js +71 -0
  15. package/dist/commands/pr/labels.js.map +1 -0
  16. package/dist/commands/pr/link.d.ts +17 -0
  17. package/dist/commands/pr/link.js +64 -0
  18. package/dist/commands/pr/link.js.map +1 -0
  19. package/dist/commands/pr/logs.d.ts +16 -0
  20. package/dist/commands/pr/logs.js +59 -0
  21. package/dist/commands/pr/logs.js.map +1 -0
  22. package/dist/commands/pr/review.d.ts +16 -0
  23. package/dist/commands/pr/review.js +56 -0
  24. package/dist/commands/pr/review.js.map +1 -0
  25. package/dist/commands/pr/reviewers.d.ts +18 -0
  26. package/dist/commands/pr/reviewers.js +71 -0
  27. package/dist/commands/pr/reviewers.js.map +1 -0
  28. package/dist/commands/pr/test.d.ts +16 -0
  29. package/dist/commands/pr/test.js +56 -0
  30. package/dist/commands/pr/test.js.map +1 -0
  31. package/dist/commands/pr/testers.d.ts +18 -0
  32. package/dist/commands/pr/testers.js +71 -0
  33. package/dist/commands/pr/testers.js.map +1 -0
  34. package/dist/commands/pr/update.d.ts +20 -0
  35. package/dist/commands/pr/update.js +67 -0
  36. package/dist/commands/pr/update.js.map +1 -0
  37. package/package.json +1 -1
package/README.md CHANGED
@@ -106,9 +106,25 @@ oh-gc repo:set-remote upstream
106
106
  | `oh-gc pr:comment <number> --body "..."` | Add a comment with a flag |
107
107
  | `oh-gc pr:comment <number> --repo owner/repo --body "..."` | Add comment on different repo |
108
108
  | `oh-gc pr:comment <number> --body "..." --path file.ts --line 10` | Comment on specific line |
109
+ | `oh-gc pr:update <number> --title "..."` | Update PR title, body, or state |
110
+ | `oh-gc pr:update <number> --state closed` | Close a PR |
109
111
  | `oh-gc pr:merge <number>` | Merge PR (default: merge commit) |
110
112
  | `oh-gc pr:merge <number> --method squash` | Squash merge |
111
113
  | `oh-gc pr:merge <number> --method rebase` | Rebase merge |
114
+ | `oh-gc pr:commits <number>` | List commits in a PR |
115
+ | `oh-gc pr:comments <number>` | List comments on a PR |
116
+ | `oh-gc pr:comments <number> --delete <id>` | Delete a PR comment |
117
+ | `oh-gc pr:reviewers <number> alice,bob` | Assign reviewers |
118
+ | `oh-gc pr:reviewers <number> alice --remove` | Remove a reviewer |
119
+ | `oh-gc pr:testers <number> alice,bob` | Assign testers |
120
+ | `oh-gc pr:testers <number> alice --remove` | Remove a tester |
121
+ | `oh-gc pr:review <number>` | Approve a PR review |
122
+ | `oh-gc pr:test <number>` | Mark PR test as passed |
123
+ | `oh-gc pr:labels <number> bug,feature` | Add labels to a PR |
124
+ | `oh-gc pr:labels <number> bug --remove` | Remove a label |
125
+ | `oh-gc pr:link <number> 1,2` | Link issues to a PR |
126
+ | `oh-gc pr:link <number> 1,2 --remove` | Unlink issues |
127
+ | `oh-gc pr:logs <number>` | Show PR operation logs |
112
128
 
113
129
  ### Release
114
130
 
@@ -47,8 +47,15 @@ async function apiRequest(path, token, options = {}) {
47
47
  const text = await response.text();
48
48
  throw new GitCodeError(response.status, `API error ${response.status}: ${text}`);
49
49
  }
50
+ if (response.status === 204) {
51
+ return undefined;
52
+ }
53
+ const text = await response.text();
54
+ if (!text) {
55
+ return undefined;
56
+ }
50
57
  try {
51
- return (await response.json());
58
+ return JSON.parse(text);
52
59
  }
53
60
  catch {
54
61
  throw new GitCodeError(response.status, `API error ${response.status}: invalid JSON response`);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":";;;AASA,gCAwDC;AAjED,MAAM,QAAQ,GAAG,gCAAgC,CAAA;AAEjD,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAmB,UAAkB,EAAE,OAAe;QACpD,KAAK,CAAC,OAAO,CAAC,CAAA;QADG,eAAU,GAAV,UAAU,CAAQ;QAEnC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AALD,oCAKC;AAEM,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,KAAa,EACb,UAII,EAAE;IAEN,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAE/C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAA;IACzC,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,KAAK,KAAK,SAAS;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;IAED,IAAI,QAAkB,CAAA;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACrC,MAAM;YACN,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;YACD,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC5D,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CAAC,CAAC,EAAE,+DAA+D,CAAC,CAAA;IAC5F,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACrC,MAAM,IAAI,YAAY,CACpB,GAAG,EACH,+DAA+D,CAChE,CAAA;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACrC,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAA;IACxE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAA;IAClF,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,QAAQ,CAAC,MAAM,yBAAyB,CAAC,CAAA;IAChG,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":";;;AASA,gCAiEC;AA1ED,MAAM,QAAQ,GAAG,gCAAgC,CAAA;AAEjD,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAmB,UAAkB,EAAE,OAAe;QACpD,KAAK,CAAC,OAAO,CAAC,CAAA;QADG,eAAU,GAAV,UAAU,CAAQ;QAEnC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AALD,oCAKC;AAEM,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,KAAa,EACb,UAII,EAAE;IAEN,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAE/C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAA;IACzC,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,KAAK,KAAK,SAAS;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;IAED,IAAI,QAAkB,CAAA;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACrC,MAAM;YACN,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;YACD,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC5D,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CAAC,CAAC,EAAE,+DAA+D,CAAC,CAAA;IAC5F,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACrC,MAAM,IAAI,YAAY,CACpB,GAAG,EACH,+DAA+D,CAChE,CAAA;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACrC,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAA;IACxE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAA;IAClF,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,OAAO,SAAc,CAAA;IACvB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAc,CAAA;IACvB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,QAAQ,CAAC,MAAM,yBAAyB,CAAC,CAAA;IAChG,CAAC;AACH,CAAC"}
package/dist/api/prs.d.ts CHANGED
@@ -64,6 +64,7 @@ export declare function mergePR(token: string, owner: string, repo: string, numb
64
64
  }): Promise<MergeResult>;
65
65
  export interface PRComment {
66
66
  id: string;
67
+ note_id: number;
67
68
  body: string;
68
69
  html_url?: string;
69
70
  user?: {
@@ -101,3 +102,78 @@ export interface PRFile {
101
102
  too_large?: boolean;
102
103
  }
103
104
  export declare function getPRFiles(token: string, owner: string, repo: string, number: number): Promise<PRFile[]>;
105
+ export interface UpdatePRParams {
106
+ title?: string;
107
+ body?: string;
108
+ state?: string;
109
+ labels?: string;
110
+ draft?: boolean;
111
+ milestone_number?: number;
112
+ }
113
+ export declare function updatePR(token: string, owner: string, repo: string, number: number, params: UpdatePRParams): Promise<PR>;
114
+ export interface PRCommit {
115
+ sha: string;
116
+ html_url: string;
117
+ commit: {
118
+ author: {
119
+ login?: string;
120
+ name: string;
121
+ email: string;
122
+ date: string;
123
+ };
124
+ message: string;
125
+ };
126
+ }
127
+ export declare function listPRCommits(token: string, owner: string, repo: string, number: number, params?: {
128
+ page?: number;
129
+ per_page?: number;
130
+ }): Promise<PRCommit[]>;
131
+ export declare function listPRComments(token: string, owner: string, repo: string, number: number, params?: {
132
+ page?: number;
133
+ per_page?: number;
134
+ direction?: string;
135
+ comment_type?: string;
136
+ }): Promise<PRComment[]>;
137
+ export declare function deletePRComment(token: string, owner: string, repo: string, noteId: number): Promise<void>;
138
+ export interface PRUser {
139
+ id: number;
140
+ login: string;
141
+ name: string;
142
+ avatar_url?: string;
143
+ }
144
+ export declare function assignReviewers(token: string, owner: string, repo: string, number: number, reviewers: string, append?: boolean): Promise<PRUser[]>;
145
+ export declare function removeReviewers(token: string, owner: string, repo: string, number: number, reviewers: string): Promise<PRUser[]>;
146
+ export declare function assignTesters(token: string, owner: string, repo: string, number: number, testers: string, append?: boolean): Promise<PRUser[]>;
147
+ export declare function removeTesters(token: string, owner: string, repo: string, number: number, testers: string): Promise<PRUser[]>;
148
+ export declare function submitReview(token: string, owner: string, repo: string, number: number, force?: boolean): Promise<unknown>;
149
+ export declare function submitTest(token: string, owner: string, repo: string, number: number, force?: boolean): Promise<unknown>;
150
+ export interface PRLabel {
151
+ id: number;
152
+ name: string;
153
+ color: string;
154
+ }
155
+ export declare function addPRLabels(token: string, owner: string, repo: string, number: number, labels: string[]): Promise<PRLabel[]>;
156
+ export declare function removePRLabel(token: string, owner: string, repo: string, number: number, names: string): Promise<void>;
157
+ export interface LinkedIssue {
158
+ id?: number;
159
+ number: string | number;
160
+ title: string;
161
+ state?: string;
162
+ }
163
+ export declare function linkIssues(token: string, owner: string, repo: string, number: number, issues: number[]): Promise<LinkedIssue[]>;
164
+ export declare function unlinkIssues(token: string, owner: string, repo: string, number: number, issues: number[]): Promise<LinkedIssue[]>;
165
+ export interface PROperateLog {
166
+ id: number;
167
+ action: string;
168
+ content: string;
169
+ created_at: string;
170
+ user: {
171
+ login: string;
172
+ name: string;
173
+ };
174
+ }
175
+ export declare function listPROperateLogs(token: string, owner: string, repo: string, number: number, params?: {
176
+ page?: number;
177
+ per_page?: number;
178
+ sort?: string;
179
+ }): Promise<PROperateLog[]>;
package/dist/api/prs.js CHANGED
@@ -6,6 +6,21 @@ exports.createPR = createPR;
6
6
  exports.mergePR = mergePR;
7
7
  exports.commentPR = commentPR;
8
8
  exports.getPRFiles = getPRFiles;
9
+ exports.updatePR = updatePR;
10
+ exports.listPRCommits = listPRCommits;
11
+ exports.listPRComments = listPRComments;
12
+ exports.deletePRComment = deletePRComment;
13
+ exports.assignReviewers = assignReviewers;
14
+ exports.removeReviewers = removeReviewers;
15
+ exports.assignTesters = assignTesters;
16
+ exports.removeTesters = removeTesters;
17
+ exports.submitReview = submitReview;
18
+ exports.submitTest = submitTest;
19
+ exports.addPRLabels = addPRLabels;
20
+ exports.removePRLabel = removePRLabel;
21
+ exports.linkIssues = linkIssues;
22
+ exports.unlinkIssues = unlinkIssues;
23
+ exports.listPROperateLogs = listPROperateLogs;
9
24
  const client_1 = require("./client");
10
25
  async function listPRs(token, owner, repo, params = {}) {
11
26
  return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls`, token, {
@@ -35,4 +50,92 @@ async function commentPR(token, owner, repo, number, body, options) {
35
50
  async function getPRFiles(token, owner, repo, number) {
36
51
  return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/files`, token);
37
52
  }
53
+ async function updatePR(token, owner, repo, number, params) {
54
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}`, token, {
55
+ method: 'PATCH',
56
+ body: params,
57
+ });
58
+ }
59
+ async function listPRCommits(token, owner, repo, number, params = {}) {
60
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/commits`, token, {
61
+ query: params,
62
+ });
63
+ }
64
+ // --- PR Comments (list / delete) ---
65
+ async function listPRComments(token, owner, repo, number, params = {}) {
66
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/comments`, token, {
67
+ query: params,
68
+ });
69
+ }
70
+ async function deletePRComment(token, owner, repo, noteId) {
71
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/comments/${noteId}`, token, {
72
+ method: 'DELETE',
73
+ });
74
+ }
75
+ async function assignReviewers(token, owner, repo, number, reviewers, append = false) {
76
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/reviewers`, token, {
77
+ method: 'POST',
78
+ body: { reviewers, add: append },
79
+ });
80
+ }
81
+ async function removeReviewers(token, owner, repo, number, reviewers) {
82
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/reviewers`, token, {
83
+ method: 'DELETE',
84
+ body: { reviewers },
85
+ });
86
+ }
87
+ // --- Testers ---
88
+ async function assignTesters(token, owner, repo, number, testers, append = false) {
89
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/testers`, token, {
90
+ method: 'POST',
91
+ body: { testers, add: append },
92
+ });
93
+ }
94
+ async function removeTesters(token, owner, repo, number, testers) {
95
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/testers`, token, {
96
+ method: 'DELETE',
97
+ body: { testers },
98
+ });
99
+ }
100
+ // --- Review & Test ---
101
+ async function submitReview(token, owner, repo, number, force = false) {
102
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/review`, token, {
103
+ method: 'POST',
104
+ body: { force },
105
+ });
106
+ }
107
+ async function submitTest(token, owner, repo, number, force = false) {
108
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/test`, token, {
109
+ method: 'POST',
110
+ body: { force },
111
+ });
112
+ }
113
+ async function addPRLabels(token, owner, repo, number, labels) {
114
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/labels`, token, {
115
+ method: 'POST',
116
+ body: labels,
117
+ });
118
+ }
119
+ async function removePRLabel(token, owner, repo, number, names) {
120
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/labels/${names}`, token, {
121
+ method: 'DELETE',
122
+ });
123
+ }
124
+ async function linkIssues(token, owner, repo, number, issues) {
125
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/issues`, token, {
126
+ method: 'POST',
127
+ body: issues,
128
+ });
129
+ }
130
+ async function unlinkIssues(token, owner, repo, number, issues) {
131
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/issues`, token, {
132
+ method: 'DELETE',
133
+ body: issues,
134
+ });
135
+ }
136
+ async function listPROperateLogs(token, owner, repo, number, params = {}) {
137
+ return (0, client_1.apiRequest)(`/repos/${owner}/${repo}/pulls/${number}/operate_logs`, token, {
138
+ query: params,
139
+ });
140
+ }
38
141
  //# sourceMappingURL=prs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prs.js","sourceRoot":"","sources":["../../src/api/prs.ts"],"names":[],"mappings":";;AAuCA,0BASC;AAED,sBAOC;AAWD,4BAUC;AAED,0BAYC;AAUD,8BAiBC;AA2BD,gCAOC;AAzJD,qCAAqC;AAuC9B,KAAK,UAAU,OAAO,CAC3B,KAAa,EACb,KAAa,EACb,IAAY,EACZ,SAAwB,EAAE;IAE1B,OAAO,IAAA,mBAAU,EAAO,UAAU,KAAK,IAAI,IAAI,QAAQ,EAAE,KAAK,EAAE;QAC9D,KAAK,EAAE,MAAqD;KAC7D,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,KAAK,CACzB,KAAa,EACb,KAAa,EACb,IAAY,EACZ,MAAc;IAEd,OAAO,IAAA,mBAAU,EAAK,UAAU,KAAK,IAAI,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,CAAC,CAAA;AACzE,CAAC;AAWM,KAAK,UAAU,QAAQ,CAC5B,KAAa,EACb,KAAa,EACb,IAAY,EACZ,MAAsB;IAEtB,OAAO,IAAA,mBAAU,EAAK,UAAU,KAAK,IAAI,IAAI,QAAQ,EAAE,KAAK,EAAE;QAC5D,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;KACb,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,OAAO,CAC3B,KAAa,EACb,KAAa,EACb,IAAY,EACZ,MAAc,EACd,SAA0E,EAAE;IAE5E,OAAO,IAAA,mBAAU,EACf,UAAU,KAAK,IAAI,IAAI,UAAU,MAAM,QAAQ,EAC/C,KAAK,EACL,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAChC,CAAA;AACH,CAAC;AAUM,KAAK,UAAU,SAAS,CAC7B,KAAa,EACb,KAAa,EACb,IAAY,EACZ,MAAc,EACd,IAAY,EACZ,OAA8C;IAE9C,MAAM,WAAW,GAAgD,EAAE,IAAI,EAAE,CAAA;IACzE,IAAI,OAAO,EAAE,IAAI;QAAE,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IAClD,IAAI,OAAO,EAAE,QAAQ,KAAK,SAAS;QAAE,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IAE5E,OAAO,IAAA,mBAAU,EACf,UAAU,KAAK,IAAI,IAAI,UAAU,MAAM,WAAW,EAClD,KAAK,EACL,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CACtC,CAAA;AACH,CAAC;AA2BM,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,KAAa,EACb,IAAY,EACZ,MAAc;IAEd,OAAO,IAAA,mBAAU,EAAW,UAAU,KAAK,IAAI,IAAI,UAAU,MAAM,QAAQ,EAAE,KAAK,CAAC,CAAA;AACrF,CAAC"}
1
+ {"version":3,"file":"prs.js","sourceRoot":"","sources":["../../src/api/prs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class PRComments extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ number: import("@oclif/core/lib/interfaces").Arg<number, {
7
+ max?: number | undefined;
8
+ min?: number | undefined;
9
+ }>;
10
+ };
11
+ static flags: {
12
+ limit: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ delete: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ 'comment-type': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const index_1 = require("../../config/index");
6
+ const index_2 = require("../../git/index");
7
+ const prs_1 = require("../../api/prs");
8
+ const client_1 = require("../../api/client");
9
+ const index_3 = require("../../ui/index");
10
+ class PRComments extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(PRComments);
13
+ const token = (0, index_1.getToken)();
14
+ if (!token)
15
+ this.error('Not logged in. Run: gc auth login');
16
+ let owner, repo;
17
+ try {
18
+ ;
19
+ ({ owner, repo } = (0, index_2.resolveRepo)());
20
+ }
21
+ catch (err) {
22
+ this.error(err.message);
23
+ }
24
+ try {
25
+ if (flags.delete) {
26
+ await (0, prs_1.deletePRComment)(token, owner, repo, flags.delete);
27
+ this.log(`Deleted comment ${flags.delete}`);
28
+ return;
29
+ }
30
+ const comments = await (0, prs_1.listPRComments)(token, owner, repo, args.number, {
31
+ per_page: flags.limit,
32
+ comment_type: flags['comment-type'],
33
+ });
34
+ if (flags.json) {
35
+ (0, index_3.printJson)(comments);
36
+ return;
37
+ }
38
+ (0, index_3.printTable)(comments.map((c) => ({
39
+ id: c.id,
40
+ author: c.user?.login ?? '-',
41
+ created: c.created_at ? (0, index_3.formatDate)(c.created_at) : '-',
42
+ body: (c.body || '').slice(0, 80),
43
+ })), ['id', 'author', 'created', 'body']);
44
+ }
45
+ catch (err) {
46
+ if (err instanceof client_1.GitCodeError)
47
+ this.error(err.message);
48
+ this.error('Could not connect to GitCode. Check your internet connection.');
49
+ }
50
+ }
51
+ }
52
+ PRComments.description = 'List or delete comments on a pull request';
53
+ PRComments.examples = [
54
+ '<%= config.bin %> pr comments 5',
55
+ '<%= config.bin %> pr comments 5 --limit 10',
56
+ '<%= config.bin %> pr comments 5 --delete 12345',
57
+ '<%= config.bin %> pr comments 5 --comment-type diff_comment',
58
+ ];
59
+ PRComments.args = {
60
+ number: core_1.Args.integer({ description: 'PR number', required: true }),
61
+ };
62
+ PRComments.flags = {
63
+ ...base_command_1.BaseCommand.baseFlags,
64
+ limit: core_1.Flags.integer({ description: 'Max number of comments to show', default: 30 }),
65
+ delete: core_1.Flags.integer({ description: 'Comment note_id to delete' }),
66
+ 'comment-type': core_1.Flags.string({
67
+ description: 'Filter by comment type',
68
+ options: ['diff_comment', 'pr_comment'],
69
+ }),
70
+ };
71
+ exports.default = PRComments;
72
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../../src/commands/pr/comments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class PRCommits extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ number: import("@oclif/core/lib/interfaces").Arg<number, {
7
+ max?: number | undefined;
8
+ min?: number | undefined;
9
+ }>;
10
+ };
11
+ static flags: {
12
+ limit: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const index_1 = require("../../config/index");
6
+ const index_2 = require("../../git/index");
7
+ const prs_1 = require("../../api/prs");
8
+ const client_1 = require("../../api/client");
9
+ const index_3 = require("../../ui/index");
10
+ class PRCommits extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(PRCommits);
13
+ const token = (0, index_1.getToken)();
14
+ if (!token)
15
+ this.error('Not logged in. Run: gc auth login');
16
+ let owner, repo;
17
+ try {
18
+ ;
19
+ ({ owner, repo } = (0, index_2.resolveRepo)());
20
+ }
21
+ catch (err) {
22
+ this.error(err.message);
23
+ }
24
+ try {
25
+ const commits = await (0, prs_1.listPRCommits)(token, owner, repo, args.number, {
26
+ per_page: flags.limit,
27
+ });
28
+ if (flags.json) {
29
+ (0, index_3.printJson)(commits);
30
+ return;
31
+ }
32
+ (0, index_3.printTable)(commits.map((c) => ({
33
+ sha: c.sha.slice(0, 8),
34
+ author: c.commit.author.name,
35
+ date: (0, index_3.formatDate)(c.commit.author.date),
36
+ message: c.commit.message.slice(0, 72),
37
+ })), ['sha', 'author', 'date', 'message']);
38
+ }
39
+ catch (err) {
40
+ if (err instanceof client_1.GitCodeError)
41
+ this.error(err.message);
42
+ this.error('Could not connect to GitCode. Check your internet connection.');
43
+ }
44
+ }
45
+ }
46
+ PRCommits.description = 'List commits on a pull request';
47
+ PRCommits.examples = [
48
+ '<%= config.bin %> pr commits 5',
49
+ '<%= config.bin %> pr commits 5 --limit 10',
50
+ ];
51
+ PRCommits.args = {
52
+ number: core_1.Args.integer({ description: 'PR number', required: true }),
53
+ };
54
+ PRCommits.flags = {
55
+ ...base_command_1.BaseCommand.baseFlags,
56
+ limit: core_1.Flags.integer({ description: 'Max number of commits to show', default: 30 }),
57
+ };
58
+ exports.default = PRCommits;
59
+ //# sourceMappingURL=commits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commits.js","sourceRoot":"","sources":["../../../src/commands/pr/commits.ts"],"names":[],"mappings":";;AAAA,sCAAyC;AACzC,qDAAgD;AAChD,8CAA6C;AAC7C,2CAA6C;AAC7C,uCAA6C;AAC7C,6CAA+C;AAC/C,0CAAkE;AAElE,MAAqB,SAAU,SAAQ,0BAAW;IAchD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAEnD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAE3D,IAAI,KAAa,EAAE,IAAY,CAAA;QAC/B,IAAI,CAAC;YACH,CAAC;YAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAa,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;gBACnE,QAAQ,EAAE,KAAK,CAAC,KAAK;aACtB,CAAC,CAAA;YAEF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,iBAAS,EAAC,OAAO,CAAC,CAAA;gBAClB,OAAM;YACR,CAAC;YAED,IAAA,kBAAU,EACR,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;gBAC5B,IAAI,EAAE,IAAA,kBAAU,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACtC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACvC,CAAC,CAAC,EACH,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CACrC,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,qBAAY;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;;AAjDM,qBAAW,GAAG,gCAAgC,CAAA;AAC9C,kBAAQ,GAAG;IAChB,gCAAgC;IAChC,2CAA2C;CAC5C,CAAA;AACM,cAAI,GAAG;IACZ,MAAM,EAAE,WAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACnE,CAAA;AACM,eAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;CACpF,CAAA;kBAZkB,SAAS"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class PRLabels extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ number: import("@oclif/core/lib/interfaces").Arg<number, {
7
+ max?: number | undefined;
8
+ min?: number | undefined;
9
+ }>;
10
+ labels: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
11
+ };
12
+ static flags: {
13
+ remove: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ };
16
+ run(): Promise<void>;
17
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const index_1 = require("../../config/index");
6
+ const index_2 = require("../../git/index");
7
+ const prs_1 = require("../../api/prs");
8
+ const client_1 = require("../../api/client");
9
+ const index_3 = require("../../ui/index");
10
+ class PRLabels extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(PRLabels);
13
+ const token = (0, index_1.getToken)();
14
+ if (!token)
15
+ this.error('Not logged in. Run: gc auth login');
16
+ let owner, repo;
17
+ try {
18
+ ;
19
+ ({ owner, repo } = (0, index_2.resolveRepo)());
20
+ }
21
+ catch (err) {
22
+ this.error(err.message);
23
+ }
24
+ try {
25
+ if (flags.remove) {
26
+ const result = await (0, prs_1.removePRLabel)(token, owner, repo, args.number, args.labels);
27
+ if (flags.json) {
28
+ (0, index_3.printJson)(result);
29
+ }
30
+ else {
31
+ this.log(`Removed labels: ${args.labels}`);
32
+ }
33
+ }
34
+ else {
35
+ const result = await (0, prs_1.addPRLabels)(token, owner, repo, args.number, args.labels.split(','));
36
+ if (flags.json) {
37
+ (0, index_3.printJson)(result);
38
+ }
39
+ else {
40
+ (0, index_3.printTable)(result.map((l) => ({
41
+ name: l.name,
42
+ color: l.color,
43
+ })), ['name', 'color']);
44
+ }
45
+ }
46
+ }
47
+ catch (err) {
48
+ if (err instanceof client_1.GitCodeError)
49
+ this.error(err.message);
50
+ this.error('Could not connect to GitCode. Check your internet connection.');
51
+ }
52
+ }
53
+ }
54
+ PRLabels.description = 'Add or remove labels on a pull request';
55
+ PRLabels.examples = [
56
+ '<%= config.bin %> pr:labels 5 bug,enhancement',
57
+ '<%= config.bin %> pr:labels 5 bug --remove',
58
+ ];
59
+ PRLabels.args = {
60
+ number: core_1.Args.integer({ description: 'PR number', required: true }),
61
+ labels: core_1.Args.string({ description: 'Comma-separated label names', required: true }),
62
+ };
63
+ PRLabels.flags = {
64
+ ...base_command_1.BaseCommand.baseFlags,
65
+ remove: core_1.Flags.boolean({
66
+ description: 'Remove labels instead of adding',
67
+ default: false,
68
+ }),
69
+ };
70
+ exports.default = PRLabels;
71
+ //# sourceMappingURL=labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../src/commands/pr/labels.ts"],"names":[],"mappings":";;AAAA,sCAAyC;AACzC,qDAAgD;AAChD,8CAA6C;AAC7C,2CAA6C;AAC7C,uCAA0D;AAC1D,6CAA+C;AAC/C,0CAAsD;AAEtD,MAAqB,QAAS,SAAQ,0BAAW;IAkB/C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAElD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAE3D,IAAI,KAAa,EAAE,IAAY,CAAA;QAC/B,IAAI,CAAC;YACH,CAAC;YAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAa,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;gBAEhF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAA;gBACnB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;gBAC5C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAW,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;gBAEzF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAA;gBACnB,CAAC;qBAAM,CAAC;oBACN,IAAA,kBAAU,EACR,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;wBACtB,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;qBACf,CAAC,CAAC,EACH,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,qBAAY;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;;AA1DM,oBAAW,GAAG,wCAAwC,CAAA;AACtD,iBAAQ,GAAG;IAChB,+CAA+C;IAC/C,4CAA4C;CAC7C,CAAA;AACM,aAAI,GAAG;IACZ,MAAM,EAAE,WAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClE,MAAM,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACpF,CAAA;AACM,cAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAA;kBAhBkB,QAAQ"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class PRLink extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ number: import("@oclif/core/lib/interfaces").Arg<number, {
7
+ max?: number | undefined;
8
+ min?: number | undefined;
9
+ }>;
10
+ issues: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
11
+ };
12
+ static flags: {
13
+ remove: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ };
16
+ run(): Promise<void>;
17
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const index_1 = require("../../config/index");
6
+ const index_2 = require("../../git/index");
7
+ const prs_1 = require("../../api/prs");
8
+ const client_1 = require("../../api/client");
9
+ const index_3 = require("../../ui/index");
10
+ class PRLink extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(PRLink);
13
+ const token = (0, index_1.getToken)();
14
+ if (!token)
15
+ this.error('Not logged in. Run: gc auth login');
16
+ let owner, repo;
17
+ try {
18
+ ;
19
+ ({ owner, repo } = (0, index_2.resolveRepo)());
20
+ }
21
+ catch (err) {
22
+ this.error(err.message);
23
+ }
24
+ const issueNumbers = args.issues.split(',').map(Number);
25
+ try {
26
+ if (flags.remove) {
27
+ const result = await (0, prs_1.unlinkIssues)(token, owner, repo, args.number, issueNumbers);
28
+ if (flags.json) {
29
+ (0, index_3.printJson)(result);
30
+ return;
31
+ }
32
+ this.log(`Unlinked issues ${issueNumbers.join(', ')} from PR #${args.number}`);
33
+ }
34
+ else {
35
+ const result = await (0, prs_1.linkIssues)(token, owner, repo, args.number, issueNumbers);
36
+ if (flags.json) {
37
+ (0, index_3.printJson)(result);
38
+ return;
39
+ }
40
+ this.log(`Linked issues ${issueNumbers.join(', ')} to PR #${args.number}`);
41
+ }
42
+ }
43
+ catch (err) {
44
+ if (err instanceof client_1.GitCodeError)
45
+ this.error(err.message);
46
+ this.error('Could not connect to GitCode. Check your internet connection.');
47
+ }
48
+ }
49
+ }
50
+ PRLink.description = 'Link or unlink issues to a pull request';
51
+ PRLink.examples = [
52
+ '<%= config.bin %> pr link 5 1,2,3',
53
+ '<%= config.bin %> pr link 5 1,2 --remove',
54
+ ];
55
+ PRLink.args = {
56
+ number: core_1.Args.integer({ description: 'PR number', required: true }),
57
+ issues: core_1.Args.string({ description: 'Comma-separated issue numbers', required: true }),
58
+ };
59
+ PRLink.flags = {
60
+ ...base_command_1.BaseCommand.baseFlags,
61
+ remove: core_1.Flags.boolean({ description: 'Unlink the specified issues', default: false }),
62
+ };
63
+ exports.default = PRLink;
64
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/commands/pr/link.ts"],"names":[],"mappings":";;AAAA,sCAAyC;AACzC,qDAAgD;AAChD,8CAA6C;AAC7C,2CAA6C;AAC7C,uCAAwD;AACxD,6CAA+C;AAC/C,0CAA0C;AAE1C,MAAqB,MAAO,SAAQ,0BAAW;IAe7C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEhD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAE3D,IAAI,KAAa,EAAE,IAAY,CAAA;QAC/B,IAAI,CAAC;YACH,CAAC;YAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEvD,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAY,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;gBAEhF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAA;oBACjB,OAAM;gBACR,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,mBAAmB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAChF,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAU,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;gBAE9E,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAA;oBACjB,OAAM;gBACR,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,iBAAiB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAC5E,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,qBAAY;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;;AArDM,kBAAW,GAAG,yCAAyC,CAAA;AACvD,eAAQ,GAAG;IAChB,mCAAmC;IACnC,0CAA0C;CAC3C,CAAA;AACM,WAAI,GAAG;IACZ,MAAM,EAAE,WAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClE,MAAM,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACtF,CAAA;AACM,YAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;CACtF,CAAA;kBAbkB,MAAM"}
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class PRLogs extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ number: import("@oclif/core/lib/interfaces").Arg<number, {
7
+ max?: number | undefined;
8
+ min?: number | undefined;
9
+ }>;
10
+ };
11
+ static flags: {
12
+ limit: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const index_1 = require("../../config/index");
6
+ const index_2 = require("../../git/index");
7
+ const prs_1 = require("../../api/prs");
8
+ const client_1 = require("../../api/client");
9
+ const index_3 = require("../../ui/index");
10
+ class PRLogs extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(PRLogs);
13
+ const token = (0, index_1.getToken)();
14
+ if (!token)
15
+ this.error('Not logged in. Run: gc auth login');
16
+ let owner, repo;
17
+ try {
18
+ ;
19
+ ({ owner, repo } = (0, index_2.resolveRepo)());
20
+ }
21
+ catch (err) {
22
+ this.error(err.message);
23
+ }
24
+ try {
25
+ const logs = await (0, prs_1.listPROperateLogs)(token, owner, repo, args.number, {
26
+ per_page: flags.limit,
27
+ });
28
+ if (flags.json) {
29
+ (0, index_3.printJson)(logs);
30
+ return;
31
+ }
32
+ (0, index_3.printTable)(logs.map((l) => ({
33
+ created: (0, index_3.formatDate)(l.created_at),
34
+ user: l.user.login,
35
+ action: l.action,
36
+ content: (l.content || '').slice(0, 60),
37
+ })), ['created', 'user', 'action', 'content']);
38
+ }
39
+ catch (err) {
40
+ if (err instanceof client_1.GitCodeError)
41
+ this.error(err.message);
42
+ this.error('Could not connect to GitCode. Check your internet connection.');
43
+ }
44
+ }
45
+ }
46
+ PRLogs.description = 'List operation logs of a pull request';
47
+ PRLogs.examples = [
48
+ '<%= config.bin %> pr logs 5',
49
+ '<%= config.bin %> pr logs 5 --limit 10',
50
+ ];
51
+ PRLogs.args = {
52
+ number: core_1.Args.integer({ description: 'PR number', required: true }),
53
+ };
54
+ PRLogs.flags = {
55
+ ...base_command_1.BaseCommand.baseFlags,
56
+ limit: core_1.Flags.integer({ description: 'Max number of logs to show', default: 30 }),
57
+ };
58
+ exports.default = PRLogs;
59
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/pr/logs.ts"],"names":[],"mappings":";;AAAA,sCAAyC;AACzC,qDAAgD;AAChD,8CAA6C;AAC7C,2CAA6C;AAC7C,uCAAiD;AACjD,6CAA+C;AAC/C,0CAAkE;AAElE,MAAqB,MAAO,SAAQ,0BAAW;IAc7C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEhD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAE3D,IAAI,KAAa,EAAE,IAAY,CAAA;QAC/B,IAAI,CAAC;YACH,CAAC;YAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAiB,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;gBACpE,QAAQ,EAAE,KAAK,CAAC,KAAK;aACtB,CAAC,CAAA;YAEF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAA;gBACf,OAAM;YACR,CAAC;YAED,IAAA,kBAAU,EACR,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACf,OAAO,EAAE,IAAA,kBAAU,EAAC,CAAC,CAAC,UAAU,CAAC;gBACjC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;gBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACxC,CAAC,CAAC,EACH,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CACzC,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,qBAAY;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;;AAjDM,kBAAW,GAAG,uCAAuC,CAAA;AACrD,eAAQ,GAAG;IAChB,6BAA6B;IAC7B,wCAAwC;CACzC,CAAA;AACM,WAAI,GAAG;IACZ,MAAM,EAAE,WAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACnE,CAAA;AACM,YAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;CACjF,CAAA;kBAZkB,MAAM"}
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class PRReview extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ number: import("@oclif/core/lib/interfaces").Arg<number, {
7
+ max?: number | undefined;
8
+ min?: number | undefined;
9
+ }>;
10
+ };
11
+ static flags: {
12
+ force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const index_1 = require("../../config/index");
6
+ const index_2 = require("../../git/index");
7
+ const prs_1 = require("../../api/prs");
8
+ const client_1 = require("../../api/client");
9
+ const index_3 = require("../../ui/index");
10
+ class PRReview extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(PRReview);
13
+ const token = (0, index_1.getToken)();
14
+ if (!token)
15
+ this.error('Not logged in. Run: gc auth login');
16
+ let owner, repo;
17
+ try {
18
+ ;
19
+ ({ owner, repo } = (0, index_2.resolveRepo)());
20
+ }
21
+ catch (err) {
22
+ this.error(err.message);
23
+ }
24
+ try {
25
+ const result = await (0, prs_1.submitReview)(token, owner, repo, args.number, flags.force);
26
+ if (flags.json) {
27
+ (0, index_3.printJson)(result);
28
+ }
29
+ else {
30
+ this.log(`Approved PR #${args.number}`);
31
+ }
32
+ }
33
+ catch (err) {
34
+ if (err instanceof client_1.GitCodeError)
35
+ this.error(err.message);
36
+ this.error('Could not connect to GitCode. Check your internet connection.');
37
+ }
38
+ }
39
+ }
40
+ PRReview.description = 'Approve a pull request review';
41
+ PRReview.examples = [
42
+ '<%= config.bin %> pr:review 5',
43
+ '<%= config.bin %> pr:review 5 --force',
44
+ ];
45
+ PRReview.args = {
46
+ number: core_1.Args.integer({ description: 'PR number', required: true }),
47
+ };
48
+ PRReview.flags = {
49
+ ...base_command_1.BaseCommand.baseFlags,
50
+ force: core_1.Flags.boolean({
51
+ description: 'Force the review approval',
52
+ default: false,
53
+ }),
54
+ };
55
+ exports.default = PRReview;
56
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/commands/pr/review.ts"],"names":[],"mappings":";;AAAA,sCAAyC;AACzC,qDAAgD;AAChD,8CAA6C;AAC7C,2CAA6C;AAC7C,uCAA4C;AAC5C,6CAA+C;AAC/C,0CAA0C;AAE1C,MAAqB,QAAS,SAAQ,0BAAW;IAiB/C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAElD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAE3D,IAAI,KAAa,EAAE,IAAY,CAAA;QAC/B,IAAI,CAAC;YACH,CAAC;YAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAY,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YAE/E,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,qBAAY;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;;AAzCM,oBAAW,GAAG,+BAA+B,CAAA;AAC7C,iBAAQ,GAAG;IAChB,+BAA+B;IAC/B,uCAAuC;CACxC,CAAA;AACM,aAAI,GAAG;IACZ,MAAM,EAAE,WAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACnE,CAAA;AACM,cAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC;QACnB,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAA;kBAfkB,QAAQ"}
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class PRReviewers extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ number: import("@oclif/core/lib/interfaces").Arg<number, {
7
+ max?: number | undefined;
8
+ min?: number | undefined;
9
+ }>;
10
+ usernames: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
11
+ };
12
+ static flags: {
13
+ remove: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ append: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const index_1 = require("../../config/index");
6
+ const index_2 = require("../../git/index");
7
+ const prs_1 = require("../../api/prs");
8
+ const client_1 = require("../../api/client");
9
+ const index_3 = require("../../ui/index");
10
+ class PRReviewers extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(PRReviewers);
13
+ const token = (0, index_1.getToken)();
14
+ if (!token)
15
+ this.error('Not logged in. Run: gc auth login');
16
+ let owner, repo;
17
+ try {
18
+ ;
19
+ ({ owner, repo } = (0, index_2.resolveRepo)());
20
+ }
21
+ catch (err) {
22
+ this.error(err.message);
23
+ }
24
+ try {
25
+ let result;
26
+ if (flags.remove) {
27
+ result = await (0, prs_1.removeReviewers)(token, owner, repo, args.number, args.usernames);
28
+ }
29
+ else {
30
+ result = await (0, prs_1.assignReviewers)(token, owner, repo, args.number, args.usernames, flags.append);
31
+ }
32
+ if (flags.json) {
33
+ (0, index_3.printJson)(result);
34
+ }
35
+ else {
36
+ (0, index_3.printTable)(result.map((u) => ({
37
+ login: u.login,
38
+ name: u.name,
39
+ })), ['login', 'name']);
40
+ }
41
+ }
42
+ catch (err) {
43
+ if (err instanceof client_1.GitCodeError)
44
+ this.error(err.message);
45
+ this.error('Could not connect to GitCode. Check your internet connection.');
46
+ }
47
+ }
48
+ }
49
+ PRReviewers.description = 'Assign or remove reviewers on a pull request';
50
+ PRReviewers.examples = [
51
+ '<%= config.bin %> pr:reviewers 5 alice,bob',
52
+ '<%= config.bin %> pr:reviewers 5 alice,bob --remove',
53
+ '<%= config.bin %> pr:reviewers 5 alice --append',
54
+ ];
55
+ PRReviewers.args = {
56
+ number: core_1.Args.integer({ description: 'PR number', required: true }),
57
+ usernames: core_1.Args.string({ description: 'Comma-separated reviewer logins', required: true }),
58
+ };
59
+ PRReviewers.flags = {
60
+ ...base_command_1.BaseCommand.baseFlags,
61
+ remove: core_1.Flags.boolean({
62
+ description: 'Remove reviewers instead of adding',
63
+ default: false,
64
+ }),
65
+ append: core_1.Flags.boolean({
66
+ description: 'Append to existing reviewers (only when adding)',
67
+ default: false,
68
+ }),
69
+ };
70
+ exports.default = PRReviewers;
71
+ //# sourceMappingURL=reviewers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewers.js","sourceRoot":"","sources":["../../../src/commands/pr/reviewers.ts"],"names":[],"mappings":";;AAAA,sCAAyC;AACzC,qDAAgD;AAChD,8CAA6C;AAC7C,2CAA6C;AAC7C,uCAAgE;AAChE,6CAA+C;AAC/C,0CAAsD;AAEtD,MAAqB,WAAY,SAAQ,0BAAW;IAuBlD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAErD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAE3D,IAAI,KAAa,EAAE,IAAY,CAAA;QAC/B,IAAI,CAAC;YACH,CAAC;YAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,CAAC;YACH,IAAI,MAAW,CAAA;YAEf,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,GAAG,MAAM,IAAA,qBAAe,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;YACjF,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,IAAA,qBAAe,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;YAC/F,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,IAAA,kBAAU,EACR,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC,EACH,CAAC,OAAO,EAAE,MAAM,CAAC,CAClB,CAAA;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,qBAAY;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;;AA3DM,uBAAW,GAAG,8CAA8C,CAAA;AAC5D,oBAAQ,GAAG;IAChB,4CAA4C;IAC5C,qDAAqD;IACrD,iDAAiD;CAClD,CAAA;AACM,gBAAI,GAAG;IACZ,MAAM,EAAE,WAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClE,SAAS,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC3F,CAAA;AACM,iBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,KAAK;KACf,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,iDAAiD;QAC9D,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAA;kBArBkB,WAAW"}
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class PRTest extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ number: import("@oclif/core/lib/interfaces").Arg<number, {
7
+ max?: number | undefined;
8
+ min?: number | undefined;
9
+ }>;
10
+ };
11
+ static flags: {
12
+ force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const index_1 = require("../../config/index");
6
+ const index_2 = require("../../git/index");
7
+ const prs_1 = require("../../api/prs");
8
+ const client_1 = require("../../api/client");
9
+ const index_3 = require("../../ui/index");
10
+ class PRTest extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(PRTest);
13
+ const token = (0, index_1.getToken)();
14
+ if (!token)
15
+ this.error('Not logged in. Run: gc auth login');
16
+ let owner, repo;
17
+ try {
18
+ ;
19
+ ({ owner, repo } = (0, index_2.resolveRepo)());
20
+ }
21
+ catch (err) {
22
+ this.error(err.message);
23
+ }
24
+ try {
25
+ const result = await (0, prs_1.submitTest)(token, owner, repo, args.number, flags.force);
26
+ if (flags.json) {
27
+ (0, index_3.printJson)(result);
28
+ }
29
+ else {
30
+ this.log(`Marked PR #${args.number} as test passed`);
31
+ }
32
+ }
33
+ catch (err) {
34
+ if (err instanceof client_1.GitCodeError)
35
+ this.error(err.message);
36
+ this.error('Could not connect to GitCode. Check your internet connection.');
37
+ }
38
+ }
39
+ }
40
+ PRTest.description = 'Mark a pull request as test passed';
41
+ PRTest.examples = [
42
+ '<%= config.bin %> pr:test 5',
43
+ '<%= config.bin %> pr:test 5 --force',
44
+ ];
45
+ PRTest.args = {
46
+ number: core_1.Args.integer({ description: 'PR number', required: true }),
47
+ };
48
+ PRTest.flags = {
49
+ ...base_command_1.BaseCommand.baseFlags,
50
+ force: core_1.Flags.boolean({
51
+ description: 'Force the test pass',
52
+ default: false,
53
+ }),
54
+ };
55
+ exports.default = PRTest;
56
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/pr/test.ts"],"names":[],"mappings":";;AAAA,sCAAyC;AACzC,qDAAgD;AAChD,8CAA6C;AAC7C,2CAA6C;AAC7C,uCAA0C;AAC1C,6CAA+C;AAC/C,0CAA0C;AAE1C,MAAqB,MAAO,SAAQ,0BAAW;IAiB7C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEhD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAE3D,IAAI,KAAa,EAAE,IAAY,CAAA;QAC/B,IAAI,CAAC;YACH,CAAC;YAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAU,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YAE7E,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,MAAM,iBAAiB,CAAC,CAAA;YACtD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,qBAAY;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;;AAzCM,kBAAW,GAAG,oCAAoC,CAAA;AAClD,eAAQ,GAAG;IAChB,6BAA6B;IAC7B,qCAAqC;CACtC,CAAA;AACM,WAAI,GAAG;IACZ,MAAM,EAAE,WAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACnE,CAAA;AACM,YAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC;QACnB,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAA;kBAfkB,MAAM"}
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class PRTesters extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ number: import("@oclif/core/lib/interfaces").Arg<number, {
7
+ max?: number | undefined;
8
+ min?: number | undefined;
9
+ }>;
10
+ usernames: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
11
+ };
12
+ static flags: {
13
+ remove: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ append: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const index_1 = require("../../config/index");
6
+ const index_2 = require("../../git/index");
7
+ const prs_1 = require("../../api/prs");
8
+ const client_1 = require("../../api/client");
9
+ const index_3 = require("../../ui/index");
10
+ class PRTesters extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(PRTesters);
13
+ const token = (0, index_1.getToken)();
14
+ if (!token)
15
+ this.error('Not logged in. Run: gc auth login');
16
+ let owner, repo;
17
+ try {
18
+ ;
19
+ ({ owner, repo } = (0, index_2.resolveRepo)());
20
+ }
21
+ catch (err) {
22
+ this.error(err.message);
23
+ }
24
+ try {
25
+ let result;
26
+ if (flags.remove) {
27
+ result = await (0, prs_1.removeTesters)(token, owner, repo, args.number, args.usernames);
28
+ }
29
+ else {
30
+ result = await (0, prs_1.assignTesters)(token, owner, repo, args.number, args.usernames, flags.append);
31
+ }
32
+ if (flags.json) {
33
+ (0, index_3.printJson)(result);
34
+ }
35
+ else {
36
+ (0, index_3.printTable)(result.map((u) => ({
37
+ login: u.login,
38
+ name: u.name,
39
+ })), ['login', 'name']);
40
+ }
41
+ }
42
+ catch (err) {
43
+ if (err instanceof client_1.GitCodeError)
44
+ this.error(err.message);
45
+ this.error('Could not connect to GitCode. Check your internet connection.');
46
+ }
47
+ }
48
+ }
49
+ PRTesters.description = 'Assign or remove testers on a pull request';
50
+ PRTesters.examples = [
51
+ '<%= config.bin %> pr:testers 5 alice,bob',
52
+ '<%= config.bin %> pr:testers 5 alice,bob --remove',
53
+ '<%= config.bin %> pr:testers 5 alice --append',
54
+ ];
55
+ PRTesters.args = {
56
+ number: core_1.Args.integer({ description: 'PR number', required: true }),
57
+ usernames: core_1.Args.string({ description: 'Comma-separated tester logins', required: true }),
58
+ };
59
+ PRTesters.flags = {
60
+ ...base_command_1.BaseCommand.baseFlags,
61
+ remove: core_1.Flags.boolean({
62
+ description: 'Remove testers instead of adding',
63
+ default: false,
64
+ }),
65
+ append: core_1.Flags.boolean({
66
+ description: 'Append to existing testers (only when adding)',
67
+ default: false,
68
+ }),
69
+ };
70
+ exports.default = PRTesters;
71
+ //# sourceMappingURL=testers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testers.js","sourceRoot":"","sources":["../../../src/commands/pr/testers.ts"],"names":[],"mappings":";;AAAA,sCAAyC;AACzC,qDAAgD;AAChD,8CAA6C;AAC7C,2CAA6C;AAC7C,uCAA4D;AAC5D,6CAA+C;AAC/C,0CAAsD;AAEtD,MAAqB,SAAU,SAAQ,0BAAW;IAuBhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAEnD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAE3D,IAAI,KAAa,EAAE,IAAY,CAAA;QAC/B,IAAI,CAAC;YACH,CAAC;YAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,CAAC;YACH,IAAI,MAAW,CAAA;YAEf,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,GAAG,MAAM,IAAA,mBAAa,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;YAC/E,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,IAAA,mBAAa,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;YAC7F,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,IAAA,kBAAU,EACR,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC,EACH,CAAC,OAAO,EAAE,MAAM,CAAC,CAClB,CAAA;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,qBAAY;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;;AA3DM,qBAAW,GAAG,4CAA4C,CAAA;AAC1D,kBAAQ,GAAG;IAChB,0CAA0C;IAC1C,mDAAmD;IACnD,+CAA+C;CAChD,CAAA;AACM,cAAI,GAAG;IACZ,MAAM,EAAE,WAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClE,SAAS,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACzF,CAAA;AACM,eAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,KAAK;KACf,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAA;kBArBkB,SAAS"}
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class PRUpdate extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ number: import("@oclif/core/lib/interfaces").Arg<number, {
7
+ max?: number | undefined;
8
+ min?: number | undefined;
9
+ }>;
10
+ };
11
+ static flags: {
12
+ title: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ body: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ state: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ labels: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
+ draft: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
17
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const index_1 = require("../../config/index");
6
+ const index_2 = require("../../git/index");
7
+ const prs_1 = require("../../api/prs");
8
+ const client_1 = require("../../api/client");
9
+ const index_3 = require("../../ui/index");
10
+ class PRUpdate extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(PRUpdate);
13
+ const token = (0, index_1.getToken)();
14
+ if (!token)
15
+ this.error('Not logged in. Run: gc auth login');
16
+ let owner, repo;
17
+ try {
18
+ ;
19
+ ({ owner, repo } = (0, index_2.resolveRepo)());
20
+ }
21
+ catch (err) {
22
+ this.error(err.message);
23
+ }
24
+ try {
25
+ const pr = await (0, prs_1.updatePR)(token, owner, repo, args.number, {
26
+ title: flags.title,
27
+ body: flags.body,
28
+ state: flags.state,
29
+ labels: flags.labels,
30
+ draft: flags.draft || undefined,
31
+ });
32
+ if (flags.json) {
33
+ (0, index_3.printJson)(pr);
34
+ return;
35
+ }
36
+ this.log(`Updated PR #${pr.number}: ${pr.title}`);
37
+ this.log(pr.html_url);
38
+ }
39
+ catch (err) {
40
+ if (err instanceof client_1.GitCodeError)
41
+ this.error(err.message);
42
+ this.error('Could not connect to GitCode. Check your internet connection.');
43
+ }
44
+ }
45
+ }
46
+ PRUpdate.description = 'Update a pull request';
47
+ PRUpdate.examples = [
48
+ '<%= config.bin %> pr update 5 --title "New title"',
49
+ '<%= config.bin %> pr update 5 --state closed',
50
+ '<%= config.bin %> pr update 5 --draft',
51
+ ];
52
+ PRUpdate.args = {
53
+ number: core_1.Args.integer({ description: 'PR number', required: true }),
54
+ };
55
+ PRUpdate.flags = {
56
+ ...base_command_1.BaseCommand.baseFlags,
57
+ title: core_1.Flags.string({ description: 'New title for the PR' }),
58
+ body: core_1.Flags.string({ description: 'New body for the PR' }),
59
+ state: core_1.Flags.string({
60
+ description: 'Set PR state',
61
+ options: ['open', 'closed'],
62
+ }),
63
+ labels: core_1.Flags.string({ description: 'Comma-separated list of labels' }),
64
+ draft: core_1.Flags.boolean({ description: 'Mark PR as draft', default: false }),
65
+ };
66
+ exports.default = PRUpdate;
67
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/pr/update.ts"],"names":[],"mappings":";;AAAA,sCAAyC;AACzC,qDAAgD;AAChD,8CAA6C;AAC7C,2CAA6C;AAC7C,uCAAwC;AACxC,6CAA+C;AAC/C,0CAA0C;AAE1C,MAAqB,QAAS,SAAQ,0BAAW;IAsB/C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAElD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAE3D,IAAI,KAAa,EAAE,IAAY,CAAA;QAC/B,IAAI,CAAC;YACH,CAAC;YAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAA,cAAQ,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;gBACzD,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;aAChC,CAAC,CAAA;YAEF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,iBAAS,EAAC,EAAE,CAAC,CAAA;gBACb,OAAM;YACR,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;YACjD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,qBAAY;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;;AAtDM,oBAAW,GAAG,uBAAuB,CAAA;AACrC,iBAAQ,GAAG;IAChB,mDAAmD;IACnD,8CAA8C;IAC9C,uCAAuC;CACxC,CAAA;AACM,aAAI,GAAG;IACZ,MAAM,EAAE,WAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACnE,CAAA;AACM,cAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,KAAK,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC;IAC5D,IAAI,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;IAC1D,KAAK,EAAE,YAAK,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;KAC5B,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IACvE,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;CAC1E,CAAA;kBApBkB,QAAQ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oh-gc/cli",
3
- "version": "0.4.5",
3
+ "version": "0.5.0",
4
4
  "description": "GitCode CLI — manage issues and PRs from the terminal",
5
5
  "license": "MIT",
6
6
  "author": "guozejun",