gcb-client 0.3.0 → 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.
- package/CHANGELOG.md +36 -0
- package/README.md +42 -0
- package/lib/commands/gh.d.ts +4 -1
- package/lib/commands/gh.d.ts.map +1 -1
- package/lib/commands/gh.js +201 -73
- package/lib/commands/gh.js.map +1 -1
- package/lib/commands/host-submit.d.ts +11 -4
- package/lib/commands/host-submit.d.ts.map +1 -1
- package/lib/commands/host-submit.js +89 -35
- package/lib/commands/host-submit.js.map +1 -1
- package/lib/commands/pr.d.ts +1 -1
- package/lib/commands/pr.d.ts.map +1 -1
- package/lib/commands/pr.js +122 -45
- package/lib/commands/pr.js.map +1 -1
- package/lib/commands/repo.js +2 -2
- package/lib/commands/repo.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +25 -11
- package/lib/index.js.map +1 -1
- package/lib/primary.d.ts +26 -0
- package/lib/primary.d.ts.map +1 -0
- package/lib/primary.js +35 -0
- package/lib/primary.js.map +1 -0
- package/package.json +2 -2
- package/lib/commands/issue.d.ts +0 -10
- package/lib/commands/issue.d.ts.map +0 -1
- package/lib/commands/issue.js +0 -147
- package/lib/commands/issue.js.map +0 -1
package/lib/commands/repo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../../src/commands/repo.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../../src/commands/repo.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { CommandBackend } from 'gcb-core';
|
|
2
|
+
import type { Primary } from './primary.ts';
|
|
2
3
|
export { runHelper } from './helper.ts';
|
|
3
4
|
export declare const CLIENT_HELP: string;
|
|
5
|
+
export declare function runClient(argv: readonly string[], primary?: Primary): Promise<number>;
|
|
4
6
|
export declare const clientBackend: CommandBackend;
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkBxC,eAAO,MAAM,WAAW,QAyB2C,CAAC;AAUpE,wBAAsB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAmD3F;AAED,eAAO,MAAM,aAAa,EAAE,cAK3B,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -43,9 +43,18 @@ Environment
|
|
|
43
43
|
GIT_BROKER_REQUIRE=1 Fail closed instead of behaving as if not installed when unconfigured
|
|
44
44
|
GIT_BROKER_SOCKET_FILE Where to read the socket path from when no variable is set
|
|
45
45
|
GCB_PROXY Per-push broker proxy: a URL, or empty for direct
|
|
46
|
+
GCB_PRIMARY CLI that runs catalogued actions (default: gh)
|
|
46
47
|
|
|
47
48
|
Host commands such as init/stage/compose/diagnose are in gcb-host.`;
|
|
48
|
-
|
|
49
|
+
/** Ask the selected action's own scan, rather than a second interpretation of its argv. */
|
|
50
|
+
async function actionAsksHelp(domain, sub, argv) {
|
|
51
|
+
if (sub === undefined || sub.startsWith('-')) {
|
|
52
|
+
return argv.includes('--help') || argv.includes('-h');
|
|
53
|
+
}
|
|
54
|
+
return (await import('./commands/gh.js')).actionHelpRequested(`${domain}:${sub}`, argv);
|
|
55
|
+
}
|
|
56
|
+
export async function runClient(argv, primary) {
|
|
57
|
+
const choose = async () => primary ?? (await import('./primary.js')).primaryFromEnv();
|
|
49
58
|
const [command, ...rest] = argv;
|
|
50
59
|
switch (command) {
|
|
51
60
|
case 'setup':
|
|
@@ -60,29 +69,34 @@ async function run(argv) {
|
|
|
60
69
|
// Bare `pr` asks the catalog too, where `run` needs no branch: the flag-only path would only
|
|
61
70
|
// tell it that --repo is required.
|
|
62
71
|
if (rest.length === 0)
|
|
63
|
-
return (await
|
|
72
|
+
return (await choose()).run(['pr']);
|
|
64
73
|
const sub = rest[0];
|
|
65
74
|
if (sub === 'review' && rest.some((argument) => argument === '--id' || argument.startsWith('--id='))) {
|
|
66
75
|
return (await import('./commands/pr.js')).runPr(rest.slice(1));
|
|
67
76
|
}
|
|
68
|
-
if (sub === 'create' &&
|
|
69
|
-
rest.some((argument) => argument === '--as-user' ||
|
|
70
|
-
argument.startsWith('--as-user=') ||
|
|
71
|
-
argument === '-as-user' ||
|
|
72
|
-
argument.startsWith('-as-user='))) {
|
|
77
|
+
if (sub === 'create' && (await import('./commands/gh.js')).actionHasAsUser('pr:create', rest)) {
|
|
73
78
|
// `pr create` is the catalogued action, but `--as-user` is the flag-only lifecycle's flag.
|
|
74
79
|
// Accept the obvious spelling instead of making the caller discover that `create` must go.
|
|
75
80
|
return (await import('./commands/pr.js')).runPr(rest.slice(1));
|
|
76
81
|
}
|
|
77
82
|
if (sub !== undefined && Object.hasOwn(GH_ACTIONS, `pr:${sub}`)) {
|
|
78
|
-
|
|
83
|
+
if (await actionAsksHelp('pr', sub, rest)) {
|
|
84
|
+
return (await import('./commands/gh.js')).runGh(['pr', ...rest], { unreachableExitCode: 3 });
|
|
85
|
+
}
|
|
86
|
+
return (await choose()).run(['pr', ...rest], { unreachableExitCode: 3 });
|
|
79
87
|
}
|
|
80
88
|
return (await import('./commands/pr.js')).runPr(rest);
|
|
81
89
|
}
|
|
82
90
|
case 'run':
|
|
83
|
-
|
|
91
|
+
if (await actionAsksHelp('run', rest[0], rest)) {
|
|
92
|
+
return (await import('./commands/gh.js')).runGh(['run', ...rest]);
|
|
93
|
+
}
|
|
94
|
+
return (await choose()).run(['run', ...rest]);
|
|
84
95
|
case 'issue':
|
|
85
|
-
|
|
96
|
+
if (await actionAsksHelp('issue', rest[0], rest)) {
|
|
97
|
+
return (await import('./commands/gh.js')).runGh(['issue', ...rest]);
|
|
98
|
+
}
|
|
99
|
+
return (await choose()).run(['issue', ...rest]);
|
|
86
100
|
case 'repo':
|
|
87
101
|
return (await import('./commands/repo.js')).runRepo(rest);
|
|
88
102
|
case 'gh':
|
|
@@ -96,6 +110,6 @@ export const clientBackend = {
|
|
|
96
110
|
role: 'client',
|
|
97
111
|
commands: CLIENT_COMMANDS,
|
|
98
112
|
help: CLIENT_HELP,
|
|
99
|
-
run,
|
|
113
|
+
run: runClient,
|
|
100
114
|
};
|
|
101
115
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/primary.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Options a primary passes through to the action runner. */
|
|
2
|
+
export interface PrimaryRunOptions {
|
|
3
|
+
readonly unreachableExitCode?: number;
|
|
4
|
+
readonly identity?: 'app' | 'user';
|
|
5
|
+
}
|
|
6
|
+
/** One CLI that can run a catalogued action. */
|
|
7
|
+
export interface Primary {
|
|
8
|
+
/** The configured name, e.g. `gh`. */
|
|
9
|
+
readonly name: string;
|
|
10
|
+
/** Run one catalogued action. */
|
|
11
|
+
run(argv: readonly string[], options?: PrimaryRunOptions): Promise<number>;
|
|
12
|
+
}
|
|
13
|
+
/** The `gh` adapter. */
|
|
14
|
+
export declare const GH_PRIMARY: Primary;
|
|
15
|
+
/**
|
|
16
|
+
* Resolve the configured primary.
|
|
17
|
+
*
|
|
18
|
+
* Only `gh` is implemented; an unknown name fails closed instead of falling back to a different
|
|
19
|
+
* CLI that would interpret the argv differently.
|
|
20
|
+
*
|
|
21
|
+
* @param env - the environment to read `GCB_PRIMARY` from.
|
|
22
|
+
* @param primaries - the available adapters, keyed by name.
|
|
23
|
+
* @returns the selected primary.
|
|
24
|
+
*/
|
|
25
|
+
export declare function primaryFromEnv(env?: NodeJS.ProcessEnv, primaries?: Readonly<Record<string, Primary>>): Primary;
|
|
26
|
+
//# sourceMappingURL=primary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primary.d.ts","sourceRoot":"","sources":["../src/primary.ts"],"names":[],"mappings":"AAUA,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACpC;AAED,gDAAgD;AAChD,MAAM,WAAW,OAAO;IACtB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5E;AAED,wBAAwB;AACxB,eAAO,MAAM,UAAU,EAAE,OAGxB,CAAC;AAKF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,SAAS,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAqB,GAC/D,OAAO,CAQT"}
|
package/lib/primary.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI adapter that runs a catalogued action.
|
|
3
|
+
*
|
|
4
|
+
* The action catalog names `gh` commands today. A primary is the small seam between dispatch and
|
|
5
|
+
* that CLI, so selecting another forge CLI later does not require editing every command module.
|
|
6
|
+
*/
|
|
7
|
+
import { fail } from 'gcb-core';
|
|
8
|
+
import { runGh } from './commands/gh.js';
|
|
9
|
+
/** The `gh` adapter. */
|
|
10
|
+
export const GH_PRIMARY = {
|
|
11
|
+
name: 'gh',
|
|
12
|
+
run: (argv, options) => runGh(argv, options),
|
|
13
|
+
};
|
|
14
|
+
/** The adapters available in production. */
|
|
15
|
+
const DEFAULT_PRIMARIES = { [GH_PRIMARY.name]: GH_PRIMARY };
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the configured primary.
|
|
18
|
+
*
|
|
19
|
+
* Only `gh` is implemented; an unknown name fails closed instead of falling back to a different
|
|
20
|
+
* CLI that would interpret the argv differently.
|
|
21
|
+
*
|
|
22
|
+
* @param env - the environment to read `GCB_PRIMARY` from.
|
|
23
|
+
* @param primaries - the available adapters, keyed by name.
|
|
24
|
+
* @returns the selected primary.
|
|
25
|
+
*/
|
|
26
|
+
export function primaryFromEnv(env = process.env, primaries = DEFAULT_PRIMARIES) {
|
|
27
|
+
const configured = env['GCB_PRIMARY'] ?? GH_PRIMARY.name;
|
|
28
|
+
const selected = Object.hasOwn(primaries, configured) ? primaries[configured] : undefined;
|
|
29
|
+
if (selected === undefined) {
|
|
30
|
+
const available = Object.keys(primaries).join(', ');
|
|
31
|
+
fail(`unsupported primary ${JSON.stringify(configured)}; available: ${available}`);
|
|
32
|
+
}
|
|
33
|
+
return selected;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=primary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primary.js","sourceRoot":"","sources":["../src/primary.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAgBzC,wBAAwB;AACxB,MAAM,CAAC,MAAM,UAAU,GAAY;IACjC,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;CAC7C,CAAC;AAEF,4CAA4C;AAC5C,MAAM,iBAAiB,GAAsC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;AAE/F;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAG,GAAsB,OAAO,CAAC,GAAG,EACpC,SAAS,GAAsC,iBAAiB;IAEhE,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gcb-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Container-side gcb client: credential helper, setup, and socket-backed commands.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "JounQin <admin@1stg.me>",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"gcb-core": "0.
|
|
30
|
+
"gcb-core": "0.5.0"
|
|
31
31
|
},
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public",
|
package/lib/commands/issue.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/** Usage text for the host broker create path. */
|
|
2
|
-
export declare const ISSUE_USAGE = "Usage: gcb issue create [--as-user [login]] [options]\n\nCreate an issue. Without --as-user it runs through the app broker; bare --as-user uses the\nbroker's authorized person; --as-user <login> writes a request for the host broker.\n\n --title <text> The title [required]\n --body <text> The body, inline, or use --body-file (one is required by the\n broker route; the host broker also takes either)\n --body-file <path> The body, read from a file\n --repo <owner/name> The repository; with --as-user <login> it must be in the\n broker allowlist and needs no checkout of its own\n --as-user Use the broker's authorized person\n --as-user <login> Use ~/.config/gh-<login> on the host\n --proxy <url> Use this proxy for the host broker's gh call\n --no-proxy Reach GitHub directly for the host broker's gh call\n -h, --help Show this help\n\nThe broker route (no --as-user or bare) takes --body/--body-file and catalogued flags such as\n--label/--assignee; the host route takes --body/--body-file only.\n";
|
|
3
|
-
/**
|
|
4
|
-
* Run one `issue` command.
|
|
5
|
-
*
|
|
6
|
-
* @param argv - arguments after `issue`.
|
|
7
|
-
* @returns the process exit code.
|
|
8
|
-
*/
|
|
9
|
-
export declare function runIssue(argv: readonly string[]): Promise<number>;
|
|
10
|
-
//# sourceMappingURL=issue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../src/commands/issue.ts"],"names":[],"mappings":"AAqBA,kDAAkD;AAClD,eAAO,MAAM,WAAW,koCAmBvB,CAAC;AA+BF;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkEvE"}
|
package/lib/commands/issue.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `issue` — catalogued issue actions, plus `create --as-user` through the host broker.
|
|
3
|
-
*
|
|
4
|
-
* Without `--as-user` this is a thin wrapper: the catalogued `issue:create` action runs through the app
|
|
5
|
-
* broker like every other gh action. With `--as-user` the request goes to the host broker, because the
|
|
6
|
-
* app may not be installed on the repository and a person's account is the only route that can create
|
|
7
|
-
* an issue there.
|
|
8
|
-
*/
|
|
9
|
-
import { readFileSync } from 'node:fs';
|
|
10
|
-
import { LOGIN } from 'gcb-core';
|
|
11
|
-
import { fail, parseArgs, say } from 'gcb-core';
|
|
12
|
-
import { runGh } from './gh.js';
|
|
13
|
-
import { submitToOpener } from './host-submit.js';
|
|
14
|
-
/** Every flag the `--as-user` create path understands. */
|
|
15
|
-
const KNOWN_FLAGS = new Set([
|
|
16
|
-
'help', 'h', 'title', 'body', 'body-file', 'repo', 'as-user', 'proxy', 'no-proxy',
|
|
17
|
-
]);
|
|
18
|
-
/** Usage text for the host broker create path. */
|
|
19
|
-
export const ISSUE_USAGE = `Usage: gcb issue create [--as-user [login]] [options]
|
|
20
|
-
|
|
21
|
-
Create an issue. Without --as-user it runs through the app broker; bare --as-user uses the
|
|
22
|
-
broker's authorized person; --as-user <login> writes a request for the host broker.
|
|
23
|
-
|
|
24
|
-
--title <text> The title [required]
|
|
25
|
-
--body <text> The body, inline, or use --body-file (one is required by the
|
|
26
|
-
broker route; the host broker also takes either)
|
|
27
|
-
--body-file <path> The body, read from a file
|
|
28
|
-
--repo <owner/name> The repository; with --as-user <login> it must be in the
|
|
29
|
-
broker allowlist and needs no checkout of its own
|
|
30
|
-
--as-user Use the broker's authorized person
|
|
31
|
-
--as-user <login> Use ~/.config/gh-<login> on the host
|
|
32
|
-
--proxy <url> Use this proxy for the host broker's gh call
|
|
33
|
-
--no-proxy Reach GitHub directly for the host broker's gh call
|
|
34
|
-
-h, --help Show this help
|
|
35
|
-
|
|
36
|
-
The broker route (no --as-user or bare) takes --body/--body-file and catalogued flags such as
|
|
37
|
-
--label/--assignee; the host route takes --body/--body-file only.
|
|
38
|
-
`;
|
|
39
|
-
/** Drop one value-taking flag and its value, in either spelling. */
|
|
40
|
-
function dropFlag(argv, name) {
|
|
41
|
-
const out = [];
|
|
42
|
-
for (let index = 0; index < argv.length; index += 1) {
|
|
43
|
-
const argument = argv[index];
|
|
44
|
-
if (argument === `--${name}` || argument === `-${name}`) {
|
|
45
|
-
const next = argv[index + 1];
|
|
46
|
-
if (next !== undefined && !next.startsWith('--'))
|
|
47
|
-
index += 1;
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
if (argument?.startsWith(`--${name}=`) || argument?.startsWith(`-${name}=`))
|
|
51
|
-
continue;
|
|
52
|
-
if (argument !== undefined)
|
|
53
|
-
out.push(argument);
|
|
54
|
-
}
|
|
55
|
-
return out;
|
|
56
|
-
}
|
|
57
|
-
/** Translate --body-file into the catalogued --body value. */
|
|
58
|
-
function forwardBodyFile(argv, bodyFile) {
|
|
59
|
-
let body;
|
|
60
|
-
try {
|
|
61
|
-
body = readFileSync(bodyFile, 'utf8');
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
fail(`cannot read ${bodyFile}: ${error.message}`);
|
|
65
|
-
}
|
|
66
|
-
const rest = dropFlag(dropFlag(argv, 'body-file'), 'body');
|
|
67
|
-
rest.push(`--body=${body}`);
|
|
68
|
-
return rest;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Run one `issue` command.
|
|
72
|
-
*
|
|
73
|
-
* @param argv - arguments after `issue`.
|
|
74
|
-
* @returns the process exit code.
|
|
75
|
-
*/
|
|
76
|
-
export async function runIssue(argv) {
|
|
77
|
-
const args = parseArgs(argv, { booleans: ['help', 'no-proxy'] });
|
|
78
|
-
const account = args.values('as-user')[0];
|
|
79
|
-
if (args.positionals[0] !== 'create') {
|
|
80
|
-
if (args.has('as-user') || account !== undefined)
|
|
81
|
-
fail('--as-user only creates an issue');
|
|
82
|
-
return runGh(['issue', ...argv]);
|
|
83
|
-
}
|
|
84
|
-
if (args.has('help') || args.has('h')) {
|
|
85
|
-
say(ISSUE_USAGE);
|
|
86
|
-
return 0;
|
|
87
|
-
}
|
|
88
|
-
if (args.values('as-user').length > 1)
|
|
89
|
-
fail('--as-user may only be given once');
|
|
90
|
-
if (args.has('as-user') && args.values('as-user').length > 0) {
|
|
91
|
-
fail('--as-user cannot be both bare and given a login');
|
|
92
|
-
}
|
|
93
|
-
if (args.has('as-user')) {
|
|
94
|
-
// Bare --as-user is the broker's authorized person; the action decides which token to use.
|
|
95
|
-
let rest = argv.filter((argument) => argument !== '--as-user' && argument !== '-as-user');
|
|
96
|
-
const bodyFile = args.value('body-file');
|
|
97
|
-
if (bodyFile !== undefined)
|
|
98
|
-
rest = forwardBodyFile(rest, bodyFile);
|
|
99
|
-
return runGh(['issue', ...rest], { identity: 'user' });
|
|
100
|
-
}
|
|
101
|
-
if (account === undefined) {
|
|
102
|
-
const bodyFile = args.value('body-file');
|
|
103
|
-
return runGh(['issue', ...(bodyFile === undefined ? argv : forwardBodyFile(argv, bodyFile))]);
|
|
104
|
-
}
|
|
105
|
-
if (!LOGIN.test(account))
|
|
106
|
-
fail(`--as-user must be a GitHub login, got ${JSON.stringify(account)}`);
|
|
107
|
-
for (const name of args.names) {
|
|
108
|
-
if (!KNOWN_FLAGS.has(name))
|
|
109
|
-
fail('unknown option --' + name + ' for gcb issue create --as-user');
|
|
110
|
-
}
|
|
111
|
-
if (args.positionals.length > 1)
|
|
112
|
-
fail('unexpected argument ' + JSON.stringify(args.positionals[1]));
|
|
113
|
-
const proxyValues = args.values('proxy');
|
|
114
|
-
if (args.has('proxy') && proxyValues.length === 0)
|
|
115
|
-
fail('--proxy needs a value');
|
|
116
|
-
if (args.has('no-proxy') && (args.has('proxy') || proxyValues.length > 0)) {
|
|
117
|
-
fail('--proxy and --no-proxy are mutually exclusive');
|
|
118
|
-
}
|
|
119
|
-
const repo = args.value('repo');
|
|
120
|
-
if ((args.has('repo') || args.values('repo').length > 0) && (repo === undefined || repo.trim() === '')) {
|
|
121
|
-
fail('--repo needs a value (e.g. owner/name)');
|
|
122
|
-
}
|
|
123
|
-
const title = args.value('title');
|
|
124
|
-
if (title === undefined)
|
|
125
|
-
fail('--title is required to create an issue');
|
|
126
|
-
const bodyFile = args.value('body-file');
|
|
127
|
-
let body = args.value('body') ?? '';
|
|
128
|
-
if (bodyFile !== undefined) {
|
|
129
|
-
try {
|
|
130
|
-
body = readFileSync(bodyFile, 'utf8');
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
fail(`cannot read ${bodyFile}: ${error.message}`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return submitToOpener({
|
|
137
|
-
kind: 'issue',
|
|
138
|
-
...(repo === undefined ? {} : { repo }),
|
|
139
|
-
title,
|
|
140
|
-
body,
|
|
141
|
-
account,
|
|
142
|
-
proxy: args.has('no-proxy') ? null : args.value('proxy'),
|
|
143
|
-
session: 'issue',
|
|
144
|
-
pid: process.pid,
|
|
145
|
-
}, (answer) => `opened issue #${answer.number ?? '?'} as ${account}: ${answer.url ?? '(no url)'}`);
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=issue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../src/commands/issue.ts"],"names":[],"mappings":"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"}
|