@salesforce/b2c-cli 0.3.0 → 0.4.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 +70 -1
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +14 -1
- package/dist/commands/am/clients/create.d.ts +28 -0
- package/dist/commands/am/clients/create.js +158 -0
- package/dist/commands/am/clients/create.js.map +1 -0
- package/dist/commands/am/clients/delete.d.ts +13 -0
- package/dist/commands/am/clients/delete.js +29 -0
- package/dist/commands/am/clients/delete.js.map +1 -0
- package/dist/commands/am/clients/get.d.ts +26 -0
- package/dist/commands/am/clients/get.js +186 -0
- package/dist/commands/am/clients/get.js.map +1 -0
- package/dist/commands/am/clients/list.d.ts +18 -0
- package/dist/commands/am/clients/list.js +139 -0
- package/dist/commands/am/clients/list.js.map +1 -0
- package/dist/commands/am/clients/password.d.ts +16 -0
- package/dist/commands/am/clients/password.js +51 -0
- package/dist/commands/am/clients/password.js.map +1 -0
- package/dist/commands/am/clients/update.d.ts +34 -0
- package/dist/commands/am/clients/update.js +146 -0
- package/dist/commands/am/clients/update.js.map +1 -0
- package/dist/commands/am/orgs/get.d.ts +23 -0
- package/dist/commands/am/orgs/get.js +175 -0
- package/dist/commands/am/orgs/get.js.map +1 -0
- package/dist/commands/am/orgs/list.d.ts +18 -0
- package/dist/commands/am/orgs/list.js +149 -0
- package/dist/commands/am/orgs/list.js.map +1 -0
- package/dist/commands/am/roles/get.d.ts +15 -0
- package/dist/commands/am/roles/get.js +63 -0
- package/dist/commands/am/roles/get.js.map +1 -0
- package/dist/commands/am/roles/grant.d.ts +18 -0
- package/dist/commands/am/roles/grant.js +72 -0
- package/dist/commands/am/roles/grant.js.map +1 -0
- package/dist/commands/am/roles/list.d.ts +22 -0
- package/dist/commands/am/roles/list.js +142 -0
- package/dist/commands/am/roles/list.js.map +1 -0
- package/dist/commands/am/roles/revoke.d.ts +18 -0
- package/dist/commands/am/roles/revoke.js +72 -0
- package/dist/commands/am/roles/revoke.js.map +1 -0
- package/dist/commands/am/users/create.d.ts +17 -0
- package/dist/commands/am/users/create.js +67 -0
- package/dist/commands/am/users/create.js.map +1 -0
- package/dist/commands/am/users/delete.d.ts +16 -0
- package/dist/commands/am/users/delete.js +63 -0
- package/dist/commands/am/users/delete.js.map +1 -0
- package/dist/commands/am/users/get.d.ts +18 -0
- package/dist/commands/am/users/get.js +96 -0
- package/dist/commands/am/users/get.js.map +1 -0
- package/dist/commands/am/users/list.d.ts +21 -0
- package/dist/commands/am/users/list.js +162 -0
- package/dist/commands/am/users/list.js.map +1 -0
- package/dist/commands/am/users/reset.d.ts +13 -0
- package/dist/commands/am/users/reset.js +43 -0
- package/dist/commands/am/users/reset.js.map +1 -0
- package/dist/commands/am/users/update.d.ts +18 -0
- package/dist/commands/am/users/update.js +63 -0
- package/dist/commands/am/users/update.js.map +1 -0
- package/dist/commands/auth/token.js +1 -1
- package/dist/commands/auth/token.js.map +1 -1
- package/dist/commands/code/activate.d.ts +2 -1
- package/dist/commands/code/delete.d.ts +2 -1
- package/dist/commands/code/deploy.d.ts +2 -1
- package/dist/commands/code/watch.d.ts +2 -1
- package/dist/commands/content/export.d.ts +57 -0
- package/dist/commands/content/export.js +217 -0
- package/dist/commands/content/export.js.map +1 -0
- package/dist/commands/content/list.d.ts +56 -0
- package/dist/commands/content/list.js +133 -0
- package/dist/commands/content/list.js.map +1 -0
- package/dist/commands/docs/download.d.ts +2 -1
- package/dist/commands/ecdn/cache/purge.d.ts +2 -1
- package/dist/commands/ecdn/certificates/add.d.ts +2 -1
- package/dist/commands/ecdn/certificates/delete.d.ts +2 -1
- package/dist/commands/ecdn/certificates/list.d.ts +2 -1
- package/dist/commands/ecdn/certificates/update.d.ts +2 -1
- package/dist/commands/ecdn/certificates/validate.d.ts +2 -1
- package/dist/commands/ecdn/cipher-suites/get.d.ts +2 -1
- package/dist/commands/ecdn/cipher-suites/update.d.ts +2 -1
- package/dist/commands/ecdn/logpush/jobs/create.d.ts +2 -1
- package/dist/commands/ecdn/logpush/jobs/delete.d.ts +2 -1
- package/dist/commands/ecdn/logpush/jobs/get.d.ts +2 -1
- package/dist/commands/ecdn/logpush/jobs/list.d.ts +2 -1
- package/dist/commands/ecdn/logpush/jobs/update.d.ts +2 -1
- package/dist/commands/ecdn/logpush/ownership.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/create.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/delete.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/get.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/rules/delete.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/rules/update.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/update.d.ts +2 -1
- package/dist/commands/ecdn/mtls/create.d.ts +2 -1
- package/dist/commands/ecdn/mtls/delete.d.ts +2 -1
- package/dist/commands/ecdn/mtls/get.d.ts +2 -1
- package/dist/commands/ecdn/mtls/list.d.ts +2 -1
- package/dist/commands/ecdn/origin-headers/delete.d.ts +2 -1
- package/dist/commands/ecdn/origin-headers/get.d.ts +2 -1
- package/dist/commands/ecdn/origin-headers/set.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/notifications/create.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/notifications/delete.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/notifications/list.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/policies/create.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/policies/delete.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/policies/get.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/policies/list.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/policies/update.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/scripts/get.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/scripts/list.d.ts +2 -1
- package/dist/commands/ecdn/security/get.d.ts +2 -1
- package/dist/commands/ecdn/security/update.d.ts +2 -1
- package/dist/commands/ecdn/speed/get.d.ts +2 -1
- package/dist/commands/ecdn/speed/update.d.ts +2 -1
- package/dist/commands/ecdn/waf/groups/list.d.ts +2 -1
- package/dist/commands/ecdn/waf/groups/update.d.ts +2 -1
- package/dist/commands/ecdn/waf/managed-rules/list.d.ts +2 -1
- package/dist/commands/ecdn/waf/managed-rules/update.d.ts +2 -1
- package/dist/commands/ecdn/waf/migrate.d.ts +2 -1
- package/dist/commands/ecdn/waf/owasp/get.d.ts +2 -1
- package/dist/commands/ecdn/waf/owasp/update.d.ts +2 -1
- package/dist/commands/ecdn/waf/rules/get.d.ts +2 -1
- package/dist/commands/ecdn/waf/rules/list.d.ts +2 -1
- package/dist/commands/ecdn/waf/rules/update.d.ts +2 -1
- package/dist/commands/ecdn/waf/rulesets/list.d.ts +2 -1
- package/dist/commands/ecdn/waf/rulesets/update.d.ts +2 -1
- package/dist/commands/ecdn/zones/create.d.ts +2 -1
- package/dist/commands/ecdn/zones/list.d.ts +2 -1
- package/dist/commands/job/export.d.ts +2 -1
- package/dist/commands/job/import.d.ts +2 -1
- package/dist/commands/job/run.d.ts +2 -1
- package/dist/commands/job/search.d.ts +2 -1
- package/dist/commands/job/wait.d.ts +2 -1
- package/dist/commands/logs/get.d.ts +2 -1
- package/dist/commands/logs/list.d.ts +2 -1
- package/dist/commands/logs/tail.d.ts +2 -1
- package/dist/commands/mrt/bundle/deploy.js +24 -4
- package/dist/commands/mrt/bundle/deploy.js.map +1 -1
- package/dist/commands/mrt/tail-logs.d.ts +27 -0
- package/dist/commands/mrt/tail-logs.js +137 -0
- package/dist/commands/mrt/tail-logs.js.map +1 -0
- package/dist/commands/{ods → sandbox}/create.d.ts +8 -14
- package/dist/commands/{ods → sandbox}/create.js +112 -102
- package/dist/commands/sandbox/create.js.map +1 -0
- package/dist/commands/sandbox/delete.d.ts +19 -0
- package/dist/commands/sandbox/delete.js +141 -0
- package/dist/commands/sandbox/delete.js.map +1 -0
- package/dist/commands/{ods → sandbox}/get.d.ts +2 -1
- package/dist/commands/{ods → sandbox}/get.js +5 -4
- package/dist/commands/sandbox/get.js.map +1 -0
- package/dist/commands/{ods → sandbox}/info.d.ts +2 -1
- package/dist/commands/{ods → sandbox}/info.js +6 -5
- package/dist/commands/sandbox/info.js.map +1 -0
- package/dist/commands/{ods → sandbox}/list.d.ts +2 -1
- package/dist/commands/{ods → sandbox}/list.js +6 -5
- package/dist/commands/sandbox/list.js.map +1 -0
- package/dist/commands/{ods → sandbox}/restart.d.ts +7 -1
- package/dist/commands/sandbox/restart.js +107 -0
- package/dist/commands/sandbox/restart.js.map +1 -0
- package/dist/commands/{ods → sandbox}/start.d.ts +7 -1
- package/dist/commands/sandbox/start.js +108 -0
- package/dist/commands/sandbox/start.js.map +1 -0
- package/dist/commands/{ods → sandbox}/stop.d.ts +7 -1
- package/dist/commands/sandbox/stop.js +107 -0
- package/dist/commands/sandbox/stop.js.map +1 -0
- package/dist/commands/scaffold/generate.d.ts +22 -0
- package/dist/commands/scaffold/generate.js +74 -0
- package/dist/commands/scaffold/generate.js.map +1 -0
- package/dist/commands/scaffold/index.d.ts +24 -0
- package/dist/commands/scaffold/index.js +80 -0
- package/dist/commands/scaffold/index.js.map +1 -0
- package/dist/commands/scaffold/info.d.ts +24 -0
- package/dist/commands/scaffold/info.js +89 -0
- package/dist/commands/scaffold/info.js.map +1 -0
- package/dist/commands/scaffold/init.d.ts +29 -0
- package/dist/commands/scaffold/init.js +221 -0
- package/dist/commands/scaffold/init.js.map +1 -0
- package/dist/commands/scaffold/list.d.ts +38 -0
- package/dist/commands/scaffold/list.js +131 -0
- package/dist/commands/scaffold/list.js.map +1 -0
- package/dist/commands/scaffold/search.d.ts +32 -0
- package/dist/commands/scaffold/search.js +97 -0
- package/dist/commands/scaffold/search.js.map +1 -0
- package/dist/commands/scaffold/validate.d.ts +24 -0
- package/dist/commands/scaffold/validate.js +74 -0
- package/dist/commands/scaffold/validate.js.map +1 -0
- package/dist/commands/scapi/custom/status.d.ts +2 -1
- package/dist/commands/scapi/schemas/get.d.ts +2 -1
- package/dist/commands/scapi/schemas/list.d.ts +2 -1
- package/dist/commands/setup/index.d.ts +12 -0
- package/dist/commands/setup/index.js +34 -0
- package/dist/commands/setup/index.js.map +1 -0
- package/dist/commands/setup/{config.d.ts → inspect.d.ts} +5 -4
- package/dist/commands/setup/{config.js → inspect.js} +5 -3
- package/dist/commands/setup/inspect.js.map +1 -0
- package/dist/commands/setup/instance/create.d.ts +43 -0
- package/dist/commands/setup/instance/create.js +269 -0
- package/dist/commands/setup/instance/create.js.map +1 -0
- package/dist/commands/setup/instance/index.d.ts +9 -0
- package/dist/commands/setup/instance/index.js +22 -0
- package/dist/commands/setup/instance/index.js.map +1 -0
- package/dist/commands/setup/instance/list.d.ts +31 -0
- package/dist/commands/setup/instance/list.js +68 -0
- package/dist/commands/setup/instance/list.js.map +1 -0
- package/dist/commands/setup/instance/remove.d.ts +34 -0
- package/dist/commands/setup/instance/remove.js +75 -0
- package/dist/commands/setup/instance/remove.js.map +1 -0
- package/dist/commands/setup/instance/set-active.d.ts +33 -0
- package/dist/commands/setup/instance/set-active.js +78 -0
- package/dist/commands/setup/instance/set-active.js.map +1 -0
- package/dist/commands/slas/client/create.d.ts +2 -1
- package/dist/commands/slas/client/create.js +1 -0
- package/dist/commands/slas/client/create.js.map +1 -1
- package/dist/commands/slas/client/delete.d.ts +2 -1
- package/dist/commands/slas/client/get.d.ts +2 -1
- package/dist/commands/slas/client/list.d.ts +2 -1
- package/dist/commands/slas/client/list.js +8 -3
- package/dist/commands/slas/client/list.js.map +1 -1
- package/dist/commands/slas/client/update.d.ts +2 -1
- package/dist/commands/webdav/get.d.ts +2 -1
- package/dist/commands/webdav/rm.d.ts +2 -1
- package/dist/i18n/locales/en.d.ts +42 -0
- package/dist/i18n/locales/en.js +42 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/index.d.ts +42 -0
- package/dist/lib/scaffold/generate-helper.d.ts +47 -0
- package/dist/lib/scaffold/generate-helper.js +271 -0
- package/dist/lib/scaffold/generate-helper.js.map +1 -0
- package/dist/lib/scaffold/source-resolver.d.ts +25 -0
- package/dist/lib/scaffold/source-resolver.js +37 -0
- package/dist/lib/scaffold/source-resolver.js.map +1 -0
- package/dist/utils/am/resolve-org.d.ts +11 -0
- package/dist/utils/am/resolve-org.js +15 -0
- package/dist/utils/am/resolve-org.js.map +1 -0
- package/dist/utils/am/user-display.d.ts +5 -0
- package/dist/utils/am/user-display.js +100 -0
- package/dist/utils/am/user-display.js.map +1 -0
- package/dist/utils/ecdn/zone-command.d.ts +2 -1
- package/dist/utils/mrt-logs/format.d.ts +28 -0
- package/dist/utils/mrt-logs/format.js +90 -0
- package/dist/utils/mrt-logs/format.js.map +1 -0
- package/dist/utils/mrt-logs/index.d.ts +1 -0
- package/dist/utils/mrt-logs/index.js +7 -0
- package/dist/utils/mrt-logs/index.js.map +1 -0
- package/dist/utils/slas/client.d.ts +7 -0
- package/dist/utils/slas/client.js +26 -13
- package/dist/utils/slas/client.js.map +1 -1
- package/oclif.manifest.json +14039 -5107
- package/package.json +61 -19
- package/dist/commands/ods/create.js.map +0 -1
- package/dist/commands/ods/delete.d.ts +0 -15
- package/dist/commands/ods/delete.js +0 -86
- package/dist/commands/ods/delete.js.map +0 -1
- package/dist/commands/ods/get.js.map +0 -1
- package/dist/commands/ods/info.js.map +0 -1
- package/dist/commands/ods/list.js.map +0 -1
- package/dist/commands/ods/restart.js +0 -51
- package/dist/commands/ods/restart.js.map +0 -1
- package/dist/commands/ods/start.js +0 -51
- package/dist/commands/ods/start.js.map +0 -1
- package/dist/commands/ods/stop.js +0 -51
- package/dist/commands/ods/stop.js.map +0 -1
- package/dist/commands/setup/config.js.map +0 -1
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Args, Flags, ux } from '@oclif/core';
|
|
7
|
+
import { input, password, confirm, select } from '@inquirer/prompts';
|
|
8
|
+
import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
9
|
+
import { DwJsonSource, createInstanceFromConfig } from '@salesforce/b2c-tooling-sdk/config';
|
|
10
|
+
import { getActiveCodeVersion } from '@salesforce/b2c-tooling-sdk/operations/code';
|
|
11
|
+
import { withDocs } from '../../../i18n/index.js';
|
|
12
|
+
/**
|
|
13
|
+
* Extract the hostname from a URL or return the input as-is if it's already a hostname.
|
|
14
|
+
*/
|
|
15
|
+
function parseHostname(input) {
|
|
16
|
+
const trimmed = input.trim();
|
|
17
|
+
try {
|
|
18
|
+
const url = new URL(trimmed);
|
|
19
|
+
return url.hostname;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return trimmed;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a new B2C Commerce instance configuration.
|
|
27
|
+
*/
|
|
28
|
+
export default class SetupInstanceCreate extends BaseCommand {
|
|
29
|
+
static args = {
|
|
30
|
+
name: Args.string({
|
|
31
|
+
description: 'Instance name',
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
static description = withDocs('Create a new B2C Commerce instance configuration', '/cli/setup.html#b2c-setup-instance-create');
|
|
35
|
+
static enableJsonFlag = true;
|
|
36
|
+
static examples = [
|
|
37
|
+
'<%= config.bin %> <%= command.id %> staging',
|
|
38
|
+
'<%= config.bin %> <%= command.id %> staging --hostname staging.example.com',
|
|
39
|
+
'<%= config.bin %> <%= command.id %> staging --hostname staging.example.com --active',
|
|
40
|
+
'<%= config.bin %> <%= command.id %> staging --hostname staging.example.com --username admin --force',
|
|
41
|
+
];
|
|
42
|
+
static flags = {
|
|
43
|
+
...BaseCommand.baseFlags,
|
|
44
|
+
hostname: Flags.string({
|
|
45
|
+
char: 's',
|
|
46
|
+
description: 'B2C instance hostname',
|
|
47
|
+
}),
|
|
48
|
+
username: Flags.string({
|
|
49
|
+
description: 'WebDAV username',
|
|
50
|
+
}),
|
|
51
|
+
password: Flags.string({
|
|
52
|
+
description: 'WebDAV password',
|
|
53
|
+
}),
|
|
54
|
+
'client-id': Flags.string({
|
|
55
|
+
description: 'OAuth client ID',
|
|
56
|
+
}),
|
|
57
|
+
'client-secret': Flags.string({
|
|
58
|
+
description: 'OAuth client secret',
|
|
59
|
+
}),
|
|
60
|
+
'code-version': Flags.string({
|
|
61
|
+
description: 'Code version',
|
|
62
|
+
}),
|
|
63
|
+
active: Flags.boolean({
|
|
64
|
+
description: 'Set as active instance',
|
|
65
|
+
default: false,
|
|
66
|
+
}),
|
|
67
|
+
force: Flags.boolean({
|
|
68
|
+
description: 'Non-interactive mode (fail if required flags missing)',
|
|
69
|
+
default: false,
|
|
70
|
+
}),
|
|
71
|
+
};
|
|
72
|
+
async run() {
|
|
73
|
+
const source = new DwJsonSource();
|
|
74
|
+
const force = this.flags.force;
|
|
75
|
+
if (!force) {
|
|
76
|
+
ux.stdout('Create a new B2C Commerce instance configuration.');
|
|
77
|
+
ux.stdout('For more information on configuration, see:');
|
|
78
|
+
ux.stdout(' https://salesforcecommercecloud.github.io/b2c-developer-tooling/guide/configuration.html');
|
|
79
|
+
ux.stdout('');
|
|
80
|
+
}
|
|
81
|
+
// Get or prompt for instance name
|
|
82
|
+
let name = this.args.name;
|
|
83
|
+
if (!name) {
|
|
84
|
+
if (force) {
|
|
85
|
+
this.error('Instance name is required in non-interactive mode. Provide as argument.');
|
|
86
|
+
}
|
|
87
|
+
name = await input({
|
|
88
|
+
message: 'Enter instance name:',
|
|
89
|
+
validate: (v) => (v.trim() ? true : 'Instance name is required'),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// Check if instance already exists
|
|
93
|
+
const existingInstances = source.listInstances({ configPath: this.flags.config });
|
|
94
|
+
if (existingInstances.some((i) => i.name === name)) {
|
|
95
|
+
this.error(`Instance "${name}" already exists. Use a different name.`);
|
|
96
|
+
}
|
|
97
|
+
// Get or prompt for hostname (accepts a URL or plain hostname)
|
|
98
|
+
let hostname = this.flags.hostname;
|
|
99
|
+
if (!hostname) {
|
|
100
|
+
if (force) {
|
|
101
|
+
this.error('Hostname is required in non-interactive mode. Use --hostname flag.');
|
|
102
|
+
}
|
|
103
|
+
hostname = await input({
|
|
104
|
+
message: 'Enter B2C instance hostname or URL:',
|
|
105
|
+
validate: (v) => (v.trim() ? true : 'Hostname is required'),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
hostname = parseHostname(hostname);
|
|
109
|
+
// Build config
|
|
110
|
+
const config = {
|
|
111
|
+
hostname,
|
|
112
|
+
};
|
|
113
|
+
// Handle authentication - in non-interactive mode, use provided flags
|
|
114
|
+
if (force) {
|
|
115
|
+
// Basic auth
|
|
116
|
+
if (this.flags.username) {
|
|
117
|
+
config.username = this.flags.username;
|
|
118
|
+
if (!this.flags.password) {
|
|
119
|
+
this.error('Password is required when username is provided in non-interactive mode.');
|
|
120
|
+
}
|
|
121
|
+
config.password = this.flags.password;
|
|
122
|
+
}
|
|
123
|
+
// OAuth
|
|
124
|
+
if (this.flags['client-id']) {
|
|
125
|
+
config.clientId = this.flags['client-id'];
|
|
126
|
+
if (this.flags['client-secret']) {
|
|
127
|
+
config.clientSecret = this.flags['client-secret'];
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Interactive mode - prompt for auth type and credentials
|
|
133
|
+
const authType = await select({
|
|
134
|
+
message: 'Configure authentication:',
|
|
135
|
+
choices: [
|
|
136
|
+
{ name: 'WebDAV (username/password or access key)', value: 'basic' },
|
|
137
|
+
{ name: 'API Client (OAuth client credentials)', value: 'oauth' },
|
|
138
|
+
{ name: 'Both', value: 'both' },
|
|
139
|
+
{ name: 'Skip for now', value: 'none' },
|
|
140
|
+
],
|
|
141
|
+
});
|
|
142
|
+
// Basic auth
|
|
143
|
+
if (authType === 'basic' || authType === 'both') {
|
|
144
|
+
config.username =
|
|
145
|
+
this.flags.username ||
|
|
146
|
+
(await input({
|
|
147
|
+
message: 'Enter WebDAV username:',
|
|
148
|
+
validate: (v) => (v.trim() ? true : 'Username is required'),
|
|
149
|
+
}));
|
|
150
|
+
const accessKeyUrl = `https://${hostname}/on/demandware.store/Sites-Site/default/ViewAccessKeys-List`;
|
|
151
|
+
config.password =
|
|
152
|
+
this.flags.password ||
|
|
153
|
+
(await password({
|
|
154
|
+
message: `Enter WebDAV password or access key (${accessKeyUrl}):`,
|
|
155
|
+
validate: (v) => (v.trim() ? true : 'Password or access key is required'),
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
// OAuth
|
|
159
|
+
if (authType === 'oauth' || authType === 'both') {
|
|
160
|
+
config.clientId =
|
|
161
|
+
this.flags['client-id'] ||
|
|
162
|
+
(await input({
|
|
163
|
+
message: 'Enter OAuth client ID:',
|
|
164
|
+
validate: (v) => (v.trim() ? true : 'Client ID is required'),
|
|
165
|
+
}));
|
|
166
|
+
const clientSecret = this.flags['client-secret'] ||
|
|
167
|
+
(await password({
|
|
168
|
+
message: 'Enter OAuth client secret (leave blank for user auth):',
|
|
169
|
+
}));
|
|
170
|
+
if (clientSecret.trim()) {
|
|
171
|
+
config.clientSecret = clientSecret.trim();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Code version - use flag, or try to detect via OCAPI if OAuth credentials are available
|
|
176
|
+
if (this.flags['code-version']) {
|
|
177
|
+
config.codeVersion = this.flags['code-version'];
|
|
178
|
+
}
|
|
179
|
+
else if (!force) {
|
|
180
|
+
let detectedVersion;
|
|
181
|
+
if (config.clientId) {
|
|
182
|
+
try {
|
|
183
|
+
const tempInstance = createInstanceFromConfig({
|
|
184
|
+
hostname,
|
|
185
|
+
clientId: config.clientId,
|
|
186
|
+
clientSecret: config.clientSecret,
|
|
187
|
+
});
|
|
188
|
+
const activeVersion = await getActiveCodeVersion(tempInstance);
|
|
189
|
+
detectedVersion = activeVersion?.id;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Detection failed - continue without a default
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const codeVersion = await input({
|
|
196
|
+
message: 'Enter code version:',
|
|
197
|
+
default: detectedVersion,
|
|
198
|
+
});
|
|
199
|
+
if (codeVersion.trim()) {
|
|
200
|
+
config.codeVersion = codeVersion.trim();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// Determine if this should be the active instance
|
|
204
|
+
let setActive = this.flags.active;
|
|
205
|
+
if (!force && !setActive && existingInstances.length > 0) {
|
|
206
|
+
setActive = await confirm({
|
|
207
|
+
message: 'Set as active instance?',
|
|
208
|
+
default: false,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
else if (existingInstances.length === 0) {
|
|
212
|
+
// If this is the first instance, make it active by default
|
|
213
|
+
setActive = true;
|
|
214
|
+
}
|
|
215
|
+
// Show summary and confirm in interactive mode
|
|
216
|
+
if (!force) {
|
|
217
|
+
ux.stdout('');
|
|
218
|
+
ux.stdout('Instance configuration:');
|
|
219
|
+
ux.stdout(` Name: ${name}`);
|
|
220
|
+
ux.stdout(` Hostname: ${hostname}`);
|
|
221
|
+
if (config.codeVersion) {
|
|
222
|
+
ux.stdout(` Code Version: ${config.codeVersion}`);
|
|
223
|
+
}
|
|
224
|
+
if (config.username) {
|
|
225
|
+
ux.stdout(` Auth: Basic (${config.username})`);
|
|
226
|
+
}
|
|
227
|
+
if (config.clientId) {
|
|
228
|
+
ux.stdout(` Auth: OAuth (${config.clientId})`);
|
|
229
|
+
}
|
|
230
|
+
if (setActive) {
|
|
231
|
+
ux.stdout(' Active: Yes');
|
|
232
|
+
}
|
|
233
|
+
ux.stdout('');
|
|
234
|
+
const proceed = await confirm({
|
|
235
|
+
message: 'Create this instance?',
|
|
236
|
+
default: true,
|
|
237
|
+
});
|
|
238
|
+
if (!proceed) {
|
|
239
|
+
ux.stdout('Instance creation cancelled.');
|
|
240
|
+
return {
|
|
241
|
+
name,
|
|
242
|
+
hostname,
|
|
243
|
+
created: false,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// Create the instance
|
|
248
|
+
source.createInstance({
|
|
249
|
+
name,
|
|
250
|
+
config,
|
|
251
|
+
setActive,
|
|
252
|
+
configPath: this.flags.config,
|
|
253
|
+
});
|
|
254
|
+
const result = {
|
|
255
|
+
name,
|
|
256
|
+
hostname,
|
|
257
|
+
created: true,
|
|
258
|
+
active: setActive,
|
|
259
|
+
};
|
|
260
|
+
if (!this.jsonEnabled()) {
|
|
261
|
+
ux.stdout(`Instance "${name}" created successfully.`);
|
|
262
|
+
if (setActive) {
|
|
263
|
+
ux.stdout(`"${name}" is now the active instance.`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return result;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/setup/instance/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
/**
|
|
3
|
+
* Default instance command - shows topic help for instance subcommands.
|
|
4
|
+
*/
|
|
5
|
+
export default class SetupInstanceIndex extends BaseCommand<typeof SetupInstanceIndex> {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
7
|
+
import { withDocs } from '../../../i18n/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Default instance command - shows topic help for instance subcommands.
|
|
10
|
+
*/
|
|
11
|
+
export default class SetupInstanceIndex extends BaseCommand {
|
|
12
|
+
static description = withDocs('Create, list, and manage B2C Commerce instance configurations', '/cli/setup.html#b2c-setup-instance');
|
|
13
|
+
static examples = [
|
|
14
|
+
'<%= config.bin %> setup instance create',
|
|
15
|
+
'<%= config.bin %> setup instance list',
|
|
16
|
+
'<%= config.bin %> setup instance set-active',
|
|
17
|
+
];
|
|
18
|
+
async run() {
|
|
19
|
+
await this.config.runCommand('help', ['setup', 'instance']);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/setup/instance/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,WAAW,EAAC,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,WAAsC;IACpF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAC3B,+DAA+D,EAC/D,oCAAoC,CACrC,CAAC;IAEF,MAAM,CAAC,QAAQ,GAAG;QAChB,yCAAyC;QACzC,uCAAuC;QACvC,6CAA6C;KAC9C,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9D,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
import { type InstanceInfo } from '@salesforce/b2c-tooling-sdk/config';
|
|
3
|
+
/**
|
|
4
|
+
* JSON output structure for the list command.
|
|
5
|
+
*/
|
|
6
|
+
interface InstanceListResponse {
|
|
7
|
+
instances: InstanceInfo[];
|
|
8
|
+
count: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* List all configured B2C Commerce instances.
|
|
12
|
+
*/
|
|
13
|
+
export default class SetupInstanceList extends BaseCommand<typeof SetupInstanceList> {
|
|
14
|
+
static description: string;
|
|
15
|
+
static enableJsonFlag: boolean;
|
|
16
|
+
static examples: string[];
|
|
17
|
+
static flags: {
|
|
18
|
+
'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
20
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
21
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
|
+
instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
|
+
'working-directory': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
25
|
+
'extra-query': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
26
|
+
'extra-body': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
27
|
+
'extra-headers': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
28
|
+
};
|
|
29
|
+
run(): Promise<InstanceListResponse>;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ux } from '@oclif/core';
|
|
7
|
+
import { BaseCommand, createTable } from '@salesforce/b2c-tooling-sdk/cli';
|
|
8
|
+
import { DwJsonSource } from '@salesforce/b2c-tooling-sdk/config';
|
|
9
|
+
import { withDocs } from '../../../i18n/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Table columns for instance listing.
|
|
12
|
+
*/
|
|
13
|
+
const COLUMNS = {
|
|
14
|
+
name: {
|
|
15
|
+
header: 'Name',
|
|
16
|
+
get: (i) => i.name,
|
|
17
|
+
},
|
|
18
|
+
hostname: {
|
|
19
|
+
header: 'Hostname',
|
|
20
|
+
get: (i) => i.hostname || '-',
|
|
21
|
+
},
|
|
22
|
+
source: {
|
|
23
|
+
header: 'Source',
|
|
24
|
+
get: (i) => i.source,
|
|
25
|
+
},
|
|
26
|
+
active: {
|
|
27
|
+
header: 'Active',
|
|
28
|
+
get: (i) => (i.active ? '✓' : ''),
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const DEFAULT_COLUMNS = ['name', 'hostname', 'source', 'active'];
|
|
32
|
+
/**
|
|
33
|
+
* List all configured B2C Commerce instances.
|
|
34
|
+
*/
|
|
35
|
+
export default class SetupInstanceList extends BaseCommand {
|
|
36
|
+
static description = withDocs('List configured B2C Commerce instances', '/cli/setup.html#b2c-setup-instance-list');
|
|
37
|
+
static enableJsonFlag = true;
|
|
38
|
+
static examples = ['<%= config.bin %> <%= command.id %>', '<%= config.bin %> <%= command.id %> --json'];
|
|
39
|
+
static flags = {
|
|
40
|
+
...BaseCommand.baseFlags,
|
|
41
|
+
};
|
|
42
|
+
async run() {
|
|
43
|
+
// Get instances from all sources that support listing
|
|
44
|
+
const source = new DwJsonSource();
|
|
45
|
+
const instances = source.listInstances({
|
|
46
|
+
configPath: this.flags.config,
|
|
47
|
+
});
|
|
48
|
+
const result = {
|
|
49
|
+
instances,
|
|
50
|
+
count: instances.length,
|
|
51
|
+
};
|
|
52
|
+
// In JSON mode, just return the data
|
|
53
|
+
if (this.jsonEnabled()) {
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
// Human-readable table output
|
|
57
|
+
if (instances.length === 0) {
|
|
58
|
+
ux.stdout('No instances configured. Use `b2c setup instance create` to add one.');
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
ux.stdout('');
|
|
62
|
+
ux.stdout('Instances');
|
|
63
|
+
ux.stdout('─'.repeat(60));
|
|
64
|
+
createTable(COLUMNS).render(instances, DEFAULT_COLUMNS);
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/setup/instance/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,EAAE,EAAC,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAC,WAAW,EAAE,WAAW,EAAiB,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAC,YAAY,EAAoB,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,GAA4C;IACvD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;KACnB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,UAAU;QAClB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG;KAC9B;IACD,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;KACrB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAUjE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAqC;IAClF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,wCAAwC,EAAE,yCAAyC,CAAC,CAAC;IAEnH,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG,CAAC,qCAAqC,EAAE,4CAA4C,CAAC,CAAC;IAExG,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,WAAW,CAAC,SAAS;KACzB,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,sDAAsD;QACtD,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC;YACrC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;SAC9B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAyB;YACnC,SAAS;YACT,KAAK,EAAE,SAAS,CAAC,MAAM;SACxB,CAAC;QAEF,qCAAqC;QACrC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,8BAA8B;QAC9B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC;YAClF,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACd,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1B,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAExD,OAAO,MAAM,CAAC;IAChB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
/**
|
|
3
|
+
* JSON output structure for the remove command.
|
|
4
|
+
*/
|
|
5
|
+
interface InstanceRemoveResponse {
|
|
6
|
+
name: string;
|
|
7
|
+
removed: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Remove a B2C Commerce instance configuration.
|
|
11
|
+
*/
|
|
12
|
+
export default class SetupInstanceRemove extends BaseCommand<typeof SetupInstanceRemove> {
|
|
13
|
+
static args: {
|
|
14
|
+
name: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
15
|
+
};
|
|
16
|
+
static description: string;
|
|
17
|
+
static enableJsonFlag: boolean;
|
|
18
|
+
static examples: string[];
|
|
19
|
+
static flags: {
|
|
20
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
21
|
+
'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
23
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
24
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
25
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
26
|
+
instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
27
|
+
'working-directory': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
28
|
+
'extra-query': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
29
|
+
'extra-body': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
30
|
+
'extra-headers': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
31
|
+
};
|
|
32
|
+
run(): Promise<InstanceRemoveResponse>;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Args, Flags, ux } from '@oclif/core';
|
|
7
|
+
import { confirm } from '@inquirer/prompts';
|
|
8
|
+
import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
9
|
+
import { DwJsonSource } from '@salesforce/b2c-tooling-sdk/config';
|
|
10
|
+
import { withDocs } from '../../../i18n/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Remove a B2C Commerce instance configuration.
|
|
13
|
+
*/
|
|
14
|
+
export default class SetupInstanceRemove extends BaseCommand {
|
|
15
|
+
static args = {
|
|
16
|
+
name: Args.string({
|
|
17
|
+
description: 'Instance name to remove',
|
|
18
|
+
required: true,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
static description = withDocs('Remove a B2C Commerce instance configuration', '/cli/setup.html#b2c-setup-instance-remove');
|
|
22
|
+
static enableJsonFlag = true;
|
|
23
|
+
static examples = [
|
|
24
|
+
'<%= config.bin %> <%= command.id %> staging',
|
|
25
|
+
'<%= config.bin %> <%= command.id %> staging --force',
|
|
26
|
+
];
|
|
27
|
+
static flags = {
|
|
28
|
+
...BaseCommand.baseFlags,
|
|
29
|
+
force: Flags.boolean({
|
|
30
|
+
description: 'Skip confirmation prompt',
|
|
31
|
+
default: false,
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
async run() {
|
|
35
|
+
const source = new DwJsonSource();
|
|
36
|
+
const name = this.args.name;
|
|
37
|
+
// Check if instance exists
|
|
38
|
+
const instances = source.listInstances({ configPath: this.flags.config });
|
|
39
|
+
const instance = instances.find((i) => i.name === name);
|
|
40
|
+
if (!instance) {
|
|
41
|
+
const availableNames = instances.map((i) => i.name).join(', ');
|
|
42
|
+
if (availableNames) {
|
|
43
|
+
this.error(`Instance "${name}" not found. Available instances: ${availableNames}`);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.error(`Instance "${name}" not found. No instances are configured.`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Confirm removal
|
|
50
|
+
if (!this.flags.force) {
|
|
51
|
+
const proceed = await confirm({
|
|
52
|
+
message: `Remove instance "${name}"? This cannot be undone.`,
|
|
53
|
+
default: false,
|
|
54
|
+
});
|
|
55
|
+
if (!proceed) {
|
|
56
|
+
ux.stdout('Instance removal cancelled.');
|
|
57
|
+
return {
|
|
58
|
+
name,
|
|
59
|
+
removed: false,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Remove the instance
|
|
64
|
+
source.removeInstance(name, { configPath: this.flags.config });
|
|
65
|
+
const result = {
|
|
66
|
+
name,
|
|
67
|
+
removed: true,
|
|
68
|
+
};
|
|
69
|
+
if (!this.jsonEnabled()) {
|
|
70
|
+
ux.stdout(`Instance "${name}" removed successfully.`);
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/commands/setup/instance/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
/**
|
|
3
|
+
* JSON output structure for the set-active command.
|
|
4
|
+
*/
|
|
5
|
+
interface InstanceSetActiveResponse {
|
|
6
|
+
name: string;
|
|
7
|
+
active: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Set a B2C Commerce instance as the default (active) instance.
|
|
11
|
+
*/
|
|
12
|
+
export default class SetupInstanceSetActive extends BaseCommand<typeof SetupInstanceSetActive> {
|
|
13
|
+
static args: {
|
|
14
|
+
name: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
15
|
+
};
|
|
16
|
+
static description: string;
|
|
17
|
+
static enableJsonFlag: boolean;
|
|
18
|
+
static examples: string[];
|
|
19
|
+
static flags: {
|
|
20
|
+
'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
22
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
23
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
25
|
+
instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
26
|
+
'working-directory': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
27
|
+
'extra-query': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
28
|
+
'extra-body': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
29
|
+
'extra-headers': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
30
|
+
};
|
|
31
|
+
run(): Promise<InstanceSetActiveResponse>;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Args, ux } from '@oclif/core';
|
|
7
|
+
import { search } from '@inquirer/prompts';
|
|
8
|
+
import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
9
|
+
import { DwJsonSource } from '@salesforce/b2c-tooling-sdk/config';
|
|
10
|
+
import { withDocs } from '../../../i18n/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Set a B2C Commerce instance as the default (active) instance.
|
|
13
|
+
*/
|
|
14
|
+
export default class SetupInstanceSetActive extends BaseCommand {
|
|
15
|
+
static args = {
|
|
16
|
+
name: Args.string({
|
|
17
|
+
description: 'Instance name to set as active',
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
static description = withDocs('Set a B2C Commerce instance as the default (active) instance', '/cli/setup.html#b2c-setup-instance-set-active');
|
|
21
|
+
static enableJsonFlag = true;
|
|
22
|
+
static examples = ['<%= config.bin %> <%= command.id %> staging', '<%= config.bin %> <%= command.id %> production'];
|
|
23
|
+
static flags = {
|
|
24
|
+
...BaseCommand.baseFlags,
|
|
25
|
+
};
|
|
26
|
+
async run() {
|
|
27
|
+
const source = new DwJsonSource();
|
|
28
|
+
const instances = source.listInstances({ configPath: this.flags.config });
|
|
29
|
+
let name = this.args.name;
|
|
30
|
+
if (!name) {
|
|
31
|
+
if (instances.length === 0) {
|
|
32
|
+
this.error('No instances are configured. Use `b2c setup instance create` to add one.');
|
|
33
|
+
}
|
|
34
|
+
name = await search({
|
|
35
|
+
message: 'Select instance:',
|
|
36
|
+
source(term) {
|
|
37
|
+
const filtered = term ? instances.filter((i) => i.name.includes(term)) : instances;
|
|
38
|
+
const sorted = [...filtered].sort((a, b) => (a.active === b.active ? 0 : a.active ? -1 : 1));
|
|
39
|
+
return sorted.map((i) => ({
|
|
40
|
+
name: `${i.name}${i.hostname ? ` (${i.hostname})` : ''}${i.active ? ' [active]' : ''}`,
|
|
41
|
+
value: i.name,
|
|
42
|
+
}));
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
const instance = instances.find((i) => i.name === name);
|
|
47
|
+
if (!instance) {
|
|
48
|
+
const availableNames = instances.map((i) => i.name).join(', ');
|
|
49
|
+
if (availableNames) {
|
|
50
|
+
this.error(`Instance "${name}" not found. Available instances: ${availableNames}`);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.error(`Instance "${name}" not found. No instances are configured.`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Check if already active
|
|
57
|
+
if (instance.active) {
|
|
58
|
+
if (!this.jsonEnabled()) {
|
|
59
|
+
ux.stdout(`Instance "${name}" is already the active instance.`);
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
name,
|
|
63
|
+
active: true,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Set as active
|
|
67
|
+
source.setActiveInstance(name, { configPath: this.flags.config });
|
|
68
|
+
const result = {
|
|
69
|
+
name,
|
|
70
|
+
active: true,
|
|
71
|
+
};
|
|
72
|
+
if (!this.jsonEnabled()) {
|
|
73
|
+
ux.stdout(`Instance "${name}" is now the active instance.`);
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=set-active.js.map
|