stepzen 0.44.0 → 0.45.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -71
- package/bin/dev.cmd +1 -1
- package/bin/dev.js +6 -0
- package/bin/{run → run.js} +6 -20
- package/lib/commands/delete.d.ts +3 -3
- package/lib/commands/delete.d.ts.map +1 -1
- package/lib/commands/delete.js +32 -33
- package/lib/commands/delete.js.map +1 -1
- package/lib/commands/deploy.d.ts +10 -12
- package/lib/commands/deploy.d.ts.map +1 -1
- package/lib/commands/deploy.js +98 -98
- package/lib/commands/deploy.js.map +1 -1
- package/lib/commands/import/curl.d.ts +17 -24
- package/lib/commands/import/curl.d.ts.map +1 -1
- package/lib/commands/import/curl.js +85 -85
- package/lib/commands/import/curl.js.map +1 -1
- package/lib/commands/import/db2.d.ts +20 -28
- package/lib/commands/import/db2.d.ts.map +1 -1
- package/lib/commands/import/db2.js +59 -62
- package/lib/commands/import/db2.js.map +1 -1
- package/lib/commands/import/flow.d.ts +10 -71
- package/lib/commands/import/flow.d.ts.map +1 -1
- package/lib/commands/import/flow.js +39 -43
- package/lib/commands/import/flow.js.map +1 -1
- package/lib/commands/import/graphql.d.ts +10 -18
- package/lib/commands/import/graphql.d.ts.map +1 -1
- package/lib/commands/import/graphql.js +38 -42
- package/lib/commands/import/graphql.js.map +1 -1
- package/lib/commands/import/index.d.ts +7 -10
- package/lib/commands/import/index.d.ts.map +1 -1
- package/lib/commands/import/index.js +52 -53
- package/lib/commands/import/index.js.map +1 -1
- package/lib/commands/import/mysql.d.ts +14 -22
- package/lib/commands/import/mysql.d.ts.map +1 -1
- package/lib/commands/import/mysql.js +53 -56
- package/lib/commands/import/mysql.js.map +1 -1
- package/lib/commands/import/openapi.d.ts +9 -16
- package/lib/commands/import/openapi.d.ts.map +1 -1
- package/lib/commands/import/openapi.js +38 -41
- package/lib/commands/import/openapi.js.map +1 -1
- package/lib/commands/import/oracle.d.ts +19 -26
- package/lib/commands/import/oracle.d.ts.map +1 -1
- package/lib/commands/import/oracle.js +56 -59
- package/lib/commands/import/oracle.js.map +1 -1
- package/lib/commands/import/postgresql.d.ts +15 -23
- package/lib/commands/import/postgresql.d.ts.map +1 -1
- package/lib/commands/import/postgresql.js +54 -57
- package/lib/commands/import/postgresql.js.map +1 -1
- package/lib/commands/import/presto.d.ts +14 -22
- package/lib/commands/import/presto.d.ts.map +1 -1
- package/lib/commands/import/presto.js +57 -60
- package/lib/commands/import/presto.js.map +1 -1
- package/lib/commands/import/snowflake.d.ts +16 -24
- package/lib/commands/import/snowflake.d.ts.map +1 -1
- package/lib/commands/import/snowflake.js +61 -64
- package/lib/commands/import/snowflake.js.map +1 -1
- package/lib/commands/init.d.ts +5 -7
- package/lib/commands/init.d.ts.map +1 -1
- package/lib/commands/init.js +22 -22
- package/lib/commands/init.js.map +1 -1
- package/lib/commands/lint.d.ts +2 -4
- package/lib/commands/lint.d.ts.map +1 -1
- package/lib/commands/lint.js +15 -18
- package/lib/commands/lint.js.map +1 -1
- package/lib/commands/list.d.ts +4 -6
- package/lib/commands/list.d.ts.map +1 -1
- package/lib/commands/list.js +66 -63
- package/lib/commands/list.js.map +1 -1
- package/lib/commands/login.d.ts +8 -10
- package/lib/commands/login.d.ts.map +1 -1
- package/lib/commands/login.js +94 -92
- package/lib/commands/login.js.map +1 -1
- package/lib/commands/logout.d.ts +2 -3
- package/lib/commands/logout.d.ts.map +1 -1
- package/lib/commands/logout.js +8 -11
- package/lib/commands/logout.js.map +1 -1
- package/lib/commands/request.d.ts +10 -12
- package/lib/commands/request.d.ts.map +1 -1
- package/lib/commands/request.js +127 -129
- package/lib/commands/request.js.map +1 -1
- package/lib/commands/service.d.ts +9 -11
- package/lib/commands/service.d.ts.map +1 -1
- package/lib/commands/service.js +203 -203
- package/lib/commands/service.js.map +1 -1
- package/lib/commands/start.d.ts +13 -15
- package/lib/commands/start.d.ts.map +1 -1
- package/lib/commands/start.js +61 -60
- package/lib/commands/start.js.map +1 -1
- package/lib/commands/transpile.d.ts +8 -10
- package/lib/commands/transpile.d.ts.map +1 -1
- package/lib/commands/transpile.js +31 -34
- package/lib/commands/transpile.js.map +1 -1
- package/lib/commands/upload.d.ts +6 -8
- package/lib/commands/upload.d.ts.map +1 -1
- package/lib/commands/upload.js +41 -44
- package/lib/commands/upload.js.map +1 -1
- package/lib/commands/validate.d.ts +3 -4
- package/lib/commands/validate.d.ts.map +1 -1
- package/lib/commands/validate.js +23 -26
- package/lib/commands/validate.js.map +1 -1
- package/lib/commands/whoami.d.ts +6 -8
- package/lib/commands/whoami.d.ts.map +1 -1
- package/lib/commands/whoami.js +39 -48
- package/lib/commands/whoami.js.map +1 -1
- package/lib/generate/curl2sdl.d.ts +8 -8
- package/lib/generate/curl2sdl.d.ts.map +1 -1
- package/lib/generate/curl2sdl.js +16 -20
- package/lib/generate/curl2sdl.js.map +1 -1
- package/lib/generate/flags.d.ts +11 -11
- package/lib/generate/flags.d.ts.map +1 -1
- package/lib/generate/flags.js +16 -17
- package/lib/generate/flags.js.map +1 -1
- package/lib/generate/flow2sdl.d.ts +5 -5
- package/lib/generate/flow2sdl.d.ts.map +1 -1
- package/lib/generate/flow2sdl.js +13 -19
- package/lib/generate/flow2sdl.js.map +1 -1
- package/lib/generate/graphql2sdl.d.ts +5 -5
- package/lib/generate/graphql2sdl.d.ts.map +1 -1
- package/lib/generate/graphql2sdl.js +22 -28
- package/lib/generate/graphql2sdl.js.map +1 -1
- package/lib/generate/helpers.d.ts +5 -5
- package/lib/generate/helpers.d.ts.map +1 -1
- package/lib/generate/helpers.js +39 -44
- package/lib/generate/helpers.js.map +1 -1
- package/lib/generate/import-command.d.ts +7 -13
- package/lib/generate/import-command.d.ts.map +1 -1
- package/lib/generate/import-command.js +51 -52
- package/lib/generate/import-command.js.map +1 -1
- package/lib/generate/openapi2sdl.d.ts +4 -4
- package/lib/generate/openapi2sdl.d.ts.map +1 -1
- package/lib/generate/openapi2sdl.js +10 -16
- package/lib/generate/openapi2sdl.js.map +1 -1
- package/lib/generate/questions.d.ts.map +1 -1
- package/lib/generate/questions.js +4 -7
- package/lib/generate/questions.js.map +1 -1
- package/lib/generate/sql2sdl.d.ts +13 -13
- package/lib/generate/sql2sdl.d.ts.map +1 -1
- package/lib/generate/sql2sdl.js +13 -16
- package/lib/generate/sql2sdl.js.map +1 -1
- package/lib/hooks/init/version.d.ts +1 -1
- package/lib/hooks/init/version.d.ts.map +1 -1
- package/lib/hooks/init/version.js +11 -9
- package/lib/hooks/init/version.js.map +1 -1
- package/lib/hooks/prerun/check-upgrade.d.ts +1 -1
- package/lib/hooks/prerun/check-upgrade.d.ts.map +1 -1
- package/lib/hooks/prerun/check-upgrade.js +42 -46
- package/lib/hooks/prerun/check-upgrade.js.map +1 -1
- package/lib/hooks/prerun/ensure-config-file.d.ts +1 -1
- package/lib/hooks/prerun/ensure-config-file.d.ts.map +1 -1
- package/lib/hooks/prerun/ensure-config-file.js +9 -11
- package/lib/hooks/prerun/ensure-config-file.js.map +1 -1
- package/lib/hooks/prerun/ensure-permissions.d.ts +1 -1
- package/lib/hooks/prerun/ensure-permissions.d.ts.map +1 -1
- package/lib/hooks/prerun/ensure-permissions.js +15 -11
- package/lib/hooks/prerun/ensure-permissions.js.map +1 -1
- package/lib/index.js +1 -5
- package/lib/index.js.map +1 -1
- package/lib/shared/actions.d.ts +2 -2
- package/lib/shared/actions.d.ts.map +1 -1
- package/lib/shared/actions.js +15 -21
- package/lib/shared/actions.js.map +1 -1
- package/lib/shared/configuration.d.ts +5 -3
- package/lib/shared/configuration.d.ts.map +1 -1
- package/lib/shared/configuration.js +39 -52
- package/lib/shared/configuration.js.map +1 -1
- package/lib/shared/constants.d.ts +7 -4
- package/lib/shared/constants.d.ts.map +1 -1
- package/lib/shared/constants.js +70 -86
- package/lib/shared/constants.js.map +1 -1
- package/lib/shared/curl-parser.d.ts +2 -2
- package/lib/shared/curl-parser.d.ts.map +1 -1
- package/lib/shared/curl-parser.js +9 -13
- package/lib/shared/curl-parser.js.map +1 -1
- package/lib/shared/docker.d.ts +2 -4
- package/lib/shared/docker.d.ts.map +1 -1
- package/lib/shared/docker.js +40 -48
- package/lib/shared/docker.js.map +1 -1
- package/lib/shared/errors.js +7 -11
- package/lib/shared/errors.js.map +1 -1
- package/lib/shared/header-params-parser.d.ts +2 -4
- package/lib/shared/header-params-parser.d.ts.map +1 -1
- package/lib/shared/header-params-parser.js +23 -29
- package/lib/shared/header-params-parser.js.map +1 -1
- package/lib/shared/header.d.ts +7 -7
- package/lib/shared/header.d.ts.map +1 -1
- package/lib/shared/header.js +5 -10
- package/lib/shared/header.js.map +1 -1
- package/lib/shared/inquirer.d.ts +7 -6
- package/lib/shared/inquirer.d.ts.map +1 -1
- package/lib/shared/inquirer.js +29 -37
- package/lib/shared/inquirer.js.map +1 -1
- package/lib/shared/moniker.js +4 -9
- package/lib/shared/moniker.js.map +1 -1
- package/lib/shared/path-params-parser.d.ts +2 -2
- package/lib/shared/path-params-parser.d.ts.map +1 -1
- package/lib/shared/path-params-parser.js +6 -12
- package/lib/shared/path-params-parser.js.map +1 -1
- package/lib/shared/request-variables-parser.d.ts +4 -4
- package/lib/shared/request-variables-parser.d.ts.map +1 -1
- package/lib/shared/request-variables-parser.js +10 -14
- package/lib/shared/request-variables-parser.js.map +1 -1
- package/lib/shared/rmtemp.d.ts +1 -0
- package/lib/shared/rmtemp.d.ts.map +1 -1
- package/lib/shared/rmtemp.js +7 -10
- package/lib/shared/rmtemp.js.map +1 -1
- package/lib/shared/segment.d.ts +10 -0
- package/lib/shared/segment.d.ts.map +1 -0
- package/lib/shared/segment.js +162 -0
- package/lib/shared/segment.js.map +1 -0
- package/lib/shared/stepzen-sdk.d.ts +8 -8
- package/lib/shared/stepzen-sdk.d.ts.map +1 -1
- package/lib/shared/stepzen-sdk.js +27 -36
- package/lib/shared/stepzen-sdk.js.map +1 -1
- package/lib/shared/types.d.ts +13 -11
- package/lib/shared/types.d.ts.map +1 -1
- package/lib/shared/types.js +1 -2
- package/lib/shared/url-helpers.d.ts.map +1 -1
- package/lib/shared/url-helpers.js +7 -14
- package/lib/shared/url-helpers.js.map +1 -1
- package/lib/shared/utils.d.ts +2 -2
- package/lib/shared/utils.d.ts.map +1 -1
- package/lib/shared/utils.js +55 -71
- package/lib/shared/utils.js.map +1 -1
- package/lib/shared/validation.js +12 -17
- package/lib/shared/validation.js.map +1 -1
- package/lib/shared/workspace.d.ts +1 -1
- package/lib/shared/workspace.d.ts.map +1 -1
- package/lib/shared/workspace.js +34 -45
- package/lib/shared/workspace.js.map +1 -1
- package/lib/shared/zen-command.d.ts +5 -10
- package/lib/shared/zen-command.d.ts.map +1 -1
- package/lib/shared/zen-command.js +132 -113
- package/lib/shared/zen-command.js.map +1 -1
- package/oclif.manifest.json +1281 -945
- package/package.json +35 -33
- package/bin/dev +0 -23
|
@@ -1,11 +1,9 @@
|
|
|
1
|
+
import type { FlagInput, Input, OutputArgs, OutputFlags, ParserOutput } from '@oclif/core/parser';
|
|
2
|
+
import type { LoggedInMachineConfiguration, LoggedOutMachineConfiguration, MachineConfiguration, ServiceInstanceV2, Workspace } from './types.js';
|
|
1
3
|
import { Command } from '@oclif/core';
|
|
2
|
-
import type { ArgOutput, FlagOutput, Input, ParserOutput } from '@oclif/core/lib/interfaces/parser';
|
|
3
|
-
import { LoggedInMachineConfiguration, LoggedOutMachineConfiguration, MachineConfiguration, ServiceInstanceV2, Workspace } from './types';
|
|
4
4
|
export declare abstract class ZenCommand extends Command {
|
|
5
|
-
static flags:
|
|
6
|
-
|
|
7
|
-
'non-interactive': import("@oclif/core/lib/interfaces/parser").BooleanFlag<boolean>;
|
|
8
|
-
};
|
|
5
|
+
static flags: FlagInput;
|
|
6
|
+
static get '--'(): boolean;
|
|
9
7
|
getServiceInstanceIfLocal(configuration?: MachineConfiguration): Promise<ServiceInstanceV2 | undefined>;
|
|
10
8
|
awaitStepZenServiceUpIfLocal(configuration?: MachineConfiguration): Promise<void>;
|
|
11
9
|
awaitIntrospectionServiceUpIfLocal(configuration?: MachineConfiguration): Promise<void>;
|
|
@@ -23,10 +21,7 @@ export declare abstract class ZenCommand extends Command {
|
|
|
23
21
|
promptUserToLogIn(initialConfiguration: LoggedOutMachineConfiguration): Promise<{
|
|
24
22
|
configuration: LoggedInMachineConfiguration;
|
|
25
23
|
}>;
|
|
26
|
-
|
|
27
|
-
protected parse<F extends FlagOutput, B extends FlagOutput, A extends ArgOutput>(options?: Input<F, B, A>, argv?: string[]): Promise<ParserOutput<F, B, A> & {
|
|
28
|
-
argv: string[];
|
|
29
|
-
}>;
|
|
24
|
+
protected parse<F extends OutputFlags<any>, B extends OutputFlags<any>, A extends OutputArgs<any>>(options: Input<F, B, A>, argv?: string[]): Promise<ParserOutput<F, B, A>>;
|
|
30
25
|
}
|
|
31
26
|
export default ZenCommand;
|
|
32
27
|
//# sourceMappingURL=zen-command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zen-command.d.ts","sourceRoot":"","sources":["../../src/shared/zen-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zen-command.d.ts","sourceRoot":"","sources":["../../src/shared/zen-command.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACb,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EACV,4BAA4B,EAC5B,6BAA6B,EAC7B,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACV,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAC,OAAO,EAAQ,MAAM,aAAa,CAAA;AAgB1C,8BAAsB,UAAW,SAAQ,OAAO;IAC9C,MAAM,CAAC,KAAK,EAAE,SAAS,CAetB;IAKD,MAAM,KAAK,IAAI,YAEd;IAEK,yBAAyB,CAC7B,aAAa,CAAC,EAAE,oBAAoB,GACnC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAcnC,4BAA4B,CAAC,aAAa,CAAC,EAAE,oBAAoB;IAoBjE,kCAAkC,CACtC,aAAa,CAAC,EAAE,oBAAoB;IA+BhC,oBAAoB,CACxB,OAAO,GAAE;QACP,cAAc,CAAC,EAAE,OAAO,CAAA;KACpB;;;IAoBF,sBAAsB,CAC1B,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,MAAM,CAAC,EAAE,OAAO,CAAA;KACZ,GACL,OAAO,CAAC,SAAS,CAAC;IA4Cf,iBAAiB,CACrB,oBAAoB,EAAE,6BAA6B,GAClD,OAAO,CAAC;QACT,aAAa,EAAE,4BAA4B,CAAA;KAC5C,CAAC;cAwGc,KAAK,CAEnB,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAC1B,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAC1B,CAAC,SAAS,UAAU,CAAC,GAAG,CAAC,EAGzB,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACvB,IAAI,GAAE,MAAM,EAAc,GACzB,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAsIlC;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -1,26 +1,42 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright IBM Corp. 2020, 2024
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
|
+
import { CLIError } from '@oclif/core/errors';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import inquirer from 'inquirer';
|
|
6
|
+
import process from 'node:process';
|
|
7
|
+
import { readConfiguration, writeCredentialsAndServiceToConfigFile, } from './configuration.js';
|
|
8
|
+
import { ZENCTL2_URL } from './constants.js';
|
|
9
|
+
import { tryZenCtl2ThenZenCtl1 } from './stepzen-sdk.js';
|
|
10
|
+
import { isLocalhost } from './url-helpers.js';
|
|
11
|
+
import { getDirectory, homeRelative, probeEndpoint } from './utils.js';
|
|
12
|
+
import { getWorkspace, initWorkspace } from './workspace.js';
|
|
13
|
+
export class ZenCommand extends Command {
|
|
14
|
+
static flags = {
|
|
15
|
+
help: Flags.help({
|
|
16
|
+
char: 'h',
|
|
17
|
+
description: 'Show CLI help',
|
|
18
|
+
}),
|
|
19
|
+
'non-interactive': Flags.boolean({
|
|
20
|
+
description: 'Disable all interactive prompts',
|
|
21
|
+
async default() {
|
|
22
|
+
if (process.env.STEPZEN_INTERACTIVE !== undefined) {
|
|
23
|
+
return process.env.STEPZEN_INTERACTIVE.toLowerCase() === 'false';
|
|
24
|
+
}
|
|
25
|
+
return !process.stdin.isTTY || !process.stdout.isTTY;
|
|
26
|
+
},
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
29
|
+
// Removed by https://github.com/oclif/core/pull/793, released in @oclif/core
|
|
30
|
+
// v3. Parser.parse() still checks this property and if it's not exactly
|
|
31
|
+
// `false` selects a code path that fails some tests.
|
|
32
|
+
static get '--'() {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
19
35
|
async getServiceInstanceIfLocal(configuration) {
|
|
20
|
-
configuration = configuration || (await
|
|
36
|
+
configuration = configuration || (await readConfiguration());
|
|
21
37
|
if (configuration.serviceInstance &&
|
|
22
38
|
'zenctl2' in configuration.serviceInstance &&
|
|
23
|
-
|
|
39
|
+
isLocalhost(configuration.serviceInstance.zenctl2)) {
|
|
24
40
|
return configuration.serviceInstance;
|
|
25
41
|
}
|
|
26
42
|
// not using a local StepZen service instance => not local
|
|
@@ -34,10 +50,10 @@ class ZenCommand extends core_1.Command {
|
|
|
34
50
|
}
|
|
35
51
|
const zenctl2 = serviceInstance.zenctl2;
|
|
36
52
|
try {
|
|
37
|
-
await
|
|
53
|
+
await probeEndpoint(zenctl2.replace(ZENCTL2_URL, '/healthz'));
|
|
38
54
|
}
|
|
39
|
-
catch
|
|
40
|
-
throw new
|
|
55
|
+
catch {
|
|
56
|
+
throw new CLIError(chalk `Could not connect to the local StepZen service instance you are logged in to.` +
|
|
41
57
|
chalk ` Please make sure the local StepZen service instance is running with` +
|
|
42
58
|
chalk ` {bold stepzen service start}, or log in to the StepZen cloud with` +
|
|
43
59
|
chalk ` {bold stepzen login}.`);
|
|
@@ -52,27 +68,27 @@ class ZenCommand extends core_1.Command {
|
|
|
52
68
|
const promises = [];
|
|
53
69
|
const dbIntrospectionUrl = serviceInstance.dbintrospection;
|
|
54
70
|
if (dbIntrospectionUrl !== undefined) {
|
|
55
|
-
promises.push(
|
|
71
|
+
promises.push(probeEndpoint(dbIntrospectionUrl));
|
|
56
72
|
}
|
|
57
73
|
const introspectionUrl = serviceInstance.introspection;
|
|
58
74
|
if (introspectionUrl !== undefined) {
|
|
59
|
-
promises.push(
|
|
75
|
+
promises.push(probeEndpoint(introspectionUrl));
|
|
60
76
|
}
|
|
61
77
|
try {
|
|
62
78
|
await Promise.all(promises);
|
|
63
79
|
}
|
|
64
|
-
catch
|
|
65
|
-
throw new
|
|
80
|
+
catch {
|
|
81
|
+
throw new CLIError(chalk `Could not connect to the local StepZen introspection service.` +
|
|
66
82
|
chalk ` Please make sure the local StepZen service instance is running with` +
|
|
67
83
|
chalk ` {bold stepzen service start}, or log in to the StepZen cloud with` +
|
|
68
84
|
chalk ` {bold stepzen login}.`);
|
|
69
85
|
}
|
|
70
86
|
}
|
|
71
87
|
async ensureStepZenAccount(options = {}) {
|
|
72
|
-
const configuration = await
|
|
88
|
+
const configuration = await readConfiguration();
|
|
73
89
|
if (!('account' in configuration)) {
|
|
74
90
|
if (options.nonInteractive) {
|
|
75
|
-
throw new
|
|
91
|
+
throw new CLIError(chalk `Could not proceed while not logged in. ` +
|
|
76
92
|
chalk ` Please login to your StepZen account by running {bold stepzen login}.`);
|
|
77
93
|
}
|
|
78
94
|
else {
|
|
@@ -86,30 +102,30 @@ class ZenCommand extends core_1.Command {
|
|
|
86
102
|
}
|
|
87
103
|
async ensureStepZenWorkspace(options = {}) {
|
|
88
104
|
let workspace;
|
|
89
|
-
const directory =
|
|
90
|
-
const maybeWorkspace =
|
|
105
|
+
const directory = getDirectory(options.directory);
|
|
106
|
+
const maybeWorkspace = getWorkspace(directory);
|
|
91
107
|
if (maybeWorkspace) {
|
|
92
108
|
workspace = maybeWorkspace;
|
|
93
109
|
}
|
|
94
110
|
else if (options.nonInteractive) {
|
|
95
|
-
throw new
|
|
111
|
+
throw new CLIError(`Could not find a StepZen workspace in the ${options.directory ? directory : 'current'} directory.` +
|
|
96
112
|
chalk `\n Please run {bold stepzen init${options.directory ? ` ${options.directory}` : ''}} once to create it.`);
|
|
97
113
|
}
|
|
98
114
|
else {
|
|
99
115
|
try {
|
|
100
|
-
workspace = await
|
|
116
|
+
workspace = await initWorkspace({
|
|
101
117
|
directory,
|
|
102
118
|
endpoint: options.endpoint,
|
|
103
119
|
});
|
|
104
120
|
}
|
|
105
121
|
catch (error) {
|
|
106
|
-
throw new
|
|
122
|
+
throw new CLIError(`Could not create a StepZen workspace in the ${options.directory ? directory : 'current'} directory.\n` + error.message);
|
|
107
123
|
}
|
|
108
124
|
}
|
|
109
125
|
// Emphasize that the workspace is not the _current_ directory.
|
|
110
126
|
if (workspace.directory !== process.cwd() && !options.silent) {
|
|
111
127
|
this.log();
|
|
112
|
-
this.log(` ⤴️ Using the StepZen workspace in ${chalk.blue(
|
|
128
|
+
this.log(` ⤴️ Using the StepZen workspace in ${chalk.blue(homeRelative(workspace.directory))}`);
|
|
113
129
|
this.log();
|
|
114
130
|
}
|
|
115
131
|
return workspace;
|
|
@@ -139,9 +155,9 @@ class ZenCommand extends core_1.Command {
|
|
|
139
155
|
message: 'What is your Admin Key?',
|
|
140
156
|
name: 'adminkey',
|
|
141
157
|
type: 'password',
|
|
142
|
-
|
|
158
|
+
async validate(value) {
|
|
143
159
|
try {
|
|
144
|
-
await
|
|
160
|
+
await tryZenCtl2ThenZenCtl1(initialConfiguration, stepzen => stepzen.login(value));
|
|
145
161
|
return true;
|
|
146
162
|
}
|
|
147
163
|
catch (error) {
|
|
@@ -151,14 +167,14 @@ class ZenCommand extends core_1.Command {
|
|
|
151
167
|
suffix: chalk.blue(` (available at ${chalk.bold('https://stepzen.com/account')})`),
|
|
152
168
|
},
|
|
153
169
|
]);
|
|
154
|
-
const { result: credentials, serviceInstance } = await
|
|
155
|
-
configuration = await
|
|
170
|
+
const { result: credentials, serviceInstance } = await tryZenCtl2ThenZenCtl1(initialConfiguration, stepzen => stepzen.login(answers.adminkey));
|
|
171
|
+
configuration = await writeCredentialsAndServiceToConfigFile(credentials, serviceInstance);
|
|
156
172
|
this.log('You have successfully logged in.');
|
|
157
173
|
this.log('');
|
|
158
174
|
}
|
|
159
175
|
else {
|
|
160
|
-
const { result: credentials, serviceInstance } = await
|
|
161
|
-
configuration = await
|
|
176
|
+
const { result: credentials, serviceInstance } = await tryZenCtl2ThenZenCtl1(initialConfiguration, stepzen => stepzen.createAnonymousAccount(initialConfiguration.uuid));
|
|
177
|
+
configuration = await writeCredentialsAndServiceToConfigFile(credentials, serviceInstance);
|
|
162
178
|
this.log(`We've created a temporary public account for you.\nAll endpoints` +
|
|
163
179
|
` deployed to this account will be automatically deleted after 24` +
|
|
164
180
|
` hours. You can log in with your regular StepZen account at any` +
|
|
@@ -167,43 +183,61 @@ class ZenCommand extends core_1.Command {
|
|
|
167
183
|
}
|
|
168
184
|
return { configuration };
|
|
169
185
|
}
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
//
|
|
176
|
-
//
|
|
177
|
-
// '--header-param', '--header', '--var' and others.
|
|
178
|
-
// https://github.com/oclif/oclif/issues/261
|
|
179
|
-
// https://github.com/oclif/core/issues/496
|
|
186
|
+
// Customise the default `parse()` implementation to keep backward
|
|
187
|
+
// compatibility for StepZen CLI users:
|
|
188
|
+
//
|
|
189
|
+
// 1. Repeating single-value flags (last one wins)
|
|
190
|
+
// StepZen CLI allows repeating a single-value flag and have the last
|
|
191
|
+
// occurrence "win". This is how the parser in oclif v1 and v2 worked, and
|
|
192
|
+
// this has changed with oclif v3 (or v4).
|
|
180
193
|
//
|
|
181
|
-
//
|
|
182
|
-
|
|
194
|
+
// Example: stepzen import curl -XGET --request POST
|
|
195
|
+
//
|
|
196
|
+
// Here `-XGET` should be ignored and `--request POST` should be used.
|
|
197
|
+
// Starting from oclif v3 its parser throws a "Flag --${name} can only be
|
|
198
|
+
// specified once" CLIError.
|
|
199
|
+
//
|
|
200
|
+
// 2. Multi-value flags need to be repeated with each value
|
|
201
|
+
// StepZen CLI expects multi-value flags to be repeated with each value,
|
|
202
|
+
// which differs from the oclif defaults where multi-value flags "greedily"
|
|
203
|
+
// consume as many of the following args as they can.
|
|
204
|
+
//
|
|
205
|
+
// Example: stepzen import curl \
|
|
206
|
+
// --header "Authorization: Bearer NNN" \
|
|
207
|
+
// https://example.org/api/users \
|
|
208
|
+
// --header "Content-Type: application/json"
|
|
209
|
+
//
|
|
210
|
+
// Here the default behaviour of oclif parser is to treat the URL as
|
|
211
|
+
// another value for the `--header` flag (even if `multipleNonGreedy: true`
|
|
212
|
+
// is set on the flag definition). StepZen CLI limits the number of args
|
|
213
|
+
// consumed by a multi-value flag to one.
|
|
214
|
+
async parse(options, argv = this.argv) {
|
|
183
215
|
const flags = options.flags || {};
|
|
184
216
|
const args = options.args || {};
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
217
|
+
const orderedArgNames = Object.keys(args);
|
|
218
|
+
// oclif flags can be of two types: "boolean" and "option"
|
|
219
|
+
// - boolean flags are the flags with no values (e.g. --non-interactive)
|
|
220
|
+
// - option flags are the flags with values (e.g. --name=test)
|
|
221
|
+
//
|
|
222
|
+
// Only the flags with values (single or multiple) need a workaround.
|
|
223
|
+
const hasSingleOrMultiValueFlags = Object.keys(flags).some(name => flags[name].type === 'option');
|
|
224
|
+
if (!hasSingleOrMultiValueFlags) {
|
|
225
|
+
// no affected flags => nothing to fix => use the default parse() impl
|
|
189
226
|
return super.parse(options, argv);
|
|
190
227
|
}
|
|
191
|
-
|
|
192
|
-
//
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
|
|
228
|
+
// Make a copy of `flags` with the `multiple` property enabled for the
|
|
229
|
+
// single-value flags.
|
|
230
|
+
const flagsAsMultiple = Object.fromEntries(Object.entries(flags).map(([flagName, flagDef]) => [
|
|
231
|
+
flagName,
|
|
232
|
+
{ ...flagDef, multiple: true, multipleNonGreedy: true },
|
|
196
233
|
]));
|
|
197
234
|
// 1. run the default `parse()` method with modified input
|
|
198
|
-
const parsed =
|
|
235
|
+
const parsed = await super.parse({
|
|
199
236
|
...options,
|
|
200
|
-
flags,
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}, argv));
|
|
205
|
-
const fixFlag = (flag) => {
|
|
206
|
-
const values = parsed.flags[flag];
|
|
237
|
+
flags: flagsAsMultiple,
|
|
238
|
+
}, argv);
|
|
239
|
+
const fixMultiValueFlag = (name) => {
|
|
240
|
+
const values = parsed.flags[name];
|
|
207
241
|
if (values) {
|
|
208
242
|
// Every ['--flag', value] pair in the argv array should match
|
|
209
243
|
// only one value in the flag's value list.
|
|
@@ -216,20 +250,20 @@ class ZenCommand extends core_1.Command {
|
|
|
216
250
|
// https://oclif.io/docs/flags#alternative-flag-inputs
|
|
217
251
|
// $ mycli --file foo
|
|
218
252
|
// $ mycli -f foo
|
|
219
|
-
const spaceDelimMatch = (arg === `--${
|
|
220
|
-
(flags[
|
|
221
|
-
(flags[
|
|
222
|
-
flags[
|
|
253
|
+
const spaceDelimMatch = (arg === `--${name}` ||
|
|
254
|
+
(flags[name].char && arg === `-${flags[name].char}`) ||
|
|
255
|
+
(flags[name].aliases &&
|
|
256
|
+
flags[name].aliases?.some(alias => arg === `--${alias}`))) &&
|
|
223
257
|
idx < argv.length &&
|
|
224
258
|
argv[idx + 1] === value;
|
|
225
259
|
// $ mycli --file=foo
|
|
226
260
|
// $ mycli -f=foo
|
|
227
|
-
const eqlDelimMatch = arg === `--${
|
|
228
|
-
(flags[
|
|
229
|
-
(flags[
|
|
230
|
-
flags[
|
|
261
|
+
const eqlDelimMatch = arg === `--${name}=${value}` ||
|
|
262
|
+
(flags[name].char && arg === `-${flags[name].char}=${value}`) ||
|
|
263
|
+
(flags[name].aliases &&
|
|
264
|
+
flags[name].aliases?.some(alias => arg === `--${alias}=${value}`));
|
|
231
265
|
// $ mycli -ffoo
|
|
232
|
-
const noDelimMatch = flags[
|
|
266
|
+
const noDelimMatch = flags[name].char && arg === `-${flags[name].char}${value}`;
|
|
233
267
|
return ((spaceDelimMatch || eqlDelimMatch || noDelimMatch) &&
|
|
234
268
|
!matchedIndices.has(idx));
|
|
235
269
|
});
|
|
@@ -256,43 +290,28 @@ class ZenCommand extends core_1.Command {
|
|
|
256
290
|
}
|
|
257
291
|
}
|
|
258
292
|
};
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
// Here we run it explicitly (again), but this time with unmodified args
|
|
265
|
-
// definitions to make sure all required args have values.
|
|
266
|
-
//
|
|
267
|
-
// (this code block is copied from @oclif/core/lib/parser/index.js)
|
|
268
|
-
const input = {
|
|
269
|
-
argv,
|
|
270
|
-
context: options.context || this,
|
|
271
|
-
'--': options['--'],
|
|
272
|
-
flags,
|
|
273
|
-
args,
|
|
274
|
-
strict: options.strict !== false,
|
|
293
|
+
const fixSingleValueFlag = (name) => {
|
|
294
|
+
const values = parsed.flags[name];
|
|
295
|
+
if (Array.isArray(values)) {
|
|
296
|
+
parsed.flags[name] = values.at(-1);
|
|
297
|
+
}
|
|
275
298
|
};
|
|
276
|
-
|
|
299
|
+
// 2. massage the default `parse()` output:
|
|
300
|
+
// - in case if a single-value flag is repeated several times, keep the
|
|
301
|
+
// last value and ignore the rest
|
|
302
|
+
// - in case if a multi-value flag make sure it's parsed in a non-greedy
|
|
303
|
+
// way
|
|
304
|
+
for (const name of Object.keys(flags)) {
|
|
305
|
+
if (flags[name].type === 'boolean') {
|
|
306
|
+
continue;
|
|
307
|
+
}
|
|
308
|
+
const fixFlag = flags[name].multiple
|
|
309
|
+
? fixMultiValueFlag
|
|
310
|
+
: fixSingleValueFlag;
|
|
311
|
+
fixFlag(name);
|
|
312
|
+
}
|
|
277
313
|
return parsed;
|
|
278
314
|
}
|
|
279
315
|
}
|
|
280
|
-
|
|
281
|
-
_a = ZenCommand;
|
|
282
|
-
ZenCommand.flags = {
|
|
283
|
-
help: core_1.Flags.help({
|
|
284
|
-
char: 'h',
|
|
285
|
-
description: 'Show CLI help',
|
|
286
|
-
}),
|
|
287
|
-
'non-interactive': core_1.Flags.boolean({
|
|
288
|
-
description: 'Disable all interactive prompts',
|
|
289
|
-
default: async () => {
|
|
290
|
-
if (process.env.STEPZEN_INTERACTIVE !== undefined) {
|
|
291
|
-
return process.env.STEPZEN_INTERACTIVE.toLowerCase() === 'false';
|
|
292
|
-
}
|
|
293
|
-
return !process.stdin.isTTY || !process.stdout.isTTY;
|
|
294
|
-
},
|
|
295
|
-
}),
|
|
296
|
-
};
|
|
297
|
-
exports.default = ZenCommand;
|
|
316
|
+
export default ZenCommand;
|
|
298
317
|
//# sourceMappingURL=zen-command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zen-command.js","sourceRoot":"","sources":["../../src/shared/zen-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zen-command.js","sourceRoot":"","sources":["../../src/shared/zen-command.ts"],"names":[],"mappings":"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"}
|