@whooshbang/sdk 1.0.0-rc.23 → 1.0.0-rc.25
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/dist/cli/arguments.js +45 -4
- package/dist/cli/arguments.js.map +1 -1
- package/dist/cli/commands.d.ts +35 -0
- package/dist/cli/commands.js +354 -25
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/config.d.ts +28 -0
- package/dist/cli/config.js +38 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/main.d.ts +3 -0
- package/dist/cli/main.js +52 -5
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/selectors.d.ts +19 -2
- package/dist/cli/selectors.js +52 -10
- package/dist/cli/selectors.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/arguments.js
CHANGED
|
@@ -4,7 +4,41 @@ const SWITCHES = new Set([
|
|
|
4
4
|
"version",
|
|
5
5
|
"credential-stdin",
|
|
6
6
|
"yes",
|
|
7
|
+
"free-text",
|
|
8
|
+
"no-connection",
|
|
9
|
+
"no-route",
|
|
10
|
+
"invite",
|
|
11
|
+
"no-invite",
|
|
12
|
+
"send",
|
|
13
|
+
"no-send",
|
|
14
|
+
"ask",
|
|
7
15
|
]);
|
|
16
|
+
/**
|
|
17
|
+
* Short and shortened spellings, resolved here so no command ever sees one.
|
|
18
|
+
*
|
|
19
|
+
* A short form that some commands understand and others do not is worse than
|
|
20
|
+
* none: the failure is silent, because an unrecognised flag is read as a
|
|
21
|
+
* switch and the value it carried disappears. Normalising at the door means
|
|
22
|
+
* `-p` is the same argument as `--project` everywhere, including in the error
|
|
23
|
+
* messages, which always name the long form so nothing has to be memorised to
|
|
24
|
+
* recover from a mistake.
|
|
25
|
+
*/
|
|
26
|
+
const ALIASES = new Map([
|
|
27
|
+
["c", "connection"],
|
|
28
|
+
["e", "environment"],
|
|
29
|
+
["env", "environment"],
|
|
30
|
+
["k", "key"],
|
|
31
|
+
["m", "mode"],
|
|
32
|
+
["n", "name"],
|
|
33
|
+
["p", "project"],
|
|
34
|
+
["s", "subscriber"],
|
|
35
|
+
["t", "text"],
|
|
36
|
+
["w", "wait"],
|
|
37
|
+
["y", "yes"],
|
|
38
|
+
]);
|
|
39
|
+
function canonical(name) {
|
|
40
|
+
return ALIASES.get(name) ?? name;
|
|
41
|
+
}
|
|
8
42
|
export function parseArguments(argv) {
|
|
9
43
|
const words = [];
|
|
10
44
|
const options = new Map();
|
|
@@ -12,13 +46,20 @@ export function parseArguments(argv) {
|
|
|
12
46
|
const repeated = new Map();
|
|
13
47
|
for (let index = 0; index < argv.length; index += 1) {
|
|
14
48
|
const token = argv[index];
|
|
15
|
-
|
|
49
|
+
// A single dash introduces a short form; `-` alone and a negative number
|
|
50
|
+
// are ordinary words, because both are things somebody might legitimately
|
|
51
|
+
// pass as a value.
|
|
52
|
+
const short = token.length > 1 &&
|
|
53
|
+
token.startsWith("-") &&
|
|
54
|
+
!token.startsWith("--") &&
|
|
55
|
+
!/^-\d/u.test(token);
|
|
56
|
+
if (!token.startsWith("--") && !short) {
|
|
16
57
|
words.push(token);
|
|
17
58
|
continue;
|
|
18
59
|
}
|
|
19
|
-
const body = token.slice(2);
|
|
60
|
+
const body = short ? token.slice(1) : token.slice(2);
|
|
20
61
|
const equals = body.indexOf("=");
|
|
21
|
-
const name = equals === -1 ? body : body.slice(0, equals);
|
|
62
|
+
const name = canonical(equals === -1 ? body : body.slice(0, equals));
|
|
22
63
|
if (equals !== -1) {
|
|
23
64
|
const value = body.slice(equals + 1);
|
|
24
65
|
options.set(name, value);
|
|
@@ -30,7 +71,7 @@ export function parseArguments(argv) {
|
|
|
30
71
|
continue;
|
|
31
72
|
}
|
|
32
73
|
const next = argv[index + 1];
|
|
33
|
-
if (next === undefined || next.startsWith("
|
|
74
|
+
if (next === undefined || next.startsWith("-")) {
|
|
34
75
|
// A bare unknown flag is a switch rather than an error: the command
|
|
35
76
|
// decides what it does and does not understand, and it can say so in its
|
|
36
77
|
// own words.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/cli/arguments.ts"],"names":[],"mappings":"AAkBA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,MAAM;IACN,MAAM;IACN,SAAS;IACT,kBAAkB;IAClB,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,IAAuB;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE7C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAW,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/cli/arguments.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/commands.d.ts
CHANGED
|
@@ -10,7 +10,11 @@ export interface CommandContext {
|
|
|
10
10
|
readonly openUrl: (url: string) => Promise<void>;
|
|
11
11
|
readonly readStdin: () => Promise<string>;
|
|
12
12
|
readonly credentialsFile?: string;
|
|
13
|
+
readonly contextFile?: string;
|
|
14
|
+
/** Asks a question when there is a person to ask. Absent means non-interactive. */
|
|
15
|
+
readonly prompt?: (question: string, fallback?: string) => Promise<string>;
|
|
13
16
|
}
|
|
17
|
+
declare const CONNECTION_MODES: readonly ["whooshbang_shared", "customer_managed", "customer_byok"];
|
|
14
18
|
/**
|
|
15
19
|
* Builds the question from what was asked for.
|
|
16
20
|
*
|
|
@@ -32,6 +36,37 @@ export interface EnvironmentScope {
|
|
|
32
36
|
}
|
|
33
37
|
export declare function untilAnswered(api: WhooshBangClient, scope: EnvironmentScope | null, interactionId: string, waitFor: number): Promise<InteractionSummary>;
|
|
34
38
|
export declare function describeInteraction(summary: InteractionSummary, where: string): string[];
|
|
39
|
+
/**
|
|
40
|
+
* Asks for something that was not given, when there is somebody to ask.
|
|
41
|
+
*
|
|
42
|
+
* Every question is also an argument. Supply them all and nothing is asked, so
|
|
43
|
+
* the same command works unchanged in a script — which is the rule that keeps
|
|
44
|
+
* a guided path from quietly becoming a second, divergent product.
|
|
45
|
+
*
|
|
46
|
+
* With no terminal attached there is nobody to answer, so this refuses in the
|
|
47
|
+
* same words the argument would have: a cron job should be told which flag it
|
|
48
|
+
* forgot, not left waiting on a prompt nothing will ever read.
|
|
49
|
+
*/
|
|
50
|
+
export declare function ask(context: CommandContext, question: string, option: string, fallback?: string): Promise<string>;
|
|
51
|
+
/**
|
|
52
|
+
* A yes-or-no step that can be answered in advance.
|
|
53
|
+
*
|
|
54
|
+
* `--invite` and `--no-invite` decide it without asking, which is what lets
|
|
55
|
+
* `wb init` run in a script. With no terminal and no flag the answer is no:
|
|
56
|
+
* an unattended run should do less rather than guess.
|
|
57
|
+
*/
|
|
58
|
+
export declare function confirmed(context: CommandContext, option: string, question: string): Promise<boolean>;
|
|
59
|
+
/** What to call a connection nobody bothered to name. */
|
|
60
|
+
export declare function defaultConnectionName(mode: (typeof CONNECTION_MODES)[number]): string;
|
|
61
|
+
/**
|
|
62
|
+
* The shared identity to connect through, chosen rather than demanded.
|
|
63
|
+
*
|
|
64
|
+
* A provider offering exactly one is not a choice, and making somebody run a
|
|
65
|
+
* lookup command to copy an opaque id out of it was the single largest piece of
|
|
66
|
+
* the getting-started path. When there is more than one the choice is real, so
|
|
67
|
+
* it is named along with what the alternatives are.
|
|
68
|
+
*/
|
|
69
|
+
export declare function sharedIdentityFor(api: WhooshBangClient, projectId: string, environmentId: string, parsed: ParsedArguments): Promise<string>;
|
|
35
70
|
/**
|
|
36
71
|
* Words left over once the command itself is accounted for.
|
|
37
72
|
*
|
package/dist/cli/commands.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { confirmInteraction, inputInteraction, interactionAnswer, isInteractionTerminal, selectInteraction, } from "../interactions.js";
|
|
3
3
|
import { required, UsageError } from "./arguments.js";
|
|
4
|
+
import { loadContext, storeContext } from "./config.js";
|
|
4
5
|
import { emit, emitSecret, table } from "./output.js";
|
|
5
6
|
import { resolveDefaultNotifier, resolveEnvironment } from "./selectors.js";
|
|
6
7
|
import { authorizedClient, authorizedSession, resolveOrigin, signIn, signOut, } from "./session.js";
|
|
@@ -34,6 +35,21 @@ function deliveryTarget(parsed) {
|
|
|
34
35
|
}
|
|
35
36
|
return value;
|
|
36
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Where resolved ids should be remembered, and in which file.
|
|
40
|
+
*
|
|
41
|
+
* The file is threaded rather than defaulted so a test can point it somewhere
|
|
42
|
+
* disposable; nothing in the CLI should be able to write to a developer's real
|
|
43
|
+
* configuration while a suite is running.
|
|
44
|
+
*/
|
|
45
|
+
function resolveOptions(context) {
|
|
46
|
+
return {
|
|
47
|
+
...(context.contextFile === undefined
|
|
48
|
+
? {}
|
|
49
|
+
: { contextFile: context.contextFile }),
|
|
50
|
+
origin: context.origin,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
37
53
|
async function client(context) {
|
|
38
54
|
return authorizedClient({
|
|
39
55
|
...(context.credentialsFile === undefined
|
|
@@ -246,7 +262,7 @@ async function messageScope(context) {
|
|
|
246
262
|
where: "",
|
|
247
263
|
};
|
|
248
264
|
}
|
|
249
|
-
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
|
|
265
|
+
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
|
|
250
266
|
return {
|
|
251
267
|
api,
|
|
252
268
|
environmentId,
|
|
@@ -255,6 +271,122 @@ async function messageScope(context) {
|
|
|
255
271
|
where: `--project ${projectId} --environment ${environmentId}`,
|
|
256
272
|
};
|
|
257
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Asks for something that was not given, when there is somebody to ask.
|
|
276
|
+
*
|
|
277
|
+
* Every question is also an argument. Supply them all and nothing is asked, so
|
|
278
|
+
* the same command works unchanged in a script — which is the rule that keeps
|
|
279
|
+
* a guided path from quietly becoming a second, divergent product.
|
|
280
|
+
*
|
|
281
|
+
* With no terminal attached there is nobody to answer, so this refuses in the
|
|
282
|
+
* same words the argument would have: a cron job should be told which flag it
|
|
283
|
+
* forgot, not left waiting on a prompt nothing will ever read.
|
|
284
|
+
*/
|
|
285
|
+
export async function ask(context, question, option, fallback) {
|
|
286
|
+
const given = context.parsed.options.get(option);
|
|
287
|
+
if (given)
|
|
288
|
+
return given;
|
|
289
|
+
if (!context.prompt) {
|
|
290
|
+
throw new UsageError(`--${option} is required: ${question.toLowerCase()}.`);
|
|
291
|
+
}
|
|
292
|
+
const answer = (await context.prompt(question, fallback)).trim();
|
|
293
|
+
if (answer.length > 0)
|
|
294
|
+
return answer;
|
|
295
|
+
if (fallback !== undefined)
|
|
296
|
+
return fallback;
|
|
297
|
+
throw new UsageError(`--${option} is required: ${question.toLowerCase()}.`);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* A yes-or-no step that can be answered in advance.
|
|
301
|
+
*
|
|
302
|
+
* `--invite` and `--no-invite` decide it without asking, which is what lets
|
|
303
|
+
* `wb init` run in a script. With no terminal and no flag the answer is no:
|
|
304
|
+
* an unattended run should do less rather than guess.
|
|
305
|
+
*/
|
|
306
|
+
export async function confirmed(context, option, question) {
|
|
307
|
+
if (context.parsed.switches.has(`no-${option}`))
|
|
308
|
+
return false;
|
|
309
|
+
if (context.parsed.switches.has(option))
|
|
310
|
+
return true;
|
|
311
|
+
if (!context.prompt)
|
|
312
|
+
return false;
|
|
313
|
+
return confirm(context, question);
|
|
314
|
+
}
|
|
315
|
+
/** A yes-or-no question, defaulting to yes, and skipped entirely by --yes. */
|
|
316
|
+
async function confirm(context, question) {
|
|
317
|
+
if (context.parsed.switches.has("yes") || !context.prompt)
|
|
318
|
+
return true;
|
|
319
|
+
const answer = (await context.prompt(`${question} (Y/n)`, "y"))
|
|
320
|
+
.trim()
|
|
321
|
+
.toLowerCase();
|
|
322
|
+
return answer !== "n" && answer !== "no";
|
|
323
|
+
}
|
|
324
|
+
/** What to call a connection nobody bothered to name. */
|
|
325
|
+
export function defaultConnectionName(mode) {
|
|
326
|
+
return mode === "whooshbang_shared"
|
|
327
|
+
? "Telegram via WhooshBang"
|
|
328
|
+
: mode === "customer_byok"
|
|
329
|
+
? "Telegram via your own bot"
|
|
330
|
+
: "Telegram via a managed bot";
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* The shared identity to connect through, chosen rather than demanded.
|
|
334
|
+
*
|
|
335
|
+
* A provider offering exactly one is not a choice, and making somebody run a
|
|
336
|
+
* lookup command to copy an opaque id out of it was the single largest piece of
|
|
337
|
+
* the getting-started path. When there is more than one the choice is real, so
|
|
338
|
+
* it is named along with what the alternatives are.
|
|
339
|
+
*/
|
|
340
|
+
export async function sharedIdentityFor(api, projectId, environmentId, parsed) {
|
|
341
|
+
const named = parsed.options.get("shared-identity");
|
|
342
|
+
if (named)
|
|
343
|
+
return named;
|
|
344
|
+
const providers = await api.listConnectionProviders(projectId, environmentId);
|
|
345
|
+
const identities = providers.items.flatMap((provider) => provider.shared_identities.map((identity) => ({
|
|
346
|
+
display: identity.display_name,
|
|
347
|
+
id: identity.id,
|
|
348
|
+
})));
|
|
349
|
+
if (identities.length === 1)
|
|
350
|
+
return identities[0].id;
|
|
351
|
+
if (identities.length === 0) {
|
|
352
|
+
throw new UsageError("This environment offers no shared identity to connect through. Bring your own bot with --mode customer_byok.");
|
|
353
|
+
}
|
|
354
|
+
throw new UsageError(`More than one shared identity is offered; name one with --shared-identity. They are ${identities
|
|
355
|
+
.map((identity) => `${identity.id} (${identity.display})`)
|
|
356
|
+
.join(", ")}.`);
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Attaches a connection to the environment's default notifier.
|
|
360
|
+
*
|
|
361
|
+
* The first connection in an environment routes itself, so this only ever has
|
|
362
|
+
* work to do for the second and later ones. Somebody who has just created a
|
|
363
|
+
* connection means to use it; an unrouted one that silently delivers nothing is
|
|
364
|
+
* the shape of the bug this removes.
|
|
365
|
+
*/
|
|
366
|
+
async function routeConnection(api, projectId, environmentId, connectionId) {
|
|
367
|
+
const notifierId = await resolveDefaultNotifier(api, projectId, environmentId);
|
|
368
|
+
await api.attachNotifierConnection(projectId, environmentId, {
|
|
369
|
+
connection_id: connectionId,
|
|
370
|
+
notifier_id: notifierId,
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* `wb send me "text"` and `wb message send --subscriber me --text "text"`.
|
|
375
|
+
*
|
|
376
|
+
* The long spelling stays because it is what a script should read like and
|
|
377
|
+
* what every error message names. The short one exists because the everyday
|
|
378
|
+
* command should be typeable from memory, and two positionals in a fixed order
|
|
379
|
+
* cannot be misread when the command itself says which is which.
|
|
380
|
+
*/
|
|
381
|
+
function positional(context, names) {
|
|
382
|
+
const options = new Map(context.parsed.options);
|
|
383
|
+
names.forEach((name, index) => {
|
|
384
|
+
const word = context.parsed.words[index + 1];
|
|
385
|
+
if (word !== undefined && !options.has(name))
|
|
386
|
+
options.set(name, word);
|
|
387
|
+
});
|
|
388
|
+
return { ...context, parsed: { ...context.parsed, options } };
|
|
389
|
+
}
|
|
258
390
|
const commands = {
|
|
259
391
|
async login(context) {
|
|
260
392
|
const scopes = context.parsed.repeated.get("scope");
|
|
@@ -313,7 +445,40 @@ const commands = {
|
|
|
313
445
|
.replace(/^-+|-+$/gu, "");
|
|
314
446
|
const api = await client(context);
|
|
315
447
|
const project = await api.createProject({ name, slug }, idempotency(context.parsed));
|
|
316
|
-
|
|
448
|
+
const test = project.environments.find((environment) => environment.kind === "test");
|
|
449
|
+
// A project with no way to send is not a thing anybody wanted, so the
|
|
450
|
+
// happy path builds one. `--no-connection` exists because a project is
|
|
451
|
+
// also a legitimate thing to create on its own, before anybody knows which
|
|
452
|
+
// channel it will use — and the granular commands remain for that.
|
|
453
|
+
const wanted = !context.parsed.switches.has("no-connection") && test;
|
|
454
|
+
let connection = null;
|
|
455
|
+
let failure = null;
|
|
456
|
+
if (wanted) {
|
|
457
|
+
try {
|
|
458
|
+
const sharedIdentity = await sharedIdentityFor(api, project.id, test.id, context.parsed);
|
|
459
|
+
connection = await api.createChannelConnection(project.id, test.id, {
|
|
460
|
+
display_name: defaultConnectionName("whooshbang_shared"),
|
|
461
|
+
mode: "whooshbang_shared",
|
|
462
|
+
shared_identity_id: sharedIdentity,
|
|
463
|
+
}, { idempotencyKey: randomUUID() });
|
|
464
|
+
}
|
|
465
|
+
catch (error) {
|
|
466
|
+
// The project exists and is the thing that was asked for. Failing the
|
|
467
|
+
// whole command here would leave one behind while reporting only that
|
|
468
|
+
// nothing worked, and the connection is recoverable with one command.
|
|
469
|
+
failure =
|
|
470
|
+
error instanceof Error ? error.message : "the connection was refused";
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
if (test) {
|
|
474
|
+
await storeContext(context.origin, {
|
|
475
|
+
environmentId: test.id,
|
|
476
|
+
environmentKind: "test",
|
|
477
|
+
projectId: project.id,
|
|
478
|
+
projectSlug: project.slug,
|
|
479
|
+
}, context.contextFile).catch(() => undefined);
|
|
480
|
+
}
|
|
481
|
+
emit(context.writer, { ...project, connection }, [
|
|
317
482
|
`Created project ${project.id} (${project.slug}).`,
|
|
318
483
|
...table([
|
|
319
484
|
["ENVIRONMENT", "KIND", "DEFAULT NOTIFIER"],
|
|
@@ -323,11 +488,30 @@ const commands = {
|
|
|
323
488
|
environment.default_notifier.id,
|
|
324
489
|
]),
|
|
325
490
|
]),
|
|
491
|
+
...(connection
|
|
492
|
+
? [
|
|
493
|
+
"",
|
|
494
|
+
`Connected and routed ${connection.id} in test.`,
|
|
495
|
+
"Invite somebody with: wb subscriber create <your-id-for-them>",
|
|
496
|
+
]
|
|
497
|
+
: failure
|
|
498
|
+
? [
|
|
499
|
+
"",
|
|
500
|
+
`No connection was made: ${failure}`,
|
|
501
|
+
"Try again with: wb connection create",
|
|
502
|
+
]
|
|
503
|
+
: []),
|
|
504
|
+
...(context.parsed.switches.has("no-connection")
|
|
505
|
+
? [
|
|
506
|
+
"",
|
|
507
|
+
"No connection was made, as asked. Add one with: wb connection create",
|
|
508
|
+
]
|
|
509
|
+
: []),
|
|
326
510
|
]);
|
|
327
511
|
},
|
|
328
512
|
async "credential create"(context) {
|
|
329
513
|
const api = await client(context);
|
|
330
|
-
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
|
|
514
|
+
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
|
|
331
515
|
const label = required(context.parsed, "label", "what this credential is for");
|
|
332
516
|
// The contract types the scope list as a bounded tuple, so a plain
|
|
333
517
|
// string[] cannot be passed. The values are validated by the API either
|
|
@@ -350,7 +534,7 @@ const commands = {
|
|
|
350
534
|
},
|
|
351
535
|
async "connection list"(context) {
|
|
352
536
|
const api = await client(context);
|
|
353
|
-
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
|
|
537
|
+
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
|
|
354
538
|
const connections = await api.listChannelConnections(projectId, environmentId);
|
|
355
539
|
emit(context.writer, connections, table([
|
|
356
540
|
["ID", "MODE", "STATUS", "NAME"],
|
|
@@ -364,7 +548,7 @@ const commands = {
|
|
|
364
548
|
},
|
|
365
549
|
async "connection providers"(context) {
|
|
366
550
|
const api = await client(context);
|
|
367
|
-
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
|
|
551
|
+
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
|
|
368
552
|
const providers = await api.listConnectionProviders(projectId, environmentId);
|
|
369
553
|
emit(context.writer, providers, table([
|
|
370
554
|
["PROVIDER", "SHARED IDENTITY", "DISPLAY NAME"],
|
|
@@ -380,14 +564,14 @@ const commands = {
|
|
|
380
564
|
// asked of the network. A mistyped mode should not cost a round trip, and
|
|
381
565
|
// should not be reported as whatever the *next* argument got wrong.
|
|
382
566
|
const mode = connectionMode(context.parsed);
|
|
383
|
-
const displayName =
|
|
567
|
+
const displayName = context.parsed.options.get("name");
|
|
568
|
+
const api = await client(context);
|
|
569
|
+
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
|
|
384
570
|
const sharedIdentity = mode === "whooshbang_shared"
|
|
385
|
-
?
|
|
571
|
+
? await sharedIdentityFor(api, projectId, environmentId, context.parsed)
|
|
386
572
|
: undefined;
|
|
387
|
-
const api = await client(context);
|
|
388
|
-
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
|
|
389
573
|
let request = {
|
|
390
|
-
display_name: displayName,
|
|
574
|
+
display_name: displayName ?? defaultConnectionName(mode),
|
|
391
575
|
mode,
|
|
392
576
|
};
|
|
393
577
|
if (sharedIdentity !== undefined) {
|
|
@@ -409,8 +593,20 @@ const commands = {
|
|
|
409
593
|
request["suggested_username"] = username;
|
|
410
594
|
}
|
|
411
595
|
const connection = await api.createChannelConnection(projectId, environmentId, request, idempotency(context.parsed));
|
|
596
|
+
// Creating a connection is somebody saying they intend to send through it.
|
|
597
|
+
// Leaving it unattached means the next send goes nowhere and says nothing
|
|
598
|
+
// about why, which is the failure this default exists to remove.
|
|
599
|
+
const routed = !context.parsed.switches.has("no-route");
|
|
600
|
+
if (routed) {
|
|
601
|
+
await routeConnection(api, projectId, environmentId, connection.id);
|
|
602
|
+
}
|
|
412
603
|
emit(context.writer, connection, [
|
|
413
604
|
`Created connection ${connection.id} (${connection.status}).`,
|
|
605
|
+
...(routed
|
|
606
|
+
? ["Routed as this environment's default destination."]
|
|
607
|
+
: [
|
|
608
|
+
"Not routed — attach it with `wb connection route` before sending.",
|
|
609
|
+
]),
|
|
414
610
|
...(connection.setup?.handoff_url
|
|
415
611
|
? [`Finish setup in Telegram: ${connection.setup.handoff_url}`]
|
|
416
612
|
: []),
|
|
@@ -418,7 +614,7 @@ const commands = {
|
|
|
418
614
|
},
|
|
419
615
|
async "connection route"(context) {
|
|
420
616
|
const api = await client(context);
|
|
421
|
-
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
|
|
617
|
+
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
|
|
422
618
|
const named = context.parsed.options.get("notifier");
|
|
423
619
|
const routes = await api.attachNotifierConnection(projectId, environmentId, {
|
|
424
620
|
connection_id: required(context.parsed, "connection", "the connection to route through"),
|
|
@@ -439,23 +635,145 @@ const commands = {
|
|
|
439
635
|
]),
|
|
440
636
|
]));
|
|
441
637
|
},
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
638
|
+
/**
|
|
639
|
+
* The guided path, in the shape of `npm init`.
|
|
640
|
+
*
|
|
641
|
+
* Every question is also an argument, so supplying them all asks nothing and
|
|
642
|
+
* the command works unchanged in a script. That rule is the whole design:
|
|
643
|
+
* without it a guided path becomes a second product with its own behaviour,
|
|
644
|
+
* and the two drift until one of them is wrong.
|
|
645
|
+
*
|
|
646
|
+
* It composes the ordinary commands rather than reimplementing them, so
|
|
647
|
+
* there is one definition of what creating a project means and `init` cannot
|
|
648
|
+
* quietly disagree with `project create`.
|
|
649
|
+
*/
|
|
650
|
+
async init(context) {
|
|
651
|
+
const w = context.writer;
|
|
652
|
+
const name = await ask(context, "Project name", "name", "My App");
|
|
653
|
+
const slug = context.parsed.options.get("slug");
|
|
654
|
+
await commands["project create"]?.({
|
|
655
|
+
...context,
|
|
656
|
+
parsed: {
|
|
657
|
+
...context.parsed,
|
|
658
|
+
options: new Map([
|
|
659
|
+
...context.parsed.options,
|
|
660
|
+
...(slug ? [["slug", slug]] : []),
|
|
661
|
+
]),
|
|
662
|
+
// `project create` reads its name positionally, and this is the one
|
|
663
|
+
// place a caller's answer has to be handed over as one.
|
|
664
|
+
words: ["project", "create", name],
|
|
665
|
+
},
|
|
666
|
+
});
|
|
667
|
+
const subscriber = context.parsed.options.get("subscriber");
|
|
668
|
+
const inviting = subscriber !== undefined ||
|
|
669
|
+
(await confirmed(context, "invite", "Invite somebody now?"));
|
|
670
|
+
if (!inviting) {
|
|
671
|
+
emit(w, null, [
|
|
672
|
+
"",
|
|
673
|
+
"Invite somebody later with: wb subscriber create <id>",
|
|
674
|
+
]);
|
|
675
|
+
return;
|
|
676
|
+
}
|
|
677
|
+
const who = await ask(context, "Your own identifier for them", "subscriber", "me");
|
|
678
|
+
await commands["subscriber create"]?.({
|
|
679
|
+
...context,
|
|
680
|
+
parsed: {
|
|
681
|
+
...context.parsed,
|
|
682
|
+
options: new Map([...context.parsed.options, ["subscriber", who]]),
|
|
683
|
+
words: ["subscriber", "create", who],
|
|
684
|
+
},
|
|
685
|
+
});
|
|
686
|
+
const text = context.parsed.options.get("text");
|
|
687
|
+
const sending = text !== undefined ||
|
|
688
|
+
(await confirmed(context, "send", "Send them something once they accept?"));
|
|
689
|
+
if (!sending) {
|
|
690
|
+
emit(w, null, ["", `Send later with: wb send ${who} "Hello"`]);
|
|
691
|
+
return;
|
|
692
|
+
}
|
|
693
|
+
const body = await ask(context, "What to say", "text", "Hello from WhooshBang.");
|
|
694
|
+
const asking = context.parsed.switches.has("ask");
|
|
695
|
+
emit(w, null, [
|
|
696
|
+
"",
|
|
697
|
+
asking
|
|
698
|
+
? "They must accept the invitation before a question can reach them."
|
|
699
|
+
: "They must accept the invitation before this can reach them.",
|
|
700
|
+
]);
|
|
701
|
+
await commands[asking ? "message ask" : "message send"]?.({
|
|
702
|
+
...context,
|
|
703
|
+
parsed: {
|
|
704
|
+
...context.parsed,
|
|
705
|
+
options: new Map([
|
|
706
|
+
...context.parsed.options,
|
|
707
|
+
["subscriber", who],
|
|
708
|
+
["text", body],
|
|
709
|
+
]),
|
|
710
|
+
words: ["message", asking ? "ask" : "send"],
|
|
711
|
+
},
|
|
712
|
+
});
|
|
713
|
+
},
|
|
714
|
+
/**
|
|
715
|
+
* Invites somebody, under the name the caller already uses for them.
|
|
716
|
+
*
|
|
717
|
+
* `subscriber` rather than `link` because the link is the mechanism and the
|
|
718
|
+
* subscriber is the point — and because on channels where a permissioned bot
|
|
719
|
+
* can address a directory directly, creating one will not involve a link at
|
|
720
|
+
* all.
|
|
721
|
+
*/
|
|
722
|
+
async "subscriber create"(context) {
|
|
723
|
+
const { api, environmentId, flat, projectId } = await messageScope(context);
|
|
724
|
+
const subscriberId = context.parsed.words[2] ??
|
|
725
|
+
context.parsed.options.get("subscriber") ??
|
|
726
|
+
(await ask(context, "Your own identifier for this subscriber", "subscriber"));
|
|
445
727
|
const connectionId = context.parsed.options.get("connection");
|
|
446
|
-
const
|
|
728
|
+
const request = {
|
|
447
729
|
channels: ["telegram"],
|
|
448
730
|
...(connectionId === undefined ? {} : { connection_id: connectionId }),
|
|
449
|
-
subscriber_id:
|
|
450
|
-
}
|
|
731
|
+
subscriber_id: subscriberId,
|
|
732
|
+
};
|
|
733
|
+
const link = flat
|
|
734
|
+
? await api.createSubscriptionLink(request, idempotency(context.parsed))
|
|
735
|
+
: await api.createSubscriptionLinkInEnvironment(projectId, environmentId, request, idempotency(context.parsed));
|
|
451
736
|
emit(context.writer, link, [
|
|
452
|
-
`
|
|
453
|
-
// A link carries no authorization URL once it has been used, and an
|
|
454
|
-
// idempotent replay returns the used one. Printing "undefined" there
|
|
455
|
-
// would read as a defect rather than as the link having done its job.
|
|
737
|
+
`Subscriber ${subscriberId} invited (${link.status}).`,
|
|
456
738
|
...(link.authorization_url
|
|
457
|
-
? ["
|
|
458
|
-
: [
|
|
739
|
+
? ["Open this where they are:", link.authorization_url]
|
|
740
|
+
: [
|
|
741
|
+
"This invitation has already been accepted; issue another to invite again.",
|
|
742
|
+
]),
|
|
743
|
+
]);
|
|
744
|
+
},
|
|
745
|
+
async use(context) {
|
|
746
|
+
const api = await client(context);
|
|
747
|
+
const selector = context.parsed.words[1];
|
|
748
|
+
if (!selector)
|
|
749
|
+
throw new UsageError("wb use <project> [test|live]");
|
|
750
|
+
const kind = context.parsed.words[2];
|
|
751
|
+
const parsed = {
|
|
752
|
+
...context.parsed,
|
|
753
|
+
options: new Map([
|
|
754
|
+
...context.parsed.options,
|
|
755
|
+
["project", selector],
|
|
756
|
+
...(kind ? [["environment", kind]] : []),
|
|
757
|
+
]),
|
|
758
|
+
};
|
|
759
|
+
const resolved = await resolveEnvironment(api, parsed, resolveOptions(context));
|
|
760
|
+
emit(context.writer, resolved, [
|
|
761
|
+
`Now using ${resolved.projectId} / ${resolved.environmentId}.`,
|
|
762
|
+
]);
|
|
763
|
+
},
|
|
764
|
+
async where(context) {
|
|
765
|
+
const remembered = await loadContext(context.origin, context.contextFile);
|
|
766
|
+
if (!remembered) {
|
|
767
|
+
emit(context.writer, null, [
|
|
768
|
+
`Nothing used against ${context.origin} yet.`,
|
|
769
|
+
"Name a project once with --project, or pick one with: wb use <project>",
|
|
770
|
+
]);
|
|
771
|
+
return;
|
|
772
|
+
}
|
|
773
|
+
emit(context.writer, remembered, [
|
|
774
|
+
context.origin,
|
|
775
|
+
` project ${remembered.projectSlug ?? remembered.projectId}`,
|
|
776
|
+
` environment ${remembered.environmentKind ?? remembered.environmentId}`,
|
|
459
777
|
]);
|
|
460
778
|
},
|
|
461
779
|
async "message send"(context) {
|
|
@@ -560,6 +878,11 @@ const commands = {
|
|
|
560
878
|
]);
|
|
561
879
|
},
|
|
562
880
|
};
|
|
881
|
+
// `send` and `ask` are the everyday spellings of the two message commands.
|
|
882
|
+
// Defined after the table so they can delegate to entries in it rather than
|
|
883
|
+
// duplicate them — one implementation, two ways to reach it.
|
|
884
|
+
commands["send"] = (context) => commands["message send"](positional(context, ["subscriber", "text"]));
|
|
885
|
+
commands["ask"] = (context) => commands["message ask"](positional(context, ["subscriber", "text"]));
|
|
563
886
|
/**
|
|
564
887
|
* Words left over once the command itself is accounted for.
|
|
565
888
|
*
|
|
@@ -569,13 +892,19 @@ const commands = {
|
|
|
569
892
|
*/
|
|
570
893
|
export function strayWords(words) {
|
|
571
894
|
const two = words.slice(0, 2).join(" ");
|
|
572
|
-
const
|
|
895
|
+
const one = words[0] ?? "";
|
|
896
|
+
const consumed = commands[two] ? 2 : commands[one] ? 1 : 0;
|
|
573
897
|
if (consumed === 0)
|
|
574
898
|
return [];
|
|
575
899
|
// `project create <name>` and `message get <id>` each take one positional.
|
|
576
900
|
const takesPositional = two === "project create" ||
|
|
577
901
|
two === "message get" ||
|
|
578
|
-
two === "interaction get"
|
|
902
|
+
two === "interaction get" ||
|
|
903
|
+
two === "subscriber create";
|
|
904
|
+
// `use`, `send` and `ask` read every remaining word as a value rather than
|
|
905
|
+
// as a mistake, so nothing after them can be a stray.
|
|
906
|
+
if (one === "use" || one === "send" || one === "ask")
|
|
907
|
+
return [];
|
|
579
908
|
return words.slice(consumed + (takesPositional ? 1 : 0));
|
|
580
909
|
}
|
|
581
910
|
export function resolveCommand(words) {
|
package/dist/cli/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/config.d.ts
CHANGED
|
@@ -43,3 +43,31 @@ export declare function writeCredentials(credentials: StoredCredentials, file?:
|
|
|
43
43
|
export declare function storeSession(origin: string, session: StoredSession, file?: string): Promise<void>;
|
|
44
44
|
export declare function forgetSession(origin: string, file?: string): Promise<StoredSession | null>;
|
|
45
45
|
export declare function loadSession(origin: string, file?: string): Promise<StoredSession | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Where the last project and environment used against a deployment are kept.
|
|
48
|
+
*
|
|
49
|
+
* A separate file from the credentials, for two reasons. Signing out should
|
|
50
|
+
* forget the token and not where somebody was working — they will sign back in
|
|
51
|
+
* and expect to be where they left off. And a file that holds a bearer
|
|
52
|
+
* credential should hold as little else as possible, so that "delete this and
|
|
53
|
+
* nothing is leaked" stays a true and simple statement.
|
|
54
|
+
*
|
|
55
|
+
* Keyed by origin like the credentials are, because a project id from staging
|
|
56
|
+
* means nothing on production and silently sending there would be the worst
|
|
57
|
+
* possible convenience.
|
|
58
|
+
*/
|
|
59
|
+
export interface StoredContext {
|
|
60
|
+
readonly projectId: string;
|
|
61
|
+
readonly environmentId: string;
|
|
62
|
+
/** Carried so `wb where` can answer without a request. */
|
|
63
|
+
readonly projectSlug?: string;
|
|
64
|
+
readonly environmentKind?: string;
|
|
65
|
+
}
|
|
66
|
+
export interface StoredContexts {
|
|
67
|
+
readonly version: 1;
|
|
68
|
+
readonly origins: Record<string, StoredContext>;
|
|
69
|
+
}
|
|
70
|
+
export declare function contextPath(environment?: NodeJS.ProcessEnv): string;
|
|
71
|
+
export declare function readContexts(file?: string): Promise<StoredContexts>;
|
|
72
|
+
export declare function loadContext(origin: string, file?: string): Promise<StoredContext | null>;
|
|
73
|
+
export declare function storeContext(origin: string, context: StoredContext, file?: string): Promise<void>;
|
package/dist/cli/config.js
CHANGED
|
@@ -82,4 +82,42 @@ export async function loadSession(origin, file = credentialsPath()) {
|
|
|
82
82
|
const current = await readCredentials(file);
|
|
83
83
|
return current.origins[origin] ?? null;
|
|
84
84
|
}
|
|
85
|
+
const NO_CONTEXT = { origins: {}, version: 1 };
|
|
86
|
+
export function contextPath(environment = process.env) {
|
|
87
|
+
return path.join(credentialsDirectory(environment), "context.json");
|
|
88
|
+
}
|
|
89
|
+
export async function readContexts(file = contextPath()) {
|
|
90
|
+
try {
|
|
91
|
+
const parsed = JSON.parse(await readFile(file, "utf8"));
|
|
92
|
+
if (typeof parsed !== "object" ||
|
|
93
|
+
parsed === null ||
|
|
94
|
+
parsed.version !== 1 ||
|
|
95
|
+
typeof parsed.origins !== "object" ||
|
|
96
|
+
parsed.origins === null) {
|
|
97
|
+
return NO_CONTEXT;
|
|
98
|
+
}
|
|
99
|
+
return parsed;
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Nothing remembered yet is the ordinary first state, and a damaged file
|
|
103
|
+
// should cost somebody an argument rather than an explanation.
|
|
104
|
+
return NO_CONTEXT;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export async function loadContext(origin, file = contextPath()) {
|
|
108
|
+
return (await readContexts(file)).origins[origin] ?? null;
|
|
109
|
+
}
|
|
110
|
+
export async function storeContext(origin, context, file = contextPath()) {
|
|
111
|
+
const current = await readContexts(file);
|
|
112
|
+
const existing = current.origins[origin];
|
|
113
|
+
// Rewriting an unchanged file on every command would touch the disk for
|
|
114
|
+
// nothing and make its timestamp meaningless as a record of when somebody
|
|
115
|
+
// last switched.
|
|
116
|
+
if (existing?.projectId === context.projectId &&
|
|
117
|
+
existing.environmentId === context.environmentId) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
await mkdir(path.dirname(file), { mode: 0o700, recursive: true });
|
|
121
|
+
await writeFile(file, `${JSON.stringify({ origins: { ...current.origins, [origin]: context }, version: 1 }, null, 2)}\n`, { mode: 0o600 });
|
|
122
|
+
}
|
|
85
123
|
//# sourceMappingURL=config.js.map
|
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export declare function run(argv: readonly string[], overrides?: {
|
|
2
2
|
readonly credentialsFile?: string;
|
|
3
|
+
readonly contextFile?: string;
|
|
3
4
|
readonly openUrl?: (url: string) => Promise<void>;
|
|
5
|
+
/** Supplied by tests; a real run reads the terminal, or refuses. */
|
|
6
|
+
readonly prompt?: (question: string, fallback?: string) => Promise<string>;
|
|
4
7
|
}): Promise<number>;
|
package/dist/cli/main.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { createInterface } from "node:readline/promises";
|
|
2
3
|
import { WhooshBangProblemError } from "../errors.js";
|
|
3
4
|
import { parseArguments, UsageError } from "./arguments.js";
|
|
4
5
|
import { COMMAND_NAMES, resolveCommand, strayWords } from "./commands.js";
|
|
@@ -7,20 +8,31 @@ import { NotSignedInError, resolveOrigin } from "./session.js";
|
|
|
7
8
|
import { OAuthError } from "./oauth.js";
|
|
8
9
|
const USAGE = `wb — the WhooshBang command line
|
|
9
10
|
|
|
11
|
+
The short path — three commands from nothing to a message on a phone:
|
|
12
|
+
|
|
13
|
+
wb project create "My App" project, connection and route
|
|
14
|
+
wb subscriber create me prints an invitation to open on a phone
|
|
15
|
+
wb send me "Hello" …or: wb ask me "Deploy build 41?" --wait
|
|
16
|
+
|
|
17
|
+
wb init the same three, asked one at a time
|
|
18
|
+
|
|
19
|
+
Session:
|
|
10
20
|
wb login [--scope <scope>]… sign in through your browser
|
|
11
21
|
wb logout end this session and forget the token
|
|
12
22
|
wb whoami show the signed-in account
|
|
23
|
+
wb where the project and environment in use
|
|
24
|
+
wb use <project> [test|live] point at a different one
|
|
13
25
|
|
|
14
|
-
wb project create <name> [--slug]
|
|
26
|
+
wb project create <name> [--slug] [--no-connection]
|
|
15
27
|
wb project list
|
|
16
28
|
|
|
17
29
|
wb credential create --project <project> --environment <env> --label <text> [--scope <scope>]…
|
|
18
30
|
wb connection providers --project <project> --environment <env>
|
|
19
|
-
wb connection create --
|
|
20
|
-
[--
|
|
31
|
+
wb connection create [--mode <mode>] [--name <text>] [--shared-identity <id>]
|
|
32
|
+
[--credential-stdin] [--username <name>] [--no-route]
|
|
21
33
|
wb connection list --project <project> --environment <env>
|
|
22
34
|
wb connection route --project <project> --environment <env> --connection <id> [--notifier <id>]
|
|
23
|
-
wb
|
|
35
|
+
wb subscriber create <id> [--connection <id>]
|
|
24
36
|
wb message send --project <project> --environment <env> --subscriber <id> --text <text>
|
|
25
37
|
[--target connection|simulator]
|
|
26
38
|
wb message get <id> --project <project> --environment <env>
|
|
@@ -34,7 +46,12 @@ const USAGE = `wb — the WhooshBang command line
|
|
|
34
46
|
wb interaction get <id> --project <project> --environment <env> [--wait [seconds]]
|
|
35
47
|
|
|
36
48
|
A project is named by its id or its slug; an environment by its id or by
|
|
37
|
-
test or live — whichever the output in front of you shows.
|
|
49
|
+
test or live — whichever the output in front of you shows. Both are
|
|
50
|
+
remembered per deployment after the first use, so --project and --environment
|
|
51
|
+
are overrides rather than things to retype.
|
|
52
|
+
|
|
53
|
+
Short forms: -p project, -e environment (--env), -s subscriber, -t text.
|
|
54
|
+
Every one has the long form above, and errors always name the long one.
|
|
38
55
|
|
|
39
56
|
Global:
|
|
40
57
|
--api-url <origin> which deployment to talk to (default https://api.whooshbang.com,
|
|
@@ -43,6 +60,31 @@ Global:
|
|
|
43
60
|
--key <value> the idempotency key for a side-effecting command
|
|
44
61
|
--help, --version
|
|
45
62
|
`;
|
|
63
|
+
/**
|
|
64
|
+
* Asks a question, when there is somebody at a keyboard to answer it.
|
|
65
|
+
*
|
|
66
|
+
* Returned as `undefined` with no terminal attached, so the commands refuse in
|
|
67
|
+
* the words the argument would have used rather than blocking forever on a
|
|
68
|
+
* prompt that nothing will ever read. A cron job should be told which flag it
|
|
69
|
+
* forgot; it should not hang.
|
|
70
|
+
*/
|
|
71
|
+
function terminalPrompt() {
|
|
72
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY)
|
|
73
|
+
return undefined;
|
|
74
|
+
return async (question, fallback) => {
|
|
75
|
+
const rl = createInterface({
|
|
76
|
+
input: process.stdin,
|
|
77
|
+
output: process.stdout,
|
|
78
|
+
});
|
|
79
|
+
try {
|
|
80
|
+
const suffix = fallback === undefined ? "" : ` (${fallback})`;
|
|
81
|
+
return await rl.question(`${question}${suffix}: `);
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
rl.close();
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
46
88
|
/**
|
|
47
89
|
* Opens the sign-in page.
|
|
48
90
|
*
|
|
@@ -111,10 +153,15 @@ export async function run(argv, overrides = {}) {
|
|
|
111
153
|
// A command either completes or throws. There is one way to fail, and
|
|
112
154
|
// the exit code is decided here from the kind of failure rather than by
|
|
113
155
|
// each command inventing its own.
|
|
156
|
+
const prompt = overrides.prompt ?? terminalPrompt();
|
|
114
157
|
await command({
|
|
115
158
|
...(overrides.credentialsFile === undefined
|
|
116
159
|
? {}
|
|
117
160
|
: { credentialsFile: overrides.credentialsFile }),
|
|
161
|
+
...(overrides.contextFile === undefined
|
|
162
|
+
? {}
|
|
163
|
+
: { contextFile: overrides.contextFile }),
|
|
164
|
+
...(prompt === undefined ? {} : { prompt }),
|
|
118
165
|
openUrl: overrides.openUrl ??
|
|
119
166
|
((url) => {
|
|
120
167
|
openBrowser(url, (line) => writer.err(line));
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/selectors.d.ts
CHANGED
|
@@ -17,9 +17,26 @@ export interface ResolvedEnvironment {
|
|
|
17
17
|
readonly projectId: string;
|
|
18
18
|
readonly environmentId: string;
|
|
19
19
|
}
|
|
20
|
-
export
|
|
20
|
+
export interface ResolveOptions {
|
|
21
|
+
/** Where these ids belong. Remembering is skipped when absent. */
|
|
22
|
+
readonly origin?: string;
|
|
23
|
+
readonly contextFile?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Turning arguments plus what was last used into the ids the API wants.
|
|
27
|
+
*
|
|
28
|
+
* `--project` is required only when nothing has been used yet. Once a project
|
|
29
|
+
* has been resolved against a deployment it is remembered for that deployment,
|
|
30
|
+
* so the argument that never varied between commands stops being typed. It
|
|
31
|
+
* still overrides when given, and it is still the only thing consulted the
|
|
32
|
+
* first time.
|
|
33
|
+
*
|
|
34
|
+
* The environment falls back to `test`, which is where somebody trying the
|
|
35
|
+
* product belongs and the only default under which a mistake is harmless.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveEnvironment(client: WhooshBangClient, parsed: ParsedArguments, options?: ResolveOptions): Promise<ResolvedEnvironment>;
|
|
21
38
|
/**
|
|
22
|
-
* The environment's default notifier, which only `
|
|
39
|
+
* The environment's default notifier, which only `connection route` needs.
|
|
23
40
|
*
|
|
24
41
|
* Kept apart from `resolveEnvironment` so that everything which does not need
|
|
25
42
|
* it does not pay for the read that finds it.
|
package/dist/cli/selectors.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { required, UsageError } from "./arguments.js";
|
|
2
|
+
import { loadContext, storeContext } from "./config.js";
|
|
2
3
|
const ENVIRONMENT_KINDS = new Set(["test", "live"]);
|
|
3
4
|
function looksLikeProjectId(value) {
|
|
4
5
|
return value.startsWith("project_");
|
|
@@ -6,9 +7,33 @@ function looksLikeProjectId(value) {
|
|
|
6
7
|
function looksLikeEnvironmentId(value) {
|
|
7
8
|
return value.startsWith("environment_");
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Turning arguments plus what was last used into the ids the API wants.
|
|
12
|
+
*
|
|
13
|
+
* `--project` is required only when nothing has been used yet. Once a project
|
|
14
|
+
* has been resolved against a deployment it is remembered for that deployment,
|
|
15
|
+
* so the argument that never varied between commands stops being typed. It
|
|
16
|
+
* still overrides when given, and it is still the only thing consulted the
|
|
17
|
+
* first time.
|
|
18
|
+
*
|
|
19
|
+
* The environment falls back to `test`, which is where somebody trying the
|
|
20
|
+
* product belongs and the only default under which a mistake is harmless.
|
|
21
|
+
*/
|
|
22
|
+
export async function resolveEnvironment(client, parsed, options = {}) {
|
|
23
|
+
const remembered = options.origin
|
|
24
|
+
? await loadContext(options.origin, options.contextFile)
|
|
25
|
+
: null;
|
|
26
|
+
const projectSelector = parsed.options.get("project") ??
|
|
27
|
+
remembered?.projectId ??
|
|
28
|
+
required(parsed, "project", remembered
|
|
29
|
+
? "the project id or slug"
|
|
30
|
+
: "the project id or slug — nothing has been used against this deployment yet");
|
|
31
|
+
const environmentSelector = parsed.options.get("environment") ??
|
|
32
|
+
// Only inherited alongside its project: an environment id from one project
|
|
33
|
+
// names nothing in another, and `test` is the safe answer when they differ.
|
|
34
|
+
(parsed.options.has("project")
|
|
35
|
+
? "test"
|
|
36
|
+
: (remembered?.environmentId ?? "test"));
|
|
12
37
|
// The fast path: two ids and nothing to look up. This used to read the
|
|
13
38
|
// project anyway, purely to check the pair agreed — which cost a request on
|
|
14
39
|
// every command and, worse, put an account-scoped read in front of work that
|
|
@@ -18,10 +43,10 @@ export async function resolveEnvironment(client, parsed) {
|
|
|
18
43
|
// fails at the operation itself, which is where a wrong id belongs.
|
|
19
44
|
if (looksLikeProjectId(projectSelector) &&
|
|
20
45
|
looksLikeEnvironmentId(environmentSelector)) {
|
|
21
|
-
return {
|
|
46
|
+
return remember(options, {
|
|
22
47
|
environmentId: environmentSelector,
|
|
23
48
|
projectId: projectSelector,
|
|
24
|
-
};
|
|
49
|
+
});
|
|
25
50
|
}
|
|
26
51
|
const project = looksLikeProjectId(projectSelector)
|
|
27
52
|
? await client.getProject(projectSelector)
|
|
@@ -37,13 +62,30 @@ export async function resolveEnvironment(client, parsed) {
|
|
|
37
62
|
}
|
|
38
63
|
throw new UsageError(`${project.slug} has no ${environmentSelector} environment.`);
|
|
39
64
|
}
|
|
40
|
-
return {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
65
|
+
return remember(options, { environmentId: environment.id, projectId: project.id }, { environmentKind: environment.kind, projectSlug: project.slug });
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Records what was resolved, and never fails the command for it.
|
|
69
|
+
*
|
|
70
|
+
* A read-only home directory should cost somebody the convenience of not
|
|
71
|
+
* retyping an argument, not the operation they actually asked for.
|
|
72
|
+
*/
|
|
73
|
+
async function remember(options, resolved, labels = {}) {
|
|
74
|
+
if (options.origin) {
|
|
75
|
+
await storeContext(options.origin, {
|
|
76
|
+
...resolved,
|
|
77
|
+
...(labels.environmentKind === undefined
|
|
78
|
+
? {}
|
|
79
|
+
: { environmentKind: labels.environmentKind }),
|
|
80
|
+
...(labels.projectSlug === undefined
|
|
81
|
+
? {}
|
|
82
|
+
: { projectSlug: labels.projectSlug }),
|
|
83
|
+
}, options.contextFile).catch(() => undefined);
|
|
84
|
+
}
|
|
85
|
+
return resolved;
|
|
44
86
|
}
|
|
45
87
|
/**
|
|
46
|
-
* The environment's default notifier, which only `
|
|
88
|
+
* The environment's default notifier, which only `connection route` needs.
|
|
47
89
|
*
|
|
48
90
|
* Kept apart from `resolveEnvironment` so that everything which does not need
|
|
49
91
|
* it does not pay for the read that finds it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../src/cli/selectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAwB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../src/cli/selectors.ts"],"names":[],"mappings":"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"}
|