Skip to content

Commit c81f083

Browse files
fix: only required refactoring - waiting on packaging to enable na40 to convert
1 parent 1296ae3 commit c81f083

File tree

1 file changed

+58
-4
lines changed

1 file changed

+58
-4
lines changed

src/commands/force/package/beta/convert.ts

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,20 @@
88
import * as os from 'os';
99
import { flags, FlagsConfig, SfdxCommand } from '@salesforce/command';
1010
import { Duration } from '@salesforce/kit';
11-
import { Messages } from '@salesforce/core';
11+
import { Lifecycle, Messages, SfProject } from '@salesforce/core';
12+
import {
13+
convertCamelCaseStringToSentence,
14+
INSTALL_URL_BASE,
15+
Package,
16+
PackageVersionCreateEventData,
17+
PackageVersionCreateRequestResult,
18+
PackagingSObjects,
19+
} from '@salesforce/packaging';
20+
import Package2VersionStatus = PackagingSObjects.Package2VersionStatus;
1221

1322
Messages.importMessagesDirectory(__dirname);
1423
const messages = Messages.loadMessages('@salesforce/plugin-packaging', 'package_convert');
24+
const pvcMessages = Messages.loadMessages('@salesforce/plugin-packaging', 'package_version_create');
1525

1626
export class PackageConvert extends SfdxCommand {
1727
public static readonly description = messages.getMessage('cliDescription');
@@ -52,8 +62,52 @@ export class PackageConvert extends SfdxCommand {
5262
}),
5363
};
5464

55-
// eslint-disable-next-line @typescript-eslint/require-await
56-
public async run(): Promise<unknown> {
57-
throw new Error('Beta command not yet implemented');
65+
public async run(): Promise<PackageVersionCreateRequestResult> {
66+
// eslint-disable-next-line @typescript-eslint/require-await
67+
Lifecycle.getInstance().on(Package2VersionStatus.inProgress, async (data: PackageVersionCreateEventData) => {
68+
this.ux.log(
69+
`Request in progress. Sleeping 30 seconds. Will wait a total of ${
70+
data.timeRemaining.seconds
71+
} more seconds before timing out. Current Status='${convertCamelCaseStringToSentence(
72+
data.packageVersionCreateRequestResult.Status
73+
)}'`
74+
);
75+
});
76+
77+
// eslint-disable-next-line @typescript-eslint/require-await
78+
Lifecycle.getInstance().on(Package2VersionStatus.success, async () => {
79+
this.ux.log('SUCCESS');
80+
});
81+
82+
const pkg = new Package({ connection: this.hubOrg.getConnection() });
83+
const result = await pkg.convert(
84+
this.flags.package,
85+
{
86+
wait: this.flags.wait as Duration,
87+
installationKey: this.flags.installationkey as string,
88+
installationKeyBypass: this.flags.installationkeybypass as boolean,
89+
buildInstance: this.flags.buildinstance as string,
90+
},
91+
SfProject.getInstance()
92+
);
93+
94+
switch (result.Status) {
95+
case 'Error':
96+
throw result.Error.length > 0 ? result.Error.join('\n') : pvcMessages.getMessage('unknownError');
97+
case 'Success':
98+
this.ux.log(
99+
pvcMessages.getMessage(result.Status, [
100+
result.Id,
101+
result.SubscriberPackageVersionId,
102+
INSTALL_URL_BASE.toString(),
103+
result.SubscriberPackageVersionId,
104+
])
105+
);
106+
break;
107+
default:
108+
this.ux.log(pvcMessages.getMessage('InProgress', [convertCamelCaseStringToSentence(result.Status), result.Id]));
109+
}
110+
111+
return result;
58112
}
59113
}

0 commit comments

Comments
 (0)