@salesforce/b2c-cli 1.3.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/code/deploy.js +19 -1
- package/dist/commands/code/deploy.js.map +1 -1
- package/dist/commands/code/download.d.ts +50 -0
- package/dist/commands/code/download.js +163 -0
- package/dist/commands/code/download.js.map +1 -0
- package/dist/commands/job/import.d.ts +2 -0
- package/dist/commands/job/import.js +27 -6
- package/dist/commands/job/import.js.map +1 -1
- package/dist/commands/mrt/env/var/push.d.ts +46 -0
- package/dist/commands/mrt/env/var/push.js +154 -0
- package/dist/commands/mrt/env/var/push.js.map +1 -0
- package/dist/commands/setup/skills.js +20 -2
- package/dist/commands/setup/skills.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +6 -0
- package/dist/i18n/locales/de.js +6 -0
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +19 -0
- package/dist/i18n/locales/en.js +19 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/index.d.ts +25 -0
- package/dist/utils/mrt/env-var-diff.d.ts +46 -0
- package/dist/utils/mrt/env-var-diff.js +104 -0
- package/dist/utils/mrt/env-var-diff.js.map +1 -0
- package/oclif.manifest.json +3136 -2514
- package/package.json +2 -2
|
@@ -127,7 +127,25 @@ export default class CodeDeploy extends CartridgeCommand {
|
|
|
127
127
|
await this.operations.deleteCartridges(this.instance, cartridges);
|
|
128
128
|
}
|
|
129
129
|
// Upload cartridges
|
|
130
|
-
|
|
130
|
+
const uploadPhaseLabels = {
|
|
131
|
+
archiving: t('commands.code.deploy.archiving', 'Creating cartridge archive'),
|
|
132
|
+
uploading: t('commands.code.deploy.uploading', 'Uploading archive'),
|
|
133
|
+
unzipping: t('commands.code.deploy.unzipping', 'Unzipping on server'),
|
|
134
|
+
cleanup: t('commands.code.deploy.cleanup', 'Cleaning up'),
|
|
135
|
+
};
|
|
136
|
+
await this.operations.uploadCartridges(this.instance, cartridges, {
|
|
137
|
+
onProgress: (info) => {
|
|
138
|
+
if (this.jsonEnabled())
|
|
139
|
+
return;
|
|
140
|
+
const label = uploadPhaseLabels[info.phase];
|
|
141
|
+
if (info.elapsedSeconds === 0) {
|
|
142
|
+
this.log(` ${label}...`);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
this.log(` ${label}... (${info.elapsedSeconds}s elapsed)`);
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
});
|
|
131
149
|
// Optionally activate or reload code version
|
|
132
150
|
let activated = false;
|
|
133
151
|
let reloaded = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/code/deploy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/code/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { downloadCartridges, getActiveCodeVersion, type DownloadResult } from '@salesforce/b2c-tooling-sdk/operations/code';
|
|
2
|
+
import { CartridgeCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
3
|
+
export default class CodeDownload extends CartridgeCommand<typeof CodeDownload> {
|
|
4
|
+
static hiddenAliases: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
cartridgePath: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static description: string;
|
|
9
|
+
static enableJsonFlag: boolean;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
mirror: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
cartridge: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'exclude-cartridge': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
server: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
'webdav-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
'code-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
username: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
password: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
certificate: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
passphrase: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
|
+
selfsigned: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
24
|
+
verify: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
25
|
+
'client-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
26
|
+
'client-secret': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
27
|
+
'auth-scope': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
28
|
+
'short-code': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
29
|
+
'tenant-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
30
|
+
'auth-methods': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
31
|
+
'user-auth': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
32
|
+
'account-manager-host': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
33
|
+
'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
34
|
+
debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
35
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
36
|
+
jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
37
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
38
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
39
|
+
instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
40
|
+
'project-directory': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
41
|
+
'extra-query': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
42
|
+
'extra-body': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
43
|
+
'extra-headers': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
44
|
+
};
|
|
45
|
+
protected operations: {
|
|
46
|
+
downloadCartridges: typeof downloadCartridges;
|
|
47
|
+
getActiveCodeVersion: typeof getActiveCodeVersion;
|
|
48
|
+
};
|
|
49
|
+
run(): Promise<DownloadResult>;
|
|
50
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
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 { Flags } from '@oclif/core';
|
|
7
|
+
import { downloadCartridges, getActiveCodeVersion, } from '@salesforce/b2c-tooling-sdk/operations/code';
|
|
8
|
+
import { CartridgeCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
9
|
+
import { t, withDocs } from '../../i18n/index.js';
|
|
10
|
+
export default class CodeDownload extends CartridgeCommand {
|
|
11
|
+
static hiddenAliases = ['code:download'];
|
|
12
|
+
static args = {
|
|
13
|
+
...CartridgeCommand.baseArgs,
|
|
14
|
+
};
|
|
15
|
+
static description = withDocs(t('commands.code.download.description', 'Download cartridge code from a B2C Commerce instance'), '/cli/code.html#b2c-code-download');
|
|
16
|
+
static enableJsonFlag = true;
|
|
17
|
+
static examples = [
|
|
18
|
+
'<%= config.bin %> <%= command.id %>',
|
|
19
|
+
'<%= config.bin %> <%= command.id %> -o ./downloaded',
|
|
20
|
+
'<%= config.bin %> <%= command.id %> --server my-sandbox.demandware.net --code-version v1',
|
|
21
|
+
'<%= config.bin %> <%= command.id %> --mirror',
|
|
22
|
+
'<%= config.bin %> <%= command.id %> -c app_storefront_base -c plugin_applepay',
|
|
23
|
+
'<%= config.bin %> <%= command.id %> -x test_cartridge',
|
|
24
|
+
];
|
|
25
|
+
static flags = {
|
|
26
|
+
...CartridgeCommand.baseFlags,
|
|
27
|
+
...CartridgeCommand.cartridgeFlags,
|
|
28
|
+
output: Flags.string({
|
|
29
|
+
char: 'o',
|
|
30
|
+
description: 'Output directory for downloaded cartridges',
|
|
31
|
+
default: 'cartridges',
|
|
32
|
+
exclusive: ['mirror'],
|
|
33
|
+
}),
|
|
34
|
+
mirror: Flags.boolean({
|
|
35
|
+
char: 'm',
|
|
36
|
+
description: 'Extract cartridges to their local project locations',
|
|
37
|
+
default: false,
|
|
38
|
+
exclusive: ['output'],
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
operations = {
|
|
42
|
+
downloadCartridges,
|
|
43
|
+
getActiveCodeVersion,
|
|
44
|
+
};
|
|
45
|
+
async run() {
|
|
46
|
+
this.requireWebDavCredentials();
|
|
47
|
+
const hostname = this.resolvedConfig.values.hostname;
|
|
48
|
+
let version = this.resolvedConfig.values.codeVersion;
|
|
49
|
+
const needsOAuth = !version;
|
|
50
|
+
if (needsOAuth && !this.hasOAuthCredentials()) {
|
|
51
|
+
this.error(t('commands.code.download.oauthRequired', 'No code version specified. OAuth credentials are required to auto-discover the active code version.\n\nProvide --code-version to use basic auth only, or configure OAuth credentials.\nSee: https://salesforcecommercecloud.github.io/b2c-developer-tooling/guide/configuration.html'));
|
|
52
|
+
}
|
|
53
|
+
// If no code version specified, discover the active one
|
|
54
|
+
if (!version) {
|
|
55
|
+
this.warn(t('commands.code.download.noCodeVersion', 'No code version specified, discovering active code version...'));
|
|
56
|
+
const activeVersion = await this.operations.getActiveCodeVersion(this.instance);
|
|
57
|
+
if (!activeVersion?.id) {
|
|
58
|
+
this.error(t('commands.code.download.noActiveVersion', 'No active code version found. Specify one with --code-version.'));
|
|
59
|
+
}
|
|
60
|
+
version = activeVersion.id;
|
|
61
|
+
this.instance.config.codeVersion = version;
|
|
62
|
+
}
|
|
63
|
+
// Build mirror map if --mirror flag is set
|
|
64
|
+
let mirror;
|
|
65
|
+
if (this.flags.mirror) {
|
|
66
|
+
const cartridges = await this.findCartridgesWithProviders();
|
|
67
|
+
if (cartridges.length === 0) {
|
|
68
|
+
this.error(t('commands.code.download.noLocalCartridges', 'No local cartridges found in {{path}} for mirror mode', {
|
|
69
|
+
path: this.cartridgePath,
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
mirror = new Map(cartridges.map((c) => [c.name, c.src]));
|
|
73
|
+
}
|
|
74
|
+
// Create lifecycle context
|
|
75
|
+
const context = this.createContext('code:download', {
|
|
76
|
+
cartridgePath: this.cartridgePath,
|
|
77
|
+
hostname,
|
|
78
|
+
codeVersion: version,
|
|
79
|
+
mirror: this.flags.mirror,
|
|
80
|
+
output: this.flags.output,
|
|
81
|
+
...this.cartridgeOptions,
|
|
82
|
+
});
|
|
83
|
+
// Run beforeOperation hooks
|
|
84
|
+
const beforeResult = await this.runBeforeHooks(context);
|
|
85
|
+
if (beforeResult.skip) {
|
|
86
|
+
this.log(t('commands.code.download.skipped', 'Download skipped: {{reason}}', {
|
|
87
|
+
reason: beforeResult.skipReason || 'skipped by plugin',
|
|
88
|
+
}));
|
|
89
|
+
return {
|
|
90
|
+
cartridges: [],
|
|
91
|
+
codeVersion: version,
|
|
92
|
+
outputDirectory: this.flags.output ?? 'cartridges',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
this.log(t('commands.code.download.downloading', 'Downloading code version "{{version}}" from {{hostname}}...', {
|
|
96
|
+
version,
|
|
97
|
+
hostname,
|
|
98
|
+
}));
|
|
99
|
+
// Temporarily allow DELETE for zip cleanup
|
|
100
|
+
const cleanupSafetyRule = this.safetyGuard.temporarilyAddRule({
|
|
101
|
+
method: 'DELETE',
|
|
102
|
+
path: '**/Cartridges/*.zip',
|
|
103
|
+
action: 'allow',
|
|
104
|
+
});
|
|
105
|
+
try {
|
|
106
|
+
const phaseLabels = {
|
|
107
|
+
zipping: t('commands.code.download.zipping', 'Archiving code version'),
|
|
108
|
+
downloading: t('commands.code.download.downloadingZip', 'Downloading cartridges'),
|
|
109
|
+
cleanup: t('commands.code.download.cleanup', 'Cleaning up'),
|
|
110
|
+
extracting: t('commands.code.download.extracting', 'Extracting cartridges'),
|
|
111
|
+
};
|
|
112
|
+
const result = await this.operations.downloadCartridges(this.instance, this.flags.output ?? 'cartridges', {
|
|
113
|
+
include: this.cartridgeOptions.include,
|
|
114
|
+
exclude: this.cartridgeOptions.exclude,
|
|
115
|
+
mirror,
|
|
116
|
+
onProgress: (info) => {
|
|
117
|
+
if (this.jsonEnabled())
|
|
118
|
+
return;
|
|
119
|
+
const label = phaseLabels[info.phase];
|
|
120
|
+
if (info.elapsedSeconds === 0) {
|
|
121
|
+
this.log(` ${label}...`);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
this.log(t('commands.code.download.elapsed', ' {{label}}... ({{elapsed}}s elapsed)', {
|
|
125
|
+
label,
|
|
126
|
+
elapsed: String(info.elapsedSeconds),
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
this.log(t('commands.code.download.summary', 'Downloaded {{count}} cartridge(s) from version "{{codeVersion}}"', {
|
|
132
|
+
count: result.cartridges.length,
|
|
133
|
+
codeVersion: result.codeVersion,
|
|
134
|
+
}));
|
|
135
|
+
for (const name of result.cartridges) {
|
|
136
|
+
this.log(` ${name}`);
|
|
137
|
+
}
|
|
138
|
+
// Run afterOperation hooks with success
|
|
139
|
+
await this.runAfterHooks(context, {
|
|
140
|
+
success: true,
|
|
141
|
+
duration: Date.now() - context.startTime,
|
|
142
|
+
data: result,
|
|
143
|
+
});
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
// Run afterOperation hooks with failure
|
|
148
|
+
await this.runAfterHooks(context, {
|
|
149
|
+
success: false,
|
|
150
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
151
|
+
duration: Date.now() - context.startTime,
|
|
152
|
+
});
|
|
153
|
+
if (error instanceof Error) {
|
|
154
|
+
this.error(t('commands.code.download.failed', 'Download failed: {{message}}', { message: error.message }));
|
|
155
|
+
}
|
|
156
|
+
throw error;
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
cleanupSafetyRule();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/commands/code/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,11 @@ export default class JobImport extends JobCommand<typeof JobImport> {
|
|
|
8
8
|
static enableJsonFlag: boolean;
|
|
9
9
|
static examples: string[];
|
|
10
10
|
static flags: {
|
|
11
|
+
wait: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
'keep-archive': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
remote: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
14
|
timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'poll-interval': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
16
|
'show-log': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
17
|
server: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
18
|
'webdav-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -24,6 +24,12 @@ export default class JobImport extends JobCommand {
|
|
|
24
24
|
];
|
|
25
25
|
static flags = {
|
|
26
26
|
...JobCommand.baseFlags,
|
|
27
|
+
wait: Flags.boolean({
|
|
28
|
+
char: 'w',
|
|
29
|
+
description: 'Wait for import job to complete',
|
|
30
|
+
default: true,
|
|
31
|
+
allowNo: true,
|
|
32
|
+
}),
|
|
27
33
|
'keep-archive': Flags.boolean({
|
|
28
34
|
char: 'k',
|
|
29
35
|
description: 'Keep archive on instance after import',
|
|
@@ -38,6 +44,11 @@ export default class JobImport extends JobCommand {
|
|
|
38
44
|
char: 't',
|
|
39
45
|
description: 'Timeout in seconds (default: no timeout)',
|
|
40
46
|
}),
|
|
47
|
+
'poll-interval': Flags.integer({
|
|
48
|
+
description: 'Polling interval in seconds when using --wait',
|
|
49
|
+
default: 3,
|
|
50
|
+
dependsOn: ['wait'],
|
|
51
|
+
}),
|
|
41
52
|
'show-log': Flags.boolean({
|
|
42
53
|
description: 'Show job log on failure',
|
|
43
54
|
default: true,
|
|
@@ -50,7 +61,7 @@ export default class JobImport extends JobCommand {
|
|
|
50
61
|
this.requireOAuthCredentials();
|
|
51
62
|
this.requireWebDavCredentials();
|
|
52
63
|
const { target } = this.args;
|
|
53
|
-
const { 'keep-archive': keepArchive, remote, timeout, 'show-log': showLog = true } = this.flags;
|
|
64
|
+
const { wait, 'keep-archive': keepArchive, remote, timeout, 'poll-interval': pollInterval, 'show-log': showLog = true, } = this.flags;
|
|
54
65
|
const hostname = this.resolvedConfig.values.hostname;
|
|
55
66
|
// Safety evaluation — check rules for import job before executing.
|
|
56
67
|
// Command-level rules are already evaluated generically in BaseCommand.init().
|
|
@@ -103,8 +114,10 @@ export default class JobImport extends JobCommand {
|
|
|
103
114
|
const importTarget = remote ? { remoteFilename: target } : target;
|
|
104
115
|
const result = await this.operations.siteArchiveImport(this.instance, importTarget, {
|
|
105
116
|
keepArchive,
|
|
117
|
+
wait,
|
|
106
118
|
waitOptions: {
|
|
107
119
|
timeoutSeconds: timeout,
|
|
120
|
+
pollIntervalSeconds: pollInterval,
|
|
108
121
|
onPoll: (info) => {
|
|
109
122
|
if (!this.jsonEnabled()) {
|
|
110
123
|
this.log(t('commands.job.import.progress', ' Status: {{status}} ({{elapsed}}s elapsed)', {
|
|
@@ -115,11 +128,19 @@ export default class JobImport extends JobCommand {
|
|
|
115
128
|
},
|
|
116
129
|
},
|
|
117
130
|
});
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
131
|
+
if (wait) {
|
|
132
|
+
const durationSec = result.execution.duration ? (result.execution.duration / 1000).toFixed(1) : 'N/A';
|
|
133
|
+
this.log(t('commands.job.import.completed', 'Import completed: {{status}} (duration: {{duration}}s)', {
|
|
134
|
+
status: result.execution.exit_status?.code || result.execution.execution_status,
|
|
135
|
+
duration: durationSec,
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
this.log(t('commands.job.import.started', 'Import job started: {{executionId}} (status: {{status}})', {
|
|
140
|
+
executionId: result.execution.id,
|
|
141
|
+
status: result.execution.execution_status,
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
123
144
|
if (result.archiveKept) {
|
|
124
145
|
this.log(t('commands.job.import.archiveKept', 'Archive kept at: Impex/src/instance/{{filename}}', {
|
|
125
146
|
filename: result.archiveFilename,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/commands/job/import.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,UAAU,EAAC,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAC,CAAC,EAAE,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,UAA4B;IACjE,MAAM,CAAC,IAAI,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,mDAAmD;YAChE,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAC3B,CAAC,CACC,iCAAiC,EACjC,qFAAqF,CACtF,EACD,+BAA+B,CAChC,CAAC;IAEF,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,oDAAoD;QACpD,kDAAkD;QAClD,mEAAmE;QACnE,mEAAmE;KACpE,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,UAAU,CAAC,SAAS;QACvB,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;YAC5B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,uCAAuC;YACpD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,uEAAuE;YACpF,OAAO,EAAE,KAAK;SACf,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,0CAA0C;SACxD,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC;YACxB,WAAW,EAAE,yBAAyB;YACtC,OAAO,EAAE,IAAI;SACd,CAAC;KACH,CAAC;IAEQ,UAAU,GAAG;QACrB,iBAAiB;KAClB,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/commands/job/import.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { MrtCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
import { listEnvVars, setEnvVar, setEnvVars } from '@salesforce/b2c-tooling-sdk/operations/mrt';
|
|
3
|
+
/**
|
|
4
|
+
* Push local .env file variables to an MRT project environment.
|
|
5
|
+
*
|
|
6
|
+
* Environment variables read:
|
|
7
|
+
* MRT_PROJECT (optional) - MRT project slug, overridden by --project flag
|
|
8
|
+
* MRT_ENVIRONMENT (optional) - MRT environment, overridden by --environment flag
|
|
9
|
+
*/
|
|
10
|
+
export default class MrtEnvVarPush extends MrtCommand<typeof MrtEnvVarPush> {
|
|
11
|
+
static description: string;
|
|
12
|
+
static enableJsonFlag: boolean;
|
|
13
|
+
static examples: string[];
|
|
14
|
+
static flags: {
|
|
15
|
+
file: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
'exclude-prefix': import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
|
+
'api-key': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
project: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
'cloud-origin': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
'credentials-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
|
+
'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
|
+
debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
25
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
26
|
+
jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
27
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
28
|
+
config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
29
|
+
instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
30
|
+
'project-directory': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
31
|
+
'extra-query': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
32
|
+
'extra-body': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
33
|
+
'extra-headers': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
34
|
+
};
|
|
35
|
+
protected operations: {
|
|
36
|
+
listEnvVars: typeof listEnvVars;
|
|
37
|
+
setEnvVar: typeof setEnvVar;
|
|
38
|
+
setEnvVars: typeof setEnvVars;
|
|
39
|
+
readEnvFile: (path: string) => string;
|
|
40
|
+
};
|
|
41
|
+
run(): Promise<{
|
|
42
|
+
pushed: number;
|
|
43
|
+
failed: number;
|
|
44
|
+
skipped: number;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
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 { readFileSync } from 'node:fs';
|
|
7
|
+
import { resolve } from 'node:path';
|
|
8
|
+
import { parseEnv } from 'node:util';
|
|
9
|
+
import { Flags, ux } from '@oclif/core';
|
|
10
|
+
import { confirm } from '@inquirer/prompts';
|
|
11
|
+
import { MrtCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
12
|
+
import { listEnvVars, setEnvVar, setEnvVars } from '@salesforce/b2c-tooling-sdk/operations/mrt';
|
|
13
|
+
import { t, withDocs } from '../../../../i18n/index.js';
|
|
14
|
+
import { filterByPrefix, computeEnvVarDiff, formatEnvVarDiffSummary } from '../../../../utils/mrt/env-var-diff.js';
|
|
15
|
+
/**
|
|
16
|
+
* Push local .env file variables to an MRT project environment.
|
|
17
|
+
*
|
|
18
|
+
* Environment variables read:
|
|
19
|
+
* MRT_PROJECT (optional) - MRT project slug, overridden by --project flag
|
|
20
|
+
* MRT_ENVIRONMENT (optional) - MRT environment, overridden by --environment flag
|
|
21
|
+
*/
|
|
22
|
+
export default class MrtEnvVarPush extends MrtCommand {
|
|
23
|
+
static description = withDocs(t('commands.mrt.env.var.push.description', 'Push local .env file variables to a Managed Runtime environment'), '/cli/mrt.html#b2c-mrt-env-var-push');
|
|
24
|
+
static enableJsonFlag = true;
|
|
25
|
+
static examples = [
|
|
26
|
+
'<%= config.bin %> <%= command.id %> --project acme-storefront --environment production',
|
|
27
|
+
'<%= config.bin %> <%= command.id %> -p my-project -e staging --yes',
|
|
28
|
+
'<%= config.bin %> <%= command.id %> --file config/.env --exclude-prefix INTERNAL_ -p my-project -e staging',
|
|
29
|
+
];
|
|
30
|
+
static flags = {
|
|
31
|
+
...MrtCommand.baseFlags,
|
|
32
|
+
file: Flags.string({
|
|
33
|
+
char: 'f',
|
|
34
|
+
description: t('commands.mrt.env.var.push.fileFlag', 'Path to the .env file to push'),
|
|
35
|
+
default: '.env',
|
|
36
|
+
}),
|
|
37
|
+
'exclude-prefix': Flags.string({
|
|
38
|
+
description: t('commands.mrt.env.var.push.excludePrefixFlag', 'Exclude variables whose keys start with this prefix (repeatable)'),
|
|
39
|
+
multiple: true,
|
|
40
|
+
default: ['MRT_'],
|
|
41
|
+
}),
|
|
42
|
+
yes: Flags.boolean({
|
|
43
|
+
char: 'y',
|
|
44
|
+
description: t('commands.mrt.env.var.push.yesFlag', 'Skip confirmation prompt'),
|
|
45
|
+
default: false,
|
|
46
|
+
}),
|
|
47
|
+
};
|
|
48
|
+
operations = {
|
|
49
|
+
listEnvVars,
|
|
50
|
+
setEnvVar,
|
|
51
|
+
setEnvVars,
|
|
52
|
+
readEnvFile: (path) => readFileSync(path, 'utf8'),
|
|
53
|
+
};
|
|
54
|
+
async run() {
|
|
55
|
+
const { flags } = await this.parse(MrtEnvVarPush);
|
|
56
|
+
const envFilePath = resolve(flags.file);
|
|
57
|
+
// Step 1: Read and parse .env file
|
|
58
|
+
let rawContent;
|
|
59
|
+
try {
|
|
60
|
+
rawContent = this.operations.readEnvFile(envFilePath);
|
|
61
|
+
}
|
|
62
|
+
catch (error_) {
|
|
63
|
+
const error = error_;
|
|
64
|
+
if (error.code === 'ENOENT') {
|
|
65
|
+
this.error(t('commands.mrt.env.var.push.fileNotFound', '.env file not found: {{path}}', { path: envFilePath }));
|
|
66
|
+
}
|
|
67
|
+
throw error_;
|
|
68
|
+
}
|
|
69
|
+
const parsed = parseEnv(rawContent);
|
|
70
|
+
// Step 2: Filter out excluded prefixes
|
|
71
|
+
const localVars = filterByPrefix(new Map(Object.entries(parsed).filter((e) => e[1] !== undefined)), flags['exclude-prefix']);
|
|
72
|
+
// Step 3: Validate MRT target
|
|
73
|
+
const { mrtProject: project, mrtEnvironment: environment } = this.resolvedConfig.values;
|
|
74
|
+
if (!project) {
|
|
75
|
+
this.error(t('commands.mrt.env.var.push.missingProject', 'MRT project is required. Provide --project flag, set MRT_PROJECT, or set mrtProject in dw.json.'));
|
|
76
|
+
}
|
|
77
|
+
if (!environment) {
|
|
78
|
+
this.error(t('commands.mrt.env.var.push.missingEnvironment', 'MRT environment is required. Provide --environment flag, set MRT_ENVIRONMENT, or set mrtEnvironment in dw.json.'));
|
|
79
|
+
}
|
|
80
|
+
// Step 4: Fetch current remote env vars
|
|
81
|
+
this.requireMrtCredentials();
|
|
82
|
+
const { mrtOrigin: origin } = this.resolvedConfig.values;
|
|
83
|
+
const auth = this.getMrtAuth();
|
|
84
|
+
ux.stdout(t('commands.mrt.env.var.push.fetching', 'Fetching remote env vars for {{project}}/{{environment}}...', {
|
|
85
|
+
project,
|
|
86
|
+
environment,
|
|
87
|
+
}));
|
|
88
|
+
const { variables: remoteVariables } = await this.operations.listEnvVars({ projectSlug: project, environment, origin }, auth);
|
|
89
|
+
const remoteVars = new Map(remoteVariables.map((v) => [v.name, v.value]));
|
|
90
|
+
// Step 5: Compute diff
|
|
91
|
+
const diff = computeEnvVarDiff(localVars, remoteVars);
|
|
92
|
+
const toSync = [...diff.add, ...diff.update];
|
|
93
|
+
// Step 6: Display summary
|
|
94
|
+
ux.stdout('');
|
|
95
|
+
ux.stdout(formatEnvVarDiffSummary(diff));
|
|
96
|
+
if (toSync.length === 0) {
|
|
97
|
+
return { pushed: 0, failed: 0, skipped: diff.remoteOnly.length };
|
|
98
|
+
}
|
|
99
|
+
// Step 7: Confirm unless --yes
|
|
100
|
+
if (!flags.yes) {
|
|
101
|
+
const message = t('commands.mrt.env.var.push.confirm', 'Push {{count}} variable(s) ({{add}} new, {{update}} updated) to {{project}}/{{environment}}?', {
|
|
102
|
+
count: toSync.length,
|
|
103
|
+
add: diff.add.length,
|
|
104
|
+
update: diff.update.length,
|
|
105
|
+
project,
|
|
106
|
+
environment,
|
|
107
|
+
});
|
|
108
|
+
const confirmed = await confirm({ message, default: false });
|
|
109
|
+
if (!confirmed) {
|
|
110
|
+
ux.stdout(t('commands.mrt.env.var.push.aborted', 'Aborted.'));
|
|
111
|
+
return { pushed: 0, failed: 0, skipped: diff.remoteOnly.length };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Step 8: Push variables — try batch first, fall back to individual calls
|
|
115
|
+
let pushed = 0;
|
|
116
|
+
let failed = 0;
|
|
117
|
+
const baseParams = { projectSlug: project, environment, origin };
|
|
118
|
+
try {
|
|
119
|
+
const variables = Object.fromEntries(toSync.map(({ key, value }) => [key, value]));
|
|
120
|
+
await this.operations.setEnvVars({ ...baseParams, variables }, auth);
|
|
121
|
+
for (const { key } of toSync) {
|
|
122
|
+
ux.stdout(t('commands.mrt.env.var.push.varSuccess', ' ✓ {{key}}', { key }));
|
|
123
|
+
}
|
|
124
|
+
pushed = toSync.length;
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
this.warn(t('commands.mrt.env.var.push.batchFailed', 'Batch push failed, retrying variables individually...'));
|
|
128
|
+
const results = await Promise.allSettled(toSync.map(({ key, value }) => this.operations.setEnvVar({ ...baseParams, key, value }, auth)));
|
|
129
|
+
for (const [index, result] of results.entries()) {
|
|
130
|
+
const { key } = toSync[index];
|
|
131
|
+
if (result.status === 'fulfilled') {
|
|
132
|
+
ux.stdout(t('commands.mrt.env.var.push.varSuccess', ' ✓ {{key}}', { key }));
|
|
133
|
+
pushed++;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
this.warn(t('commands.mrt.env.var.push.varFailed', ' ✗ {{key}}: {{message}}', {
|
|
137
|
+
key,
|
|
138
|
+
message: result.reason.message,
|
|
139
|
+
}));
|
|
140
|
+
failed++;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Step 9: Summary
|
|
145
|
+
ux.stdout('');
|
|
146
|
+
ux.stdout(t('commands.mrt.env.var.push.summary', 'Summary: {{pushed}} pushed, {{failed}} failed, {{skipped}} remote-only (not deleted)', {
|
|
147
|
+
pushed,
|
|
148
|
+
failed,
|
|
149
|
+
skipped: diff.remoteOnly.length,
|
|
150
|
+
}));
|
|
151
|
+
return { pushed, failed, skipped: diff.remoteOnly.length };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../../src/commands/mrt/env/var/push.ts"],"names":[],"mappings":"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"}
|