@salesforce/plugin-devops-center 1.4.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +592 -55
- package/lib/commands/devops/pipeline/{activate.d.ts → get.d.ts} +3 -3
- package/lib/commands/devops/pipeline/get.js +81 -0
- package/lib/commands/devops/pipeline/get.js.map +1 -0
- package/lib/commands/devops/pipeline/list.d.ts +13 -0
- package/lib/commands/devops/pipeline/list.js +58 -0
- package/lib/commands/devops/pipeline/list.js.map +1 -0
- package/lib/commands/devops/pipeline/project/delete.d.ts +15 -0
- package/lib/commands/devops/pipeline/project/delete.js +71 -0
- package/lib/commands/devops/pipeline/project/delete.js.map +1 -0
- package/lib/commands/devops/pipeline/stage/delete.d.ts +15 -0
- package/lib/commands/devops/pipeline/stage/delete.js +69 -0
- package/lib/commands/devops/pipeline/stage/delete.js.map +1 -0
- package/lib/commands/devops/pipeline/update.d.ts +18 -0
- package/lib/commands/devops/pipeline/update.js +126 -0
- package/lib/commands/devops/pipeline/update.js.map +1 -0
- package/lib/commands/devops/project/update.d.ts +17 -0
- package/lib/commands/devops/project/update.js +86 -0
- package/lib/commands/devops/project/update.js.map +1 -0
- package/lib/commands/devops/promote.d.ts +24 -0
- package/lib/commands/devops/promote.js +148 -0
- package/lib/commands/devops/promote.js.map +1 -0
- package/lib/commands/devops/promotion/complete.d.ts +20 -0
- package/lib/commands/devops/promotion/complete.js +112 -0
- package/lib/commands/devops/promotion/complete.js.map +1 -0
- package/lib/commands/devops/request/status.d.ts +14 -0
- package/lib/commands/devops/request/status.js +71 -0
- package/lib/commands/devops/request/status.js.map +1 -0
- package/lib/commands/devops/{pull-request → review}/create.d.ts +1 -1
- package/lib/commands/devops/{pull-request → review}/create.js +3 -3
- package/lib/commands/devops/review/create.js.map +1 -0
- package/lib/commands/devops/stage/environment/add.js +2 -0
- package/lib/commands/devops/stage/environment/add.js.map +1 -1
- package/lib/commands/devops/stage/environment/delete.d.ts +15 -0
- package/lib/commands/devops/{pipeline/activate.js → stage/environment/delete.js} +18 -30
- package/lib/commands/devops/stage/environment/delete.js.map +1 -0
- package/lib/commands/devops/work-item/combine.d.ts +15 -0
- package/lib/commands/devops/work-item/combine.js +109 -0
- package/lib/commands/devops/work-item/combine.js.map +1 -0
- package/lib/commands/devops/work-item/prepare.d.ts +14 -0
- package/lib/commands/devops/work-item/prepare.js +98 -0
- package/lib/commands/devops/work-item/prepare.js.map +1 -0
- package/lib/common/flags/promote/promoteFlags.d.ts +1 -0
- package/lib/common/flags/promote/promoteFlags.js +5 -0
- package/lib/common/flags/promote/promoteFlags.js.map +1 -1
- package/lib/common/outputService/aorOutputService.js +4 -4
- package/lib/common/outputService/aorOutputService.js.map +1 -1
- package/lib/common/outputService/outputUtils.js +1 -2
- package/lib/common/outputService/outputUtils.js.map +1 -1
- package/lib/common/selectors/asyncOperationResultsSelector.js +3 -1
- package/lib/common/selectors/asyncOperationResultsSelector.js.map +1 -1
- package/lib/common/selectors/deployComponentsSelector.js +5 -6
- package/lib/common/selectors/deployComponentsSelector.js.map +1 -1
- package/lib/common/selectors/deployProgressSummarySelector.js +3 -1
- package/lib/common/selectors/deployProgressSummarySelector.js.map +1 -1
- package/lib/common/selectors/deploymentResultsSelector.js +10 -6
- package/lib/common/selectors/deploymentResultsSelector.js.map +1 -1
- package/lib/common/selectors/environmentSelector.js +4 -2
- package/lib/common/selectors/environmentSelector.js.map +1 -1
- package/lib/common/selectors/namedCredentialSelector.js +2 -1
- package/lib/common/selectors/namedCredentialSelector.js.map +1 -1
- package/lib/common/selectors/pipelineStageSelector.js +5 -3
- package/lib/common/selectors/pipelineStageSelector.js.map +1 -1
- package/lib/common/selectors/validateDeploySelector.js +3 -1
- package/lib/common/selectors/validateDeploySelector.js.map +1 -1
- package/lib/common/selectors/workItemSelector.js +4 -1
- package/lib/common/selectors/workItemSelector.js.map +1 -1
- package/lib/utils/activatePipeline.d.ts +13 -4
- package/lib/utils/activatePipeline.js +7 -6
- package/lib/utils/activatePipeline.js.map +1 -1
- package/lib/utils/attachProject.js +2 -0
- package/lib/utils/attachProject.js.map +1 -1
- package/lib/utils/combineWorkItems.d.ts +20 -0
- package/lib/utils/combineWorkItems.js +42 -0
- package/lib/utils/combineWorkItems.js.map +1 -0
- package/lib/utils/createPullRequest.js +2 -1
- package/lib/utils/createPullRequest.js.map +1 -1
- package/lib/utils/deletePipelineStage.d.ts +12 -0
- package/lib/utils/deletePipelineStage.js +41 -0
- package/lib/utils/deletePipelineStage.js.map +1 -0
- package/lib/utils/deleteStageEnvironment.d.ts +8 -0
- package/lib/utils/deleteStageEnvironment.js +33 -0
- package/lib/utils/deleteStageEnvironment.js.map +1 -0
- package/lib/utils/deployStage.d.ts +29 -0
- package/lib/utils/deployStage.js +68 -0
- package/lib/utils/deployStage.js.map +1 -0
- package/lib/utils/detachProject.d.ts +8 -0
- package/lib/utils/detachProject.js +37 -0
- package/lib/utils/detachProject.js.map +1 -0
- package/lib/utils/getPipeline.d.ts +27 -0
- package/lib/utils/getPipeline.js +66 -0
- package/lib/utils/getPipeline.js.map +1 -0
- package/lib/utils/getRequestStatus.d.ts +10 -0
- package/lib/utils/getRequestStatus.js +32 -0
- package/lib/utils/getRequestStatus.js.map +1 -0
- package/lib/utils/listPipelines.d.ts +11 -0
- package/lib/utils/listPipelines.js +20 -0
- package/lib/utils/listPipelines.js.map +1 -0
- package/lib/utils/pipelineUtils.js +3 -0
- package/lib/utils/pipelineUtils.js.map +1 -1
- package/lib/utils/prepareWorkItem.d.ts +25 -0
- package/lib/utils/prepareWorkItem.js +55 -0
- package/lib/utils/prepareWorkItem.js.map +1 -0
- package/lib/utils/promoteStage.d.ts +21 -0
- package/lib/utils/promoteStage.js +46 -0
- package/lib/utils/promoteStage.js.map +1 -0
- package/lib/utils/soqlUtils.d.ts +23 -0
- package/lib/utils/soqlUtils.js +63 -0
- package/lib/utils/soqlUtils.js.map +1 -0
- package/lib/utils/updateProject.d.ts +17 -0
- package/lib/utils/updateProject.js +41 -0
- package/lib/utils/updateProject.js.map +1 -0
- package/lib/utils/updateWorkItem.js +3 -1
- package/lib/utils/updateWorkItem.js.map +1 -1
- package/lib/utils/workItems.js +2 -0
- package/lib/utils/workItems.js.map +1 -1
- package/messages/devops.pipeline.get.md +17 -0
- package/messages/devops.pipeline.list.md +13 -0
- package/messages/devops.pipeline.project.delete.md +25 -0
- package/messages/devops.pipeline.stage.delete.md +25 -0
- package/messages/devops.pipeline.update.md +47 -0
- package/messages/devops.project.update.md +45 -0
- package/messages/devops.promote.md +61 -0
- package/messages/devops.promotion.complete.md +47 -0
- package/messages/devops.request.status.md +21 -0
- package/messages/devops.stage.environment.delete.md +29 -0
- package/messages/devops.work-item.combine.md +39 -0
- package/messages/devops.work-item.prepare.md +27 -0
- package/npm-shrinkwrap.json +290 -272
- package/oclif.lock +81 -24
- package/oclif.manifest.json +1176 -242
- package/package.json +23 -11
- package/schemas/devops-pipeline-get.json +98 -0
- package/schemas/devops-pipeline-list.json +38 -0
- package/schemas/devops-pipeline-project-delete.json +25 -0
- package/schemas/devops-pipeline-stage-delete.json +25 -0
- package/schemas/{devops-pipeline-activate.json → devops-pipeline-update.json} +5 -2
- package/schemas/devops-project-update.json +31 -0
- package/schemas/devops-promote.json +28 -0
- package/schemas/devops-promotion-complete.json +34 -0
- package/schemas/devops-request-status.json +31 -0
- package/schemas/devops-stage-environment-delete.json +25 -0
- package/schemas/devops-work__item-combine.json +25 -0
- package/schemas/devops-work__item-prepare.json +25 -0
- package/lib/commands/devops/pipeline/activate.js.map +0 -1
- package/lib/commands/devops/pull-request/create.js.map +0 -1
- package/messages/devops.pipeline.activate.md +0 -29
- /package/messages/{devops.pull-request.create.md → devops.review.create.md} +0 -0
- /package/schemas/{devops-pull__request-create.json → devops-review-create.json} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/devops/project/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
export type PromoteResult = {
|
|
3
|
+
requestId: string;
|
|
4
|
+
status: string;
|
|
5
|
+
message: string;
|
|
6
|
+
promotedWorkitemIds: string[];
|
|
7
|
+
};
|
|
8
|
+
export default class DevopsPromote extends SfCommand<PromoteResult> {
|
|
9
|
+
static readonly summary: string;
|
|
10
|
+
static readonly description: string;
|
|
11
|
+
static readonly examples: string[];
|
|
12
|
+
static readonly flags: {
|
|
13
|
+
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'target-stage-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
'work-item-id': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
'stage-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
'deploy-all': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
19
|
+
'test-level': import("@oclif/core/interfaces").OptionFlag<import("../../common/types.js").TestLevel | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
tests: import("@oclif/core/interfaces").OptionFlag<string[] | undefined>;
|
|
21
|
+
};
|
|
22
|
+
private static fetchStageWorkItems;
|
|
23
|
+
run(): Promise<PromoteResult>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026, Salesforce, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Messages } from '@salesforce/core';
|
|
17
|
+
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
18
|
+
import { promoteStage } from '../../utils/promoteStage.js';
|
|
19
|
+
import { resolveProjectIdFromWorkItem } from '../../utils/prepareWorkItem.js';
|
|
20
|
+
import { getPipelineIdForProject } from '../../utils/pipelineUtils.js';
|
|
21
|
+
import { deployAll, testLevel as testLevelFlag, specificTestsNoChar } from '../../common/flags/promote/promoteFlags.js';
|
|
22
|
+
import { validateSalesforceId } from '../../utils/soqlUtils.js';
|
|
23
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
24
|
+
const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.promote');
|
|
25
|
+
const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
|
|
26
|
+
export default class DevopsPromote extends SfCommand {
|
|
27
|
+
static summary = messages.getMessage('summary');
|
|
28
|
+
static description = messages.getMessage('description');
|
|
29
|
+
static examples = messages.getMessages('examples');
|
|
30
|
+
static flags = {
|
|
31
|
+
'target-org': Flags.requiredOrg(),
|
|
32
|
+
'api-version': Flags.orgApiVersion(),
|
|
33
|
+
'target-stage-id': Flags.salesforceId({
|
|
34
|
+
char: 't',
|
|
35
|
+
summary: messages.getMessage('flags.target-stage-id.summary'),
|
|
36
|
+
required: true,
|
|
37
|
+
startsWith: '1QV',
|
|
38
|
+
}),
|
|
39
|
+
'work-item-id': Flags.salesforceId({
|
|
40
|
+
char: 'i',
|
|
41
|
+
summary: messages.getMessage('flags.work-item-id.summary'),
|
|
42
|
+
description: messages.getMessage('flags.work-item-id.description'),
|
|
43
|
+
required: false,
|
|
44
|
+
multiple: true,
|
|
45
|
+
startsWith: '1fk',
|
|
46
|
+
exclusive: ['stage-id'],
|
|
47
|
+
}),
|
|
48
|
+
'stage-id': Flags.salesforceId({
|
|
49
|
+
char: 's',
|
|
50
|
+
summary: messages.getMessage('flags.stage-id.summary'),
|
|
51
|
+
required: false,
|
|
52
|
+
startsWith: '1QV',
|
|
53
|
+
exclusive: ['work-item-id'],
|
|
54
|
+
}),
|
|
55
|
+
'deploy-all': deployAll,
|
|
56
|
+
'test-level': testLevelFlag(),
|
|
57
|
+
tests: specificTestsNoChar,
|
|
58
|
+
};
|
|
59
|
+
static async fetchStageWorkItems(connection, pipelineId, sourceStageId, targetStageId) {
|
|
60
|
+
// Validate all IDs before using in SOQL
|
|
61
|
+
validateSalesforceId(pipelineId, 'pipeline');
|
|
62
|
+
validateSalesforceId(sourceStageId, 'source stage');
|
|
63
|
+
validateSalesforceId(targetStageId, 'target stage');
|
|
64
|
+
// Verify the source stage feeds into the target stage
|
|
65
|
+
const stageResult = await connection.query(`SELECT NextStageId FROM DevopsPipelineStage WHERE Id = '${sourceStageId}' AND DevopsPipelineId = '${pipelineId}' LIMIT 1`);
|
|
66
|
+
const nextStageId = stageResult.records[0]?.NextStageId;
|
|
67
|
+
if (!nextStageId) {
|
|
68
|
+
throw new Error(`Stage '${sourceStageId}' not found in the pipeline or has no next stage.`);
|
|
69
|
+
}
|
|
70
|
+
if (nextStageId !== targetStageId) {
|
|
71
|
+
throw new Error(`Stage '${sourceStageId}' does not feed into target stage '${targetStageId}'.`);
|
|
72
|
+
}
|
|
73
|
+
const workItemResult = await connection.query(`SELECT Id FROM WorkItem WHERE DevopsPipelineStageId = '${sourceStageId}' LIMIT 200`);
|
|
74
|
+
return workItemResult.records.map((r) => r.Id);
|
|
75
|
+
}
|
|
76
|
+
async run() {
|
|
77
|
+
const { flags } = await this.parse(DevopsPromote);
|
|
78
|
+
const connection = flags['target-org'].getConnection(flags['api-version']);
|
|
79
|
+
const targetStageId = flags['target-stage-id'];
|
|
80
|
+
const workItemIds = flags['work-item-id'];
|
|
81
|
+
const sourceStageId = flags['stage-id'];
|
|
82
|
+
if (!workItemIds?.length && !sourceStageId) {
|
|
83
|
+
this.error(messages.getMessage('error.NoModeFlag'));
|
|
84
|
+
}
|
|
85
|
+
let pipelineId;
|
|
86
|
+
let resolvedWorkItemIds;
|
|
87
|
+
if (workItemIds?.length) {
|
|
88
|
+
const { projectId } = await resolveProjectIdFromWorkItem(connection, workItemIds[0]);
|
|
89
|
+
const pid = await getPipelineIdForProject(connection, projectId);
|
|
90
|
+
if (!pid) {
|
|
91
|
+
this.error(`No pipeline found for work item "${workItemIds[0]}". Ensure the project has an associated pipeline.`);
|
|
92
|
+
}
|
|
93
|
+
pipelineId = pid;
|
|
94
|
+
resolvedWorkItemIds = workItemIds;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// Stage path: resolve pipelineId from the source stage
|
|
98
|
+
const sid = sourceStageId;
|
|
99
|
+
validateSalesforceId(sid, 'source stage');
|
|
100
|
+
const stageQueryResult = await connection.query(`SELECT DevopsPipelineId FROM DevopsPipelineStage WHERE Id = '${sid}' LIMIT 1`);
|
|
101
|
+
const pid = stageQueryResult.records[0]?.DevopsPipelineId;
|
|
102
|
+
if (!pid) {
|
|
103
|
+
this.error(`Stage '${sid}' not found or has no associated pipeline.`);
|
|
104
|
+
}
|
|
105
|
+
pipelineId = pid;
|
|
106
|
+
resolvedWorkItemIds = await DevopsPromote.fetchStageWorkItems(connection, pipelineId, sid, targetStageId);
|
|
107
|
+
if (resolvedWorkItemIds.length === 0) {
|
|
108
|
+
this.error(messages.getMessage('error.NoWorkItems'));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
let apiResult;
|
|
112
|
+
try {
|
|
113
|
+
apiResult = await promoteStage({
|
|
114
|
+
connection,
|
|
115
|
+
pipelineId,
|
|
116
|
+
workItemIds: resolvedWorkItemIds,
|
|
117
|
+
targetStageId,
|
|
118
|
+
fullDeploy: flags['deploy-all'],
|
|
119
|
+
testLevel: flags['test-level'],
|
|
120
|
+
runTests: flags.tests,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
125
|
+
if (errMsg.includes('sObject type') && errMsg.includes('is not supported')) {
|
|
126
|
+
this.error(commonErrorMessages.getMessage('error.DevopsCenterNotEnabled'));
|
|
127
|
+
}
|
|
128
|
+
const cleanMsg = errMsg.split('<')[0].trim();
|
|
129
|
+
this.error(messages.getMessage('error.PromoteFailed', [cleanMsg]));
|
|
130
|
+
}
|
|
131
|
+
this.log(`Status: ${apiResult.status}`);
|
|
132
|
+
this.log(`Message: ${apiResult.message}`);
|
|
133
|
+
this.log(`Request ID: ${apiResult.requestId}`);
|
|
134
|
+
this.log('');
|
|
135
|
+
this.log('Promoted Work Items');
|
|
136
|
+
this.log('───────────────────');
|
|
137
|
+
for (const id of apiResult.promotedWorkitemIds) {
|
|
138
|
+
this.log(id);
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
requestId: apiResult.requestId,
|
|
142
|
+
status: apiResult.status,
|
|
143
|
+
message: apiResult.message,
|
|
144
|
+
promotedWorkitemIds: apiResult.promotedWorkitemIds,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=promote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promote.js","sourceRoot":"","sources":["../../../src/commands/devops/promote.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
import { DeployStageResult } from '../../../utils/deployStage.js';
|
|
3
|
+
export type PromotionCompleteResult = DeployStageResult & {
|
|
4
|
+
undeployedWorkitemIds: string[];
|
|
5
|
+
};
|
|
6
|
+
export default class DevopsPromotionComplete extends SfCommand<PromotionCompleteResult> {
|
|
7
|
+
static readonly summary: string;
|
|
8
|
+
static readonly description: string;
|
|
9
|
+
static readonly examples: string[];
|
|
10
|
+
static readonly flags: {
|
|
11
|
+
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'target-stage-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
'work-item-id': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'deploy-all': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
'test-level': import("@oclif/core/interfaces").OptionFlag<import("../../../common/types.js").TestLevel | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
tests: import("@oclif/core/interfaces").OptionFlag<string[] | undefined>;
|
|
18
|
+
};
|
|
19
|
+
run(): Promise<PromotionCompleteResult>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026, Salesforce, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Messages } from '@salesforce/core';
|
|
17
|
+
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
18
|
+
import { getUndeployedWorkItems, validateDeploy, executeDeploy, } from '../../../utils/deployStage.js';
|
|
19
|
+
import { deployAll, testLevel, specificTestsNoChar } from '../../../common/flags/promote/promoteFlags.js';
|
|
20
|
+
import { validateSalesforceId } from '../../../utils/soqlUtils.js';
|
|
21
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
22
|
+
const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.promotion.complete');
|
|
23
|
+
const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
|
|
24
|
+
export default class DevopsPromotionComplete extends SfCommand {
|
|
25
|
+
static summary = messages.getMessage('summary');
|
|
26
|
+
static description = messages.getMessage('description');
|
|
27
|
+
static examples = messages.getMessages('examples');
|
|
28
|
+
static flags = {
|
|
29
|
+
'target-org': Flags.requiredOrg(),
|
|
30
|
+
'api-version': Flags.orgApiVersion(),
|
|
31
|
+
'target-stage-id': Flags.salesforceId({
|
|
32
|
+
char: 't',
|
|
33
|
+
summary: messages.getMessage('flags.target-stage-id.summary'),
|
|
34
|
+
required: true,
|
|
35
|
+
startsWith: '1QV',
|
|
36
|
+
}),
|
|
37
|
+
'work-item-id': Flags.salesforceId({
|
|
38
|
+
char: 'i',
|
|
39
|
+
summary: messages.getMessage('flags.work-item-id.summary'),
|
|
40
|
+
required: false,
|
|
41
|
+
multiple: true,
|
|
42
|
+
startsWith: '1fk',
|
|
43
|
+
}),
|
|
44
|
+
'deploy-all': deployAll,
|
|
45
|
+
'test-level': testLevel(),
|
|
46
|
+
tests: specificTestsNoChar,
|
|
47
|
+
};
|
|
48
|
+
async run() {
|
|
49
|
+
const { flags } = await this.parse(DevopsPromotionComplete);
|
|
50
|
+
const connection = flags['target-org'].getConnection(flags['api-version']);
|
|
51
|
+
const targetStageId = flags['target-stage-id'];
|
|
52
|
+
const workItemIds = flags['work-item-id'];
|
|
53
|
+
let pipelineId;
|
|
54
|
+
try {
|
|
55
|
+
validateSalesforceId(targetStageId, 'target stage');
|
|
56
|
+
const stageResult = await connection.query(`SELECT DevopsPipelineId FROM DevopsPipelineStage WHERE Id = '${targetStageId}' LIMIT 1`);
|
|
57
|
+
const id = stageResult.records[0]?.DevopsPipelineId;
|
|
58
|
+
if (!id) {
|
|
59
|
+
this.error(messages.getMessage('error.StageNotFound', [targetStageId]));
|
|
60
|
+
}
|
|
61
|
+
pipelineId = id;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
65
|
+
if (errMsg.includes('sObject type') && errMsg.includes('is not supported')) {
|
|
66
|
+
this.error(commonErrorMessages.getMessage('error.DevopsCenterNotEnabled'));
|
|
67
|
+
}
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
// When --work-item-id is provided, skip discovery and target those IDs directly.
|
|
71
|
+
// When omitted, discover all undeployed work items for the stage.
|
|
72
|
+
let resolvedWorkItemIds;
|
|
73
|
+
if (workItemIds?.length) {
|
|
74
|
+
resolvedWorkItemIds = workItemIds;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const { undeployedWorkitemIds } = await getUndeployedWorkItems(connection, pipelineId, targetStageId);
|
|
78
|
+
if (undeployedWorkitemIds.length === 0) {
|
|
79
|
+
this.log(messages.getMessage('info.NothingToDeploy'));
|
|
80
|
+
return {
|
|
81
|
+
requestId: '',
|
|
82
|
+
status: 'NoOp',
|
|
83
|
+
message: 'No undeployed work items found for this stage.',
|
|
84
|
+
promotedWorkitemIds: [],
|
|
85
|
+
undeployedWorkitemIds: [],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
resolvedWorkItemIds = undeployedWorkitemIds;
|
|
89
|
+
}
|
|
90
|
+
const validation = await validateDeploy(connection, pipelineId, resolvedWorkItemIds, targetStageId);
|
|
91
|
+
if (!validation.success) {
|
|
92
|
+
this.error(messages.getMessage('error.ValidationFailed', [validation.errorType ?? '', validation.errorDetails ?? '']));
|
|
93
|
+
}
|
|
94
|
+
let result;
|
|
95
|
+
try {
|
|
96
|
+
result = await executeDeploy(connection, pipelineId, targetStageId, flags['deploy-all'], flags['test-level'], flags.tests, workItemIds?.length ? resolvedWorkItemIds : undefined);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
100
|
+
if (errMsg.includes('sObject type') && errMsg.includes('is not supported')) {
|
|
101
|
+
this.error(commonErrorMessages.getMessage('error.DevopsCenterNotEnabled'));
|
|
102
|
+
}
|
|
103
|
+
const cleanMsg = errMsg.split('<')[0].trim();
|
|
104
|
+
this.error(messages.getMessage('error.DeployFailed', [cleanMsg]));
|
|
105
|
+
}
|
|
106
|
+
this.log(`Status: ${result.status}`);
|
|
107
|
+
this.log(`Message: ${result.message}`);
|
|
108
|
+
this.log(`Request ID: ${result.requestId}`);
|
|
109
|
+
return { ...result, undeployedWorkitemIds: resolvedWorkItemIds };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=complete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complete.js","sourceRoot":"","sources":["../../../../src/commands/devops/promotion/complete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Org } from '@salesforce/core';
|
|
2
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
3
|
+
import { RequestStatusResult } from '../../../utils/getRequestStatus.js';
|
|
4
|
+
export default class DevopsRequestStatus extends SfCommand<RequestStatusResult> {
|
|
5
|
+
static readonly summary: string;
|
|
6
|
+
static readonly description: string;
|
|
7
|
+
static readonly examples: string[];
|
|
8
|
+
static readonly flags: {
|
|
9
|
+
'target-org': import("@oclif/core/interfaces").OptionFlag<Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
'request-token': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<RequestStatusResult>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026, Salesforce, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Messages } from '@salesforce/core';
|
|
17
|
+
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
18
|
+
import { getRequestStatus } from '../../../utils/getRequestStatus.js';
|
|
19
|
+
import { colorStatus } from '../../../common/outputService/outputUtils.js';
|
|
20
|
+
import { AsyncOperationStatus } from '../../../common/types.js';
|
|
21
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
22
|
+
const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.request.status');
|
|
23
|
+
const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
|
|
24
|
+
export default class DevopsRequestStatus extends SfCommand {
|
|
25
|
+
static summary = messages.getMessage('summary');
|
|
26
|
+
static description = messages.getMessage('description');
|
|
27
|
+
static examples = messages.getMessages('examples');
|
|
28
|
+
static flags = {
|
|
29
|
+
'target-org': Flags.requiredOrg(),
|
|
30
|
+
'api-version': Flags.orgApiVersion(),
|
|
31
|
+
'request-token': Flags.string({
|
|
32
|
+
summary: messages.getMessage('flags.request-token.summary'),
|
|
33
|
+
required: true,
|
|
34
|
+
char: 'i',
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
async run() {
|
|
38
|
+
const { flags } = await this.parse(DevopsRequestStatus);
|
|
39
|
+
const org = flags['target-org'];
|
|
40
|
+
const connection = org.getConnection(flags['api-version']);
|
|
41
|
+
const requestToken = flags['request-token'];
|
|
42
|
+
let result;
|
|
43
|
+
try {
|
|
44
|
+
result = await getRequestStatus(connection, requestToken);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
48
|
+
if (errMsg.includes('sObject type') && errMsg.includes('is not supported')) {
|
|
49
|
+
this.error(commonErrorMessages.getMessage('error.DevopsCenterNotEnabled'));
|
|
50
|
+
}
|
|
51
|
+
if (errMsg.startsWith('RequestNotFound:') || errMsg.includes('entity is deleted')) {
|
|
52
|
+
this.error(messages.getMessage('error.RequestNotFound', [requestToken]));
|
|
53
|
+
}
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
const statusStr = Object.values(AsyncOperationStatus).includes(result.status)
|
|
57
|
+
? colorStatus(result.status)
|
|
58
|
+
: result.status;
|
|
59
|
+
this.log(` Request Token: ${result.requestToken}`);
|
|
60
|
+
this.log(` ID: ${result.id}`);
|
|
61
|
+
this.log(` Status: ${statusStr}`);
|
|
62
|
+
if (result.message)
|
|
63
|
+
this.log(` Message: ${result.message}`);
|
|
64
|
+
if (result.errorDetails)
|
|
65
|
+
this.log(` Error Details: ${result.errorDetails}`);
|
|
66
|
+
if (result.requestCompletionDate)
|
|
67
|
+
this.log(` Completion Date: ${result.requestCompletionDate}`);
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/commands/devops/request/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Org } from '@salesforce/core';
|
|
2
2
|
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
3
3
|
import { CreatePullRequestResult } from '../../../utils/createPullRequest.js';
|
|
4
|
-
export default class
|
|
4
|
+
export default class DevopsReviewCreate extends SfCommand<CreatePullRequestResult> {
|
|
5
5
|
static readonly summary: string;
|
|
6
6
|
static readonly description: string;
|
|
7
7
|
static readonly examples: string[];
|
|
@@ -17,9 +17,9 @@ import { Messages } from '@salesforce/core';
|
|
|
17
17
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
18
18
|
import { createPullRequest, fetchWorkItemDetail, } from '../../../utils/createPullRequest.js';
|
|
19
19
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
20
|
-
const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.
|
|
20
|
+
const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.review.create');
|
|
21
21
|
const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
|
|
22
|
-
export default class
|
|
22
|
+
export default class DevopsReviewCreate extends SfCommand {
|
|
23
23
|
static summary = messages.getMessage('summary');
|
|
24
24
|
static description = messages.getMessage('description');
|
|
25
25
|
static examples = messages.getMessages('examples');
|
|
@@ -38,7 +38,7 @@ export default class DevopsPullRequestCreate extends SfCommand {
|
|
|
38
38
|
}),
|
|
39
39
|
};
|
|
40
40
|
async run() {
|
|
41
|
-
const { flags } = await this.parse(
|
|
41
|
+
const { flags } = await this.parse(DevopsReviewCreate);
|
|
42
42
|
const org = flags['target-org'];
|
|
43
43
|
const connection = org.getConnection(flags['api-version']);
|
|
44
44
|
const filter = flags['work-item-name'] ? { name: flags['work-item-name'] } : { id: flags['work-item-id'] };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/devops/review/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ import { Messages } from '@salesforce/core';
|
|
|
18
18
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
19
19
|
import { addStageEnvironment } from '../../../../utils/addStageEnvironment.js';
|
|
20
20
|
import { fetchPipelineStages } from '../../../../utils/pipelineUtils.js';
|
|
21
|
+
import { validateSalesforceId } from '../../../../utils/soqlUtils.js';
|
|
21
22
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
22
23
|
const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.stage.environment.add');
|
|
23
24
|
const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
|
|
@@ -84,6 +85,7 @@ export default class DevopsStageEnvironmentAdd extends SfCommand {
|
|
|
84
85
|
if (!stages.some((s) => s.Id === stageId)) {
|
|
85
86
|
this.error(messages.getMessage('error.StageNotFound', [stageId, pipelineId]));
|
|
86
87
|
}
|
|
88
|
+
validateSalesforceId(pipelineId, 'pipeline');
|
|
87
89
|
const pipelineQueryResult = await connection.query(`SELECT IsActive FROM DevopsPipeline WHERE Id = '${pipelineId}' LIMIT 1`);
|
|
88
90
|
const pipelineRecord = (pipelineQueryResult.records ?? [])[0];
|
|
89
91
|
if (pipelineRecord?.IsActive) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/devops/stage/environment/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAO,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAsC,MAAM,0CAA0C,CAAC;AACnH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/devops/stage/environment/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Org } from '@salesforce/core';
|
|
2
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
3
|
+
import { DeleteStageEnvironmentResult } from '../../../../utils/deleteStageEnvironment.js';
|
|
4
|
+
export default class DevopsStageEnvironmentDelete extends SfCommand<DeleteStageEnvironmentResult> {
|
|
5
|
+
static readonly summary: string;
|
|
6
|
+
static readonly description: string;
|
|
7
|
+
static readonly examples: string[];
|
|
8
|
+
static readonly flags: {
|
|
9
|
+
'target-org': import("@oclif/core/interfaces").OptionFlag<Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
'pipeline-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
'environment-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<DeleteStageEnvironmentResult>;
|
|
15
|
+
}
|
|
@@ -15,12 +15,11 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Messages } from '@salesforce/core';
|
|
17
17
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
18
|
-
import {
|
|
19
|
-
import { fetchPipelineStages } from '../../../utils/pipelineUtils.js';
|
|
18
|
+
import { deleteStageEnvironment } from '../../../../utils/deleteStageEnvironment.js';
|
|
20
19
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
21
|
-
const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.
|
|
20
|
+
const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.stage.environment.delete');
|
|
22
21
|
const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
|
|
23
|
-
export default class
|
|
22
|
+
export default class DevopsStageEnvironmentDelete extends SfCommand {
|
|
24
23
|
static summary = messages.getMessage('summary');
|
|
25
24
|
static description = messages.getMessage('description');
|
|
26
25
|
static examples = messages.getMessages('examples');
|
|
@@ -32,56 +31,45 @@ export default class DevopsPipelineActivate extends SfCommand {
|
|
|
32
31
|
required: true,
|
|
33
32
|
char: undefined,
|
|
34
33
|
}),
|
|
34
|
+
'environment-id': Flags.salesforceId({
|
|
35
|
+
summary: messages.getMessage('flags.environment-id.summary'),
|
|
36
|
+
required: true,
|
|
37
|
+
char: 'e',
|
|
38
|
+
}),
|
|
35
39
|
};
|
|
36
40
|
async run() {
|
|
37
|
-
const { flags } = await this.parse(
|
|
41
|
+
const { flags } = await this.parse(DevopsStageEnvironmentDelete);
|
|
38
42
|
const org = flags['target-org'];
|
|
39
43
|
const connection = org.getConnection(flags['api-version']);
|
|
40
44
|
const pipelineId = flags['pipeline-id'];
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
stages = await fetchPipelineStages(connection, pipelineId);
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
const errMsg = error instanceof Error ? error.message : String(error);
|
|
47
|
-
if (errMsg.includes('sObject type') && errMsg.includes('is not supported')) {
|
|
48
|
-
this.error(commonErrorMessages.getMessage('error.DevopsCenterNotEnabled'));
|
|
49
|
-
}
|
|
50
|
-
throw error;
|
|
51
|
-
}
|
|
52
|
-
if (stages.length === 0) {
|
|
53
|
-
this.error(messages.getMessage('error.NoStages', [pipelineId]));
|
|
54
|
-
}
|
|
45
|
+
const environmentId = flags['environment-id'];
|
|
46
|
+
// pipeline-id and environment-id are already validated by Flags.salesforceId()
|
|
55
47
|
const pipelineQueryResult = await connection.query(`SELECT IsActive FROM DevopsPipeline WHERE Id = '${pipelineId}' LIMIT 1`);
|
|
56
48
|
const pipelineRecord = (pipelineQueryResult.records ?? [])[0];
|
|
57
49
|
if (pipelineRecord?.IsActive) {
|
|
58
|
-
this.error(messages.getMessage('error.
|
|
50
|
+
this.error(messages.getMessage('error.PipelineAlreadyActive', [pipelineId]));
|
|
59
51
|
}
|
|
60
52
|
let result;
|
|
61
53
|
try {
|
|
62
|
-
result = await
|
|
63
|
-
result.stageCount = stages.length;
|
|
54
|
+
result = await deleteStageEnvironment(connection, environmentId);
|
|
64
55
|
}
|
|
65
56
|
catch (error) {
|
|
66
57
|
const errMsg = error instanceof Error ? error.message : String(error);
|
|
67
58
|
if (errMsg.includes('sObject type') && errMsg.includes('is not supported')) {
|
|
68
59
|
this.error(commonErrorMessages.getMessage('error.DevopsCenterNotEnabled'));
|
|
69
60
|
}
|
|
70
|
-
if (errMsg.includes('
|
|
71
|
-
this.error(messages.getMessage('error.
|
|
61
|
+
if (errMsg.includes('entity is deleted')) {
|
|
62
|
+
this.error(messages.getMessage('error.EnvironmentNotFound', [environmentId]));
|
|
72
63
|
}
|
|
73
64
|
throw error;
|
|
74
65
|
}
|
|
75
66
|
if (result.success) {
|
|
76
|
-
this.log(
|
|
77
|
-
this.log(` Pipeline ID: ${pipelineId}`);
|
|
78
|
-
this.log(` Status: ${result.status ?? 'Active'}`);
|
|
79
|
-
this.log(` Stages: ${result.stageCount ?? stages.length}`);
|
|
67
|
+
this.log(`Successfully deleted environment ${environmentId}.`);
|
|
80
68
|
}
|
|
81
69
|
else {
|
|
82
|
-
this.error(`Failed to
|
|
70
|
+
this.error(`Failed to delete environment: ${result.error ?? ''}`);
|
|
83
71
|
}
|
|
84
72
|
return result;
|
|
85
73
|
}
|
|
86
74
|
}
|
|
87
|
-
//# sourceMappingURL=
|
|
75
|
+
//# sourceMappingURL=delete.js.map
|