@xano/cli 0.0.95 → 1.0.1
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 +133 -66
- package/dist/base-command.d.ts +41 -1
- package/dist/base-command.js +92 -3
- package/dist/commands/auth/index.d.ts +1 -0
- package/dist/commands/auth/index.js +16 -11
- package/dist/commands/branch/create/index.d.ts +4 -1
- package/dist/commands/branch/create/index.js +22 -21
- package/dist/commands/branch/delete/index.d.ts +1 -0
- package/dist/commands/branch/delete/index.js +1 -4
- package/dist/commands/branch/edit/index.d.ts +1 -0
- package/dist/commands/branch/edit/index.js +1 -4
- package/dist/commands/branch/get/index.d.ts +1 -0
- package/dist/commands/branch/get/index.js +1 -4
- package/dist/commands/branch/list/index.d.ts +2 -6
- package/dist/commands/branch/list/index.js +13 -17
- package/dist/commands/branch/set_live/index.d.ts +1 -0
- package/dist/commands/branch/set_live/index.js +1 -4
- package/dist/commands/function/create/index.d.ts +1 -0
- package/dist/commands/function/create/index.js +1 -2
- package/dist/commands/function/edit/index.d.ts +1 -0
- package/dist/commands/function/edit/index.js +1 -2
- package/dist/commands/function/get/index.d.ts +1 -0
- package/dist/commands/function/get/index.js +1 -4
- package/dist/commands/function/list/index.d.ts +1 -0
- package/dist/commands/function/list/index.js +1 -4
- package/dist/commands/platform/get/index.d.ts +1 -0
- package/dist/commands/platform/get/index.js +1 -4
- package/dist/commands/platform/list/index.d.ts +1 -0
- package/dist/commands/platform/list/index.js +1 -4
- package/dist/commands/profile/create/index.d.ts +1 -0
- package/dist/commands/profile/create/index.js +12 -6
- package/dist/commands/profile/delete/index.d.ts +1 -0
- package/dist/commands/profile/delete/index.js +8 -4
- package/dist/commands/profile/edit/index.d.ts +1 -0
- package/dist/commands/profile/edit/index.js +3 -6
- package/dist/commands/profile/get/index.d.ts +3 -0
- package/dist/commands/profile/get/index.js +12 -5
- package/dist/commands/profile/list/index.d.ts +1 -0
- package/dist/commands/profile/list/index.js +8 -4
- package/dist/commands/profile/me/index.d.ts +1 -0
- package/dist/commands/profile/me/index.js +22 -6
- package/dist/commands/profile/set/index.d.ts +3 -0
- package/dist/commands/profile/set/index.js +12 -6
- package/dist/commands/profile/token/index.d.ts +3 -0
- package/dist/commands/profile/token/index.js +12 -5
- package/dist/commands/profile/wizard/index.d.ts +1 -0
- package/dist/commands/profile/wizard/index.js +16 -12
- package/dist/commands/profile/workspace/index.d.ts +3 -0
- package/dist/commands/profile/workspace/index.js +12 -5
- package/dist/commands/profile/workspace/set/index.d.ts +1 -0
- package/dist/commands/profile/workspace/set/index.js +2 -4
- package/dist/commands/release/create/index.d.ts +4 -1
- package/dist/commands/release/create/index.js +12 -14
- package/dist/commands/release/delete/index.d.ts +1 -0
- package/dist/commands/release/delete/index.js +1 -4
- package/dist/commands/release/deploy/index.d.ts +20 -0
- package/dist/commands/release/deploy/index.js +137 -0
- package/dist/commands/release/edit/index.d.ts +1 -0
- package/dist/commands/release/edit/index.js +1 -4
- package/dist/commands/release/export/index.d.ts +1 -0
- package/dist/commands/release/export/index.js +1 -3
- package/dist/commands/release/get/index.d.ts +1 -0
- package/dist/commands/release/get/index.js +1 -4
- package/dist/commands/release/import/index.d.ts +1 -0
- package/dist/commands/release/import/index.js +1 -3
- package/dist/commands/release/list/index.d.ts +1 -0
- package/dist/commands/release/list/index.js +1 -4
- package/dist/commands/release/pull/index.d.ts +2 -3
- package/dist/commands/release/pull/index.js +19 -18
- package/dist/commands/release/push/index.d.ts +2 -3
- package/dist/commands/release/push/index.js +19 -22
- package/dist/commands/sandbox/delete/index.d.ts +13 -0
- package/dist/commands/sandbox/delete/index.js +71 -0
- package/dist/commands/sandbox/env/delete/index.d.ts +15 -0
- package/dist/commands/sandbox/env/delete/index.js +89 -0
- package/dist/commands/sandbox/env/get/index.d.ts +13 -0
- package/dist/commands/sandbox/env/get/index.js +65 -0
- package/dist/commands/sandbox/env/get_all/index.d.ts +14 -0
- package/dist/commands/sandbox/env/get_all/index.js +78 -0
- package/dist/commands/sandbox/env/list/index.d.ts +12 -0
- package/dist/commands/sandbox/env/list/index.js +67 -0
- package/dist/commands/sandbox/env/set/index.d.ts +14 -0
- package/dist/commands/sandbox/env/set/index.js +74 -0
- package/dist/commands/sandbox/env/set_all/index.d.ts +14 -0
- package/dist/commands/sandbox/env/set_all/index.js +86 -0
- package/dist/commands/sandbox/get/index.d.ts +12 -0
- package/dist/commands/sandbox/get/index.js +63 -0
- package/dist/commands/sandbox/impersonate/index.d.ts +5 -0
- package/dist/commands/sandbox/impersonate/index.js +5 -0
- package/dist/commands/sandbox/license/get/index.d.ts +14 -0
- package/dist/commands/sandbox/license/get/index.js +78 -0
- package/dist/commands/sandbox/license/set/index.d.ts +15 -0
- package/dist/commands/sandbox/license/set/index.js +95 -0
- package/dist/commands/sandbox/pull/index.d.ts +16 -0
- package/dist/commands/sandbox/pull/index.js +185 -0
- package/dist/commands/sandbox/push/index.d.ts +26 -0
- package/dist/commands/sandbox/push/index.js +196 -0
- package/dist/commands/sandbox/reset/index.d.ts +13 -0
- package/dist/commands/sandbox/reset/index.js +71 -0
- package/dist/commands/sandbox/review/index.d.ts +14 -0
- package/dist/commands/sandbox/review/index.js +94 -0
- package/dist/commands/sandbox/unit_test/list/index.d.ts +14 -0
- package/dist/commands/sandbox/unit_test/list/index.js +91 -0
- package/dist/commands/sandbox/unit_test/run/index.d.ts +15 -0
- package/dist/commands/sandbox/unit_test/run/index.js +79 -0
- package/dist/commands/sandbox/unit_test/run_all/index.d.ts +14 -0
- package/dist/commands/sandbox/unit_test/run_all/index.js +171 -0
- package/dist/commands/sandbox/workflow_test/list/index.d.ts +13 -0
- package/dist/commands/sandbox/workflow_test/list/index.js +84 -0
- package/dist/commands/sandbox/workflow_test/run/index.d.ts +18 -0
- package/dist/commands/sandbox/workflow_test/run/index.js +77 -0
- package/dist/commands/sandbox/workflow_test/run_all/index.d.ts +13 -0
- package/dist/commands/sandbox/workflow_test/run_all/index.js +157 -0
- package/dist/commands/static_host/build/create/index.d.ts +1 -0
- package/dist/commands/static_host/build/create/index.js +1 -3
- package/dist/commands/static_host/build/get/index.d.ts +1 -0
- package/dist/commands/static_host/build/get/index.js +1 -4
- package/dist/commands/static_host/build/list/index.d.ts +1 -0
- package/dist/commands/static_host/build/list/index.js +1 -4
- package/dist/commands/static_host/list/index.d.ts +1 -0
- package/dist/commands/static_host/list/index.js +1 -4
- package/dist/commands/tenant/backup/create/index.d.ts +1 -0
- package/dist/commands/tenant/backup/create/index.js +1 -4
- package/dist/commands/tenant/backup/delete/index.d.ts +1 -0
- package/dist/commands/tenant/backup/delete/index.js +1 -4
- package/dist/commands/tenant/backup/export/index.d.ts +1 -0
- package/dist/commands/tenant/backup/export/index.js +1 -3
- package/dist/commands/tenant/backup/import/index.d.ts +1 -0
- package/dist/commands/tenant/backup/import/index.js +1 -3
- package/dist/commands/tenant/backup/list/index.d.ts +1 -0
- package/dist/commands/tenant/backup/list/index.js +1 -4
- package/dist/commands/tenant/backup/restore/index.d.ts +1 -0
- package/dist/commands/tenant/backup/restore/index.js +1 -4
- package/dist/commands/tenant/cluster/create/index.d.ts +1 -0
- package/dist/commands/tenant/cluster/create/index.js +1 -3
- package/dist/commands/tenant/cluster/delete/index.d.ts +1 -0
- package/dist/commands/tenant/cluster/delete/index.js +1 -4
- package/dist/commands/tenant/cluster/edit/index.d.ts +1 -0
- package/dist/commands/tenant/cluster/edit/index.js +1 -4
- package/dist/commands/tenant/cluster/get/index.d.ts +1 -0
- package/dist/commands/tenant/cluster/get/index.js +1 -4
- package/dist/commands/tenant/cluster/license/get/index.d.ts +1 -0
- package/dist/commands/tenant/cluster/license/get/index.js +1 -3
- package/dist/commands/tenant/cluster/license/set/index.d.ts +1 -0
- package/dist/commands/tenant/cluster/license/set/index.js +1 -3
- package/dist/commands/tenant/cluster/list/index.d.ts +1 -0
- package/dist/commands/tenant/cluster/list/index.js +1 -4
- package/dist/commands/tenant/create/index.d.ts +1 -1
- package/dist/commands/tenant/create/index.js +1 -8
- package/dist/commands/tenant/delete/index.d.ts +1 -0
- package/dist/commands/tenant/delete/index.js +1 -4
- package/dist/commands/tenant/deploy_platform/index.d.ts +1 -0
- package/dist/commands/tenant/deploy_platform/index.js +1 -3
- package/dist/commands/tenant/deploy_release/index.d.ts +1 -0
- package/dist/commands/tenant/deploy_release/index.js +1 -4
- package/dist/commands/tenant/edit/index.d.ts +1 -0
- package/dist/commands/tenant/edit/index.js +1 -4
- package/dist/commands/tenant/env/delete/index.d.ts +1 -0
- package/dist/commands/tenant/env/delete/index.js +1 -4
- package/dist/commands/tenant/env/get/index.d.ts +1 -0
- package/dist/commands/tenant/env/get/index.js +1 -4
- package/dist/commands/tenant/env/get_all/index.d.ts +1 -0
- package/dist/commands/tenant/env/get_all/index.js +1 -3
- package/dist/commands/tenant/env/list/index.d.ts +1 -0
- package/dist/commands/tenant/env/list/index.js +1 -4
- package/dist/commands/tenant/env/set/index.d.ts +1 -0
- package/dist/commands/tenant/env/set/index.js +1 -4
- package/dist/commands/tenant/env/set_all/index.d.ts +1 -0
- package/dist/commands/tenant/env/set_all/index.js +1 -3
- package/dist/commands/tenant/get/index.d.ts +1 -0
- package/dist/commands/tenant/get/index.js +3 -6
- package/dist/commands/tenant/impersonate/index.d.ts +1 -0
- package/dist/commands/tenant/impersonate/index.js +1 -4
- package/dist/commands/tenant/license/get/index.d.ts +1 -0
- package/dist/commands/tenant/license/get/index.js +1 -3
- package/dist/commands/tenant/license/set/index.d.ts +1 -0
- package/dist/commands/tenant/license/set/index.js +1 -3
- package/dist/commands/tenant/list/index.d.ts +1 -0
- package/dist/commands/tenant/list/index.js +3 -6
- package/dist/commands/tenant/pull/index.d.ts +2 -3
- package/dist/commands/tenant/pull/index.js +20 -21
- package/dist/commands/tenant/push/index.d.ts +2 -22
- package/dist/commands/tenant/push/index.js +7 -259
- package/dist/commands/tenant/unit_test/list/index.d.ts +16 -0
- package/dist/commands/tenant/unit_test/list/index.js +115 -0
- package/dist/commands/tenant/unit_test/run/index.d.ts +17 -0
- package/dist/commands/tenant/unit_test/run/index.js +103 -0
- package/dist/commands/tenant/unit_test/run_all/index.d.ts +16 -0
- package/dist/commands/tenant/unit_test/run_all/index.js +190 -0
- package/dist/commands/tenant/workflow_test/list/index.d.ts +15 -0
- package/dist/commands/tenant/workflow_test/list/index.js +108 -0
- package/dist/commands/tenant/workflow_test/run/index.d.ts +20 -0
- package/dist/commands/tenant/workflow_test/run/index.js +101 -0
- package/dist/commands/tenant/workflow_test/run_all/index.d.ts +15 -0
- package/dist/commands/tenant/workflow_test/run_all/index.js +176 -0
- package/dist/commands/unit_test/list/index.d.ts +1 -0
- package/dist/commands/unit_test/list/index.js +1 -4
- package/dist/commands/unit_test/run/index.d.ts +1 -0
- package/dist/commands/unit_test/run/index.js +1 -4
- package/dist/commands/unit_test/run_all/index.d.ts +1 -0
- package/dist/commands/unit_test/run_all/index.js +1 -4
- package/dist/commands/update/index.d.ts +1 -0
- package/dist/commands/workflow_test/delete/index.d.ts +1 -0
- package/dist/commands/workflow_test/delete/index.js +1 -4
- package/dist/commands/workflow_test/get/index.d.ts +1 -0
- package/dist/commands/workflow_test/get/index.js +1 -4
- package/dist/commands/workflow_test/list/index.d.ts +1 -0
- package/dist/commands/workflow_test/list/index.js +1 -4
- package/dist/commands/workflow_test/run/index.d.ts +1 -0
- package/dist/commands/workflow_test/run/index.js +1 -4
- package/dist/commands/workflow_test/run_all/index.d.ts +1 -0
- package/dist/commands/workflow_test/run_all/index.js +1 -4
- package/dist/commands/workspace/create/index.d.ts +1 -0
- package/dist/commands/workspace/create/index.js +1 -4
- package/dist/commands/workspace/delete/index.d.ts +2 -6
- package/dist/commands/workspace/delete/index.js +17 -16
- package/dist/commands/workspace/edit/index.d.ts +3 -6
- package/dist/commands/workspace/edit/index.js +31 -25
- package/dist/commands/workspace/get/index.d.ts +2 -6
- package/dist/commands/workspace/get/index.js +23 -25
- package/dist/commands/workspace/git/pull/index.d.ts +2 -3
- package/dist/commands/workspace/git/pull/index.js +18 -17
- package/dist/commands/workspace/list/index.d.ts +2 -0
- package/dist/commands/workspace/list/index.js +15 -11
- package/dist/commands/workspace/pull/index.d.ts +2 -3
- package/dist/commands/workspace/pull/index.js +21 -24
- package/dist/commands/workspace/push/index.d.ts +7 -16
- package/dist/commands/workspace/push/index.js +85 -674
- package/dist/help.d.ts +2 -1
- package/dist/help.js +39 -1
- package/dist/utils/multidoc-push.d.ts +63 -0
- package/dist/utils/multidoc-push.js +690 -0
- package/dist/utils/reference-checker.d.ts +57 -0
- package/dist/utils/reference-checker.js +232 -0
- package/oclif.manifest.json +5562 -2228
- package/package.json +19 -3
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Args, Flags } from '@oclif/core';
|
|
2
2
|
import * as yaml from 'js-yaml';
|
|
3
3
|
import * as fs from 'node:fs';
|
|
4
|
-
import * as os from 'node:os';
|
|
5
|
-
import * as path from 'node:path';
|
|
6
4
|
import BaseCommand from '../../../base-command.js';
|
|
7
5
|
export default class ReleaseGet extends BaseCommand {
|
|
8
6
|
static args = {
|
|
@@ -102,8 +100,7 @@ Release: v1.0 - ID: 10
|
|
|
102
100
|
}
|
|
103
101
|
}
|
|
104
102
|
loadCredentials() {
|
|
105
|
-
const
|
|
106
|
-
const credentialsPath = path.join(configDir, 'credentials.yaml');
|
|
103
|
+
const credentialsPath = this.getCredentialsPath();
|
|
107
104
|
if (!fs.existsSync(credentialsPath)) {
|
|
108
105
|
this.error(`Credentials file not found at ${credentialsPath}\n` +
|
|
109
106
|
`Create a profile using 'xano profile create'`);
|
|
@@ -7,6 +7,7 @@ export default class ReleaseImport extends BaseCommand {
|
|
|
7
7
|
file: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
8
|
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
workspace: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
11
|
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
12
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
2
|
import * as fs from 'node:fs';
|
|
3
|
-
import * as os from 'node:os';
|
|
4
3
|
import * as path from 'node:path';
|
|
5
4
|
import * as yaml from 'js-yaml';
|
|
6
5
|
import BaseCommand from '../../../base-command.js';
|
|
@@ -93,8 +92,7 @@ Imported release as #15
|
|
|
93
92
|
}
|
|
94
93
|
}
|
|
95
94
|
loadCredentials() {
|
|
96
|
-
const
|
|
97
|
-
const credentialsPath = path.join(configDir, 'credentials.yaml');
|
|
95
|
+
const credentialsPath = this.getCredentialsPath();
|
|
98
96
|
if (!fs.existsSync(credentialsPath)) {
|
|
99
97
|
this.error(`Credentials file not found at ${credentialsPath}\n` +
|
|
100
98
|
`Create a profile using 'xano profile create'`);
|
|
@@ -5,6 +5,7 @@ export default class ReleaseList extends BaseCommand {
|
|
|
5
5
|
static flags: {
|
|
6
6
|
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
7
|
workspace: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
9
|
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
10
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
11
|
};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
2
|
import * as yaml from 'js-yaml';
|
|
3
3
|
import * as fs from 'node:fs';
|
|
4
|
-
import * as os from 'node:os';
|
|
5
|
-
import * as path from 'node:path';
|
|
6
4
|
import BaseCommand from '../../../base-command.js';
|
|
7
5
|
export default class ReleaseList extends BaseCommand {
|
|
8
6
|
static description = 'List all releases in a workspace';
|
|
@@ -102,8 +100,7 @@ Releases in workspace 5:
|
|
|
102
100
|
}
|
|
103
101
|
}
|
|
104
102
|
loadCredentials() {
|
|
105
|
-
const
|
|
106
|
-
const credentialsPath = path.join(configDir, 'credentials.yaml');
|
|
103
|
+
const credentialsPath = this.getCredentialsPath();
|
|
107
104
|
if (!fs.existsSync(credentialsPath)) {
|
|
108
105
|
this.error(`Credentials file not found at ${credentialsPath}\n` + `Create a profile using 'xano profile create'`);
|
|
109
106
|
}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import BaseCommand from '../../../base-command.js';
|
|
2
2
|
export default class ReleasePull extends BaseCommand {
|
|
3
|
-
static args: {
|
|
4
|
-
directory: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
-
};
|
|
6
3
|
static description: string;
|
|
7
4
|
static examples: string[];
|
|
8
5
|
static flags: {
|
|
6
|
+
directory: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
7
|
env: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
8
|
records: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
9
|
release: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
10
|
workspace: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
12
|
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
13
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
14
|
};
|
|
@@ -1,32 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
2
|
import * as yaml from 'js-yaml';
|
|
3
3
|
import * as fs from 'node:fs';
|
|
4
|
-
import * as os from 'node:os';
|
|
5
4
|
import * as path from 'node:path';
|
|
6
5
|
import snakeCase from 'lodash.snakecase';
|
|
7
6
|
import BaseCommand from '../../../base-command.js';
|
|
8
7
|
import { buildApiGroupFolderResolver, parseDocument } from '../../../utils/document-parser.js';
|
|
9
8
|
export default class ReleasePull extends BaseCommand {
|
|
10
|
-
static args = {
|
|
11
|
-
directory: Args.string({
|
|
12
|
-
description: 'Output directory for pulled documents',
|
|
13
|
-
required: true,
|
|
14
|
-
}),
|
|
15
|
-
};
|
|
16
9
|
static description = 'Pull a release multidoc from the Xano Metadata API and split into individual files';
|
|
17
10
|
static examples = [
|
|
18
|
-
`$ xano release pull
|
|
11
|
+
`$ xano release pull -r v1.0
|
|
12
|
+
Pulled 42 documents from release 'v1.0' to current directory
|
|
13
|
+
`,
|
|
14
|
+
`$ xano release pull -d ./my-release -r v1.0
|
|
19
15
|
Pulled 42 documents from release 'v1.0' to ./my-release
|
|
20
16
|
`,
|
|
21
|
-
`$ xano release pull ./output -r v1.0 -w 40
|
|
17
|
+
`$ xano release pull -d ./output -r v1.0 -w 40
|
|
22
18
|
Pulled 15 documents from release 'v1.0' to ./output
|
|
23
19
|
`,
|
|
24
|
-
`$ xano release pull
|
|
25
|
-
Pulled 58 documents from release 'v1.0'
|
|
20
|
+
`$ xano release pull -r v1.0 --profile production --env --records
|
|
21
|
+
Pulled 58 documents from release 'v1.0'
|
|
26
22
|
`,
|
|
27
23
|
];
|
|
28
24
|
static flags = {
|
|
29
25
|
...BaseCommand.baseFlags,
|
|
26
|
+
directory: Flags.string({
|
|
27
|
+
char: 'd',
|
|
28
|
+
default: '.',
|
|
29
|
+
description: 'Output directory for pulled documents (defaults to current directory)',
|
|
30
|
+
required: false,
|
|
31
|
+
}),
|
|
30
32
|
env: Flags.boolean({
|
|
31
33
|
default: false,
|
|
32
34
|
description: 'Include environment variables',
|
|
@@ -49,7 +51,7 @@ Pulled 58 documents from release 'v1.0' to ./backup
|
|
|
49
51
|
}),
|
|
50
52
|
};
|
|
51
53
|
async run() {
|
|
52
|
-
const {
|
|
54
|
+
const { flags } = await this.parse(ReleasePull);
|
|
53
55
|
// Get profile name (default or from flag/env)
|
|
54
56
|
const profileName = flags.profile || this.getDefaultProfile();
|
|
55
57
|
// Load credentials
|
|
@@ -77,7 +79,7 @@ Pulled 58 documents from release 'v1.0' to ./backup
|
|
|
77
79
|
}
|
|
78
80
|
else {
|
|
79
81
|
this.error(`Workspace ID is required. Either:\n` +
|
|
80
|
-
` 1. Provide it as a flag: xano release pull
|
|
82
|
+
` 1. Provide it as a flag: xano release pull -r <release_name> -w <workspace_id>\n` +
|
|
81
83
|
` 2. Set it in your profile using: xano profile:edit ${profileName} -w <workspace_id>`);
|
|
82
84
|
}
|
|
83
85
|
const releaseName = flags.release;
|
|
@@ -133,7 +135,7 @@ Pulled 58 documents from release 'v1.0' to ./backup
|
|
|
133
135
|
return;
|
|
134
136
|
}
|
|
135
137
|
// Resolve the output directory
|
|
136
|
-
const outputDir = path.resolve(
|
|
138
|
+
const outputDir = path.resolve(flags.directory);
|
|
137
139
|
// Create the output directory if it doesn't exist
|
|
138
140
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
139
141
|
// Resolve api_group names to unique folder names, disambiguating collisions
|
|
@@ -239,11 +241,10 @@ Pulled 58 documents from release 'v1.0' to ./backup
|
|
|
239
241
|
fs.writeFileSync(filePath, doc.content, 'utf8');
|
|
240
242
|
writtenCount++;
|
|
241
243
|
}
|
|
242
|
-
this.log(`Pulled ${writtenCount} documents from release '${releaseName}' to ${
|
|
244
|
+
this.log(`Pulled ${writtenCount} documents from release '${releaseName}' to ${flags.directory}`);
|
|
243
245
|
}
|
|
244
246
|
loadCredentials() {
|
|
245
|
-
const
|
|
246
|
-
const credentialsPath = path.join(configDir, 'credentials.yaml');
|
|
247
|
+
const credentialsPath = this.getCredentialsPath();
|
|
247
248
|
// Check if credentials file exists
|
|
248
249
|
if (!fs.existsSync(credentialsPath)) {
|
|
249
250
|
this.error(`Credentials file not found at ${credentialsPath}\n` + `Create a profile using 'xano profile:create'`);
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import BaseCommand from '../../../base-command.js';
|
|
2
2
|
export default class ReleasePush extends BaseCommand {
|
|
3
|
-
static args: {
|
|
4
|
-
directory: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
-
};
|
|
6
3
|
static description: string;
|
|
7
4
|
static examples: string[];
|
|
8
5
|
static flags: {
|
|
9
6
|
description: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
directory: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
8
|
env: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
9
|
hotfix: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
10
|
name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
11
|
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
12
|
records: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
13
|
workspace: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
15
|
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
16
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
17
|
};
|
|
@@ -1,43 +1,41 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
2
|
import * as yaml from 'js-yaml';
|
|
3
3
|
import * as fs from 'node:fs';
|
|
4
|
-
import * as os from 'node:os';
|
|
5
4
|
import * as path from 'node:path';
|
|
6
5
|
import BaseCommand from '../../../base-command.js';
|
|
7
6
|
import { findFilesWithGuid } from '../../../utils/document-parser.js';
|
|
8
7
|
export default class ReleasePush extends BaseCommand {
|
|
9
|
-
static args = {
|
|
10
|
-
directory: Args.string({
|
|
11
|
-
description: 'Directory containing .xs documents to create the release from',
|
|
12
|
-
required: true,
|
|
13
|
-
}),
|
|
14
|
-
};
|
|
15
8
|
static description = 'Create a new release from local XanoScript files via the multidoc endpoint';
|
|
16
9
|
static examples = [
|
|
17
|
-
`$ xano release push
|
|
18
|
-
Created release: v1.0 - ID: 10
|
|
10
|
+
`$ xano release push -n "v1.0"
|
|
11
|
+
Created release: v1.0 - ID: 10 (from current directory)
|
|
19
12
|
`,
|
|
20
|
-
`$ xano release push ./output -n "v2.0" -w 40
|
|
13
|
+
`$ xano release push -d ./output -n "v2.0" -w 40 --description "Major update"
|
|
21
14
|
Created release: v2.0 - ID: 15
|
|
22
15
|
`,
|
|
23
|
-
`$ xano release push ./backup -n "v1.1-hotfix" --hotfix --profile production
|
|
16
|
+
`$ xano release push -d ./backup -n "v1.1-hotfix" --hotfix --profile production
|
|
24
17
|
Created release: v1.1-hotfix - ID: 20
|
|
25
18
|
`,
|
|
26
|
-
`$ xano release push
|
|
19
|
+
`$ xano release push -n "v1.0" --no-records --no-env
|
|
27
20
|
Create release from schema only, skip records and environment variables
|
|
28
21
|
`,
|
|
29
|
-
`$ xano release push
|
|
22
|
+
`$ xano release push -n "v1.0" -o json
|
|
30
23
|
Output release details as JSON
|
|
31
24
|
`,
|
|
32
25
|
];
|
|
33
26
|
static flags = {
|
|
34
27
|
...BaseCommand.baseFlags,
|
|
35
28
|
description: Flags.string({
|
|
36
|
-
char: 'd',
|
|
37
29
|
default: '',
|
|
38
30
|
description: 'Release description',
|
|
39
31
|
required: false,
|
|
40
32
|
}),
|
|
33
|
+
directory: Flags.string({
|
|
34
|
+
char: 'd',
|
|
35
|
+
default: '.',
|
|
36
|
+
description: 'Directory containing .xs documents to create the release from (defaults to current directory)',
|
|
37
|
+
required: false,
|
|
38
|
+
}),
|
|
41
39
|
env: Flags.boolean({
|
|
42
40
|
allowNo: true,
|
|
43
41
|
default: true,
|
|
@@ -74,7 +72,7 @@ Output release details as JSON
|
|
|
74
72
|
}),
|
|
75
73
|
};
|
|
76
74
|
async run() {
|
|
77
|
-
const {
|
|
75
|
+
const { flags } = await this.parse(ReleasePush);
|
|
78
76
|
// Get profile name (default or from flag/env)
|
|
79
77
|
const profileName = flags.profile || this.getDefaultProfile();
|
|
80
78
|
// Load credentials
|
|
@@ -102,11 +100,11 @@ Output release details as JSON
|
|
|
102
100
|
}
|
|
103
101
|
else {
|
|
104
102
|
this.error(`Workspace ID is required. Either:\n` +
|
|
105
|
-
` 1. Provide it as a flag: xano release push
|
|
103
|
+
` 1. Provide it as a flag: xano release push -n <name> -w <workspace_id>\n` +
|
|
106
104
|
` 2. Set it in your profile using: xano profile:edit ${profileName} -w <workspace_id>`);
|
|
107
105
|
}
|
|
108
106
|
// Resolve the input directory
|
|
109
|
-
const inputDir = path.resolve(
|
|
107
|
+
const inputDir = path.resolve(flags.directory);
|
|
110
108
|
if (!fs.existsSync(inputDir)) {
|
|
111
109
|
this.error(`Directory not found: ${inputDir}`);
|
|
112
110
|
}
|
|
@@ -116,7 +114,7 @@ Output release details as JSON
|
|
|
116
114
|
// Collect all .xs files from the directory tree
|
|
117
115
|
const files = this.collectFiles(inputDir);
|
|
118
116
|
if (files.length === 0) {
|
|
119
|
-
this.error(`No .xs files found in ${
|
|
117
|
+
this.error(`No .xs files found in ${flags.directory}`);
|
|
120
118
|
}
|
|
121
119
|
// Read each file and track file path alongside content
|
|
122
120
|
const documentEntries = [];
|
|
@@ -127,7 +125,7 @@ Output release details as JSON
|
|
|
127
125
|
}
|
|
128
126
|
}
|
|
129
127
|
if (documentEntries.length === 0) {
|
|
130
|
-
this.error(`All .xs files in ${
|
|
128
|
+
this.error(`All .xs files in ${flags.directory} are empty`);
|
|
131
129
|
}
|
|
132
130
|
const multidoc = documentEntries.map((d) => d.content).join('\n---\n');
|
|
133
131
|
// Construct the API URL with query params
|
|
@@ -221,8 +219,7 @@ Output release details as JSON
|
|
|
221
219
|
return files.sort();
|
|
222
220
|
}
|
|
223
221
|
loadCredentials() {
|
|
224
|
-
const
|
|
225
|
-
const credentialsPath = path.join(configDir, 'credentials.yaml');
|
|
222
|
+
const credentialsPath = this.getCredentialsPath();
|
|
226
223
|
// Check if credentials file exists
|
|
227
224
|
if (!fs.existsSync(credentialsPath)) {
|
|
228
225
|
this.error(`Credentials file not found at ${credentialsPath}\n` + `Create a profile using 'xano profile:create'`);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import BaseCommand from '../../../base-command.js';
|
|
2
|
+
export default class SandboxDelete extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
private confirm;
|
|
13
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import BaseCommand from '../../../base-command.js';
|
|
3
|
+
export default class SandboxDelete extends BaseCommand {
|
|
4
|
+
static description = 'Delete your sandbox environment completely (debugging only — it will be re-created on next access)';
|
|
5
|
+
static examples = [
|
|
6
|
+
`$ xano sandbox delete
|
|
7
|
+
Are you sure you want to DELETE your sandbox environment? This destroys all data. (y/N) y
|
|
8
|
+
Sandbox environment deleted.
|
|
9
|
+
`,
|
|
10
|
+
`$ xano sandbox delete --force`,
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
...BaseCommand.baseFlags,
|
|
14
|
+
force: Flags.boolean({
|
|
15
|
+
char: 'f',
|
|
16
|
+
default: false,
|
|
17
|
+
description: 'Skip confirmation prompt',
|
|
18
|
+
required: false,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
async run() {
|
|
22
|
+
const { flags } = await this.parse(SandboxDelete);
|
|
23
|
+
const { profile } = this.resolveProfile(flags);
|
|
24
|
+
if (!flags.force) {
|
|
25
|
+
const confirmed = await this.confirm(`Are you sure you want to DELETE your sandbox environment? This destroys all data and the tenant will be re-created on next access.`);
|
|
26
|
+
if (!confirmed) {
|
|
27
|
+
this.log('Delete cancelled.');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const apiUrl = `${profile.instance_origin}/api:meta/sandbox/me`;
|
|
32
|
+
try {
|
|
33
|
+
const response = await this.verboseFetch(apiUrl, {
|
|
34
|
+
headers: {
|
|
35
|
+
accept: 'application/json',
|
|
36
|
+
Authorization: `Bearer ${profile.access_token}`,
|
|
37
|
+
'Content-Type': 'application/json',
|
|
38
|
+
},
|
|
39
|
+
method: 'DELETE',
|
|
40
|
+
}, flags.verbose, profile.access_token);
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
const message = await this.parseApiError(response, 'Failed to delete sandbox environment');
|
|
43
|
+
this.error(message);
|
|
44
|
+
}
|
|
45
|
+
this.log('Sandbox environment deleted.');
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (error instanceof Error && 'oclif' in error)
|
|
49
|
+
throw error;
|
|
50
|
+
if (error instanceof Error) {
|
|
51
|
+
this.error(`Failed to delete sandbox environment: ${error.message}`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.error(`Failed to delete sandbox environment: ${String(error)}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async confirm(message) {
|
|
59
|
+
const readline = await import('node:readline');
|
|
60
|
+
const rl = readline.createInterface({
|
|
61
|
+
input: process.stdin,
|
|
62
|
+
output: process.stdout,
|
|
63
|
+
});
|
|
64
|
+
return new Promise((resolve) => {
|
|
65
|
+
rl.question(`${message} (y/N) `, (answer) => {
|
|
66
|
+
rl.close();
|
|
67
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import BaseCommand from '../../../../base-command.js';
|
|
2
|
+
export default class SandboxEnvDelete extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
private confirm;
|
|
15
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import BaseCommand from '../../../../base-command.js';
|
|
3
|
+
export default class SandboxEnvDelete extends BaseCommand {
|
|
4
|
+
static description = 'Delete an environment variable from a sandbox environment';
|
|
5
|
+
static examples = [
|
|
6
|
+
`$ xano sandbox env delete --name DATABASE_URL
|
|
7
|
+
Are you sure you want to delete environment variable 'DATABASE_URL'? (y/N) y
|
|
8
|
+
Environment variable 'DATABASE_URL' deleted
|
|
9
|
+
`,
|
|
10
|
+
`$ xano sandbox env delete --name DATABASE_URL --force`,
|
|
11
|
+
`$ xano sandbox env delete --name DATABASE_URL -f -o json`,
|
|
12
|
+
];
|
|
13
|
+
static flags = {
|
|
14
|
+
...BaseCommand.baseFlags,
|
|
15
|
+
force: Flags.boolean({
|
|
16
|
+
char: 'f',
|
|
17
|
+
default: false,
|
|
18
|
+
description: 'Skip confirmation prompt',
|
|
19
|
+
required: false,
|
|
20
|
+
}),
|
|
21
|
+
name: Flags.string({
|
|
22
|
+
char: 'n',
|
|
23
|
+
description: 'Environment variable name',
|
|
24
|
+
required: true,
|
|
25
|
+
}),
|
|
26
|
+
output: Flags.string({
|
|
27
|
+
char: 'o',
|
|
28
|
+
default: 'summary',
|
|
29
|
+
description: 'Output format',
|
|
30
|
+
options: ['summary', 'json'],
|
|
31
|
+
required: false,
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
async run() {
|
|
35
|
+
const { flags } = await this.parse(SandboxEnvDelete);
|
|
36
|
+
const { profile } = this.resolveProfile(flags);
|
|
37
|
+
const envName = flags.name;
|
|
38
|
+
if (!flags.force) {
|
|
39
|
+
const confirmed = await this.confirm(`Are you sure you want to delete environment variable '${envName}' from sandbox environment?`);
|
|
40
|
+
if (!confirmed) {
|
|
41
|
+
this.log('Deletion cancelled.');
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const apiUrl = `${profile.instance_origin}/api:meta/sandbox/env/${envName}`;
|
|
46
|
+
try {
|
|
47
|
+
const response = await this.verboseFetch(apiUrl, {
|
|
48
|
+
headers: {
|
|
49
|
+
accept: 'application/json',
|
|
50
|
+
Authorization: `Bearer ${profile.access_token}`,
|
|
51
|
+
},
|
|
52
|
+
method: 'DELETE',
|
|
53
|
+
}, flags.verbose, profile.access_token);
|
|
54
|
+
if (!response.ok) {
|
|
55
|
+
const message = await this.parseApiError(response, 'API request failed');
|
|
56
|
+
this.error(message);
|
|
57
|
+
}
|
|
58
|
+
if (flags.output === 'json') {
|
|
59
|
+
this.log(JSON.stringify({ deleted: true, env_name: envName }, null, 2));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.log(`Environment variable '${envName}' deleted from sandbox environment`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error instanceof Error && 'oclif' in error)
|
|
67
|
+
throw error;
|
|
68
|
+
if (error instanceof Error) {
|
|
69
|
+
this.error(`Failed to delete sandbox environment variable: ${error.message}`);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.error(`Failed to delete sandbox environment variable: ${String(error)}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async confirm(message) {
|
|
77
|
+
const readline = await import('node:readline');
|
|
78
|
+
const rl = readline.createInterface({
|
|
79
|
+
input: process.stdin,
|
|
80
|
+
output: process.stdout,
|
|
81
|
+
});
|
|
82
|
+
return new Promise((resolve) => {
|
|
83
|
+
rl.question(`${message} (y/N) `, (answer) => {
|
|
84
|
+
rl.close();
|
|
85
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import BaseCommand from '../../../../base-command.js';
|
|
2
|
+
export default class SandboxEnvGet extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import BaseCommand from '../../../../base-command.js';
|
|
3
|
+
export default class SandboxEnvGet extends BaseCommand {
|
|
4
|
+
static description = 'Get a single environment variable for a sandbox environment';
|
|
5
|
+
static examples = [
|
|
6
|
+
`$ xano sandbox env get --name DATABASE_URL
|
|
7
|
+
postgres://localhost:5432/mydb
|
|
8
|
+
`,
|
|
9
|
+
`$ xano sandbox env get --name DATABASE_URL -o json`,
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
...BaseCommand.baseFlags,
|
|
13
|
+
name: Flags.string({
|
|
14
|
+
char: 'n',
|
|
15
|
+
description: 'Environment variable name',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
output: Flags.string({
|
|
19
|
+
char: 'o',
|
|
20
|
+
default: 'summary',
|
|
21
|
+
description: 'Output format',
|
|
22
|
+
options: ['summary', 'json'],
|
|
23
|
+
required: false,
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
async run() {
|
|
27
|
+
const { flags } = await this.parse(SandboxEnvGet);
|
|
28
|
+
const { profile } = this.resolveProfile(flags);
|
|
29
|
+
const envName = flags.name;
|
|
30
|
+
const apiUrl = `${profile.instance_origin}/api:meta/sandbox/env/${envName}`;
|
|
31
|
+
try {
|
|
32
|
+
const response = await this.verboseFetch(apiUrl, {
|
|
33
|
+
headers: {
|
|
34
|
+
accept: 'application/json',
|
|
35
|
+
Authorization: `Bearer ${profile.access_token}`,
|
|
36
|
+
},
|
|
37
|
+
method: 'GET',
|
|
38
|
+
}, flags.verbose, profile.access_token);
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
const message = await this.parseApiError(response, 'API request failed');
|
|
41
|
+
this.error(message);
|
|
42
|
+
}
|
|
43
|
+
const envVar = (await response.json());
|
|
44
|
+
if (flags.output === 'json') {
|
|
45
|
+
this.log(JSON.stringify(envVar, null, 2));
|
|
46
|
+
}
|
|
47
|
+
else if (envVar) {
|
|
48
|
+
this.log(envVar.value);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.log(`Environment variable '${envName}' not found for sandbox environment`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (error instanceof Error && 'oclif' in error)
|
|
56
|
+
throw error;
|
|
57
|
+
if (error instanceof Error) {
|
|
58
|
+
this.error(`Failed to get sandbox environment variable: ${error.message}`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.error(`Failed to get sandbox environment variable: ${String(error)}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import BaseCommand from '../../../../base-command.js';
|
|
2
|
+
export default class SandboxEnvGetAll extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
view: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|