@@ -87,10 +87,10 @@ export class Install extends SfdxCommand {
87
87
88
88
public async run ( ) : Promise < PackageInstallRequest > {
89
89
const noPrompt = this . flags . noprompt as boolean ;
90
- const connection = ( this . connection = this . org . getConnection ( ) ) ;
91
- const pkg = ( this . pkg = new Package ( { connection } ) ) ;
90
+ this . connection = this . org . getConnection ( ) ;
91
+ this . pkg = new Package ( { connection : this . connection } ) ;
92
92
93
- const apiVersion = parseInt ( connection . getApiVersion ( ) , 10 ) ;
93
+ const apiVersion = parseInt ( this . connection . getApiVersion ( ) , 10 ) ;
94
94
if ( apiVersion < 36 ) {
95
95
throw messages . createError ( 'apiVersionTooLow' ) ;
96
96
}
@@ -105,7 +105,7 @@ export class Install extends SfdxCommand {
105
105
106
106
// eslint-disable-next-line @typescript-eslint/require-await
107
107
Lifecycle . getInstance ( ) . on ( 'PackageInstallRequest:warning' , async ( warningMsg : string ) => {
108
- this . display ( warningMsg ) ;
108
+ this . ux . log ( warningMsg ) ;
109
109
} ) ;
110
110
111
111
// If the user has specified --upgradetype Delete, then prompt for confirmation
@@ -128,33 +128,25 @@ export class Install extends SfdxCommand {
128
128
pollingTimeout : this . flags . wait as Duration ,
129
129
} ;
130
130
131
- if ( ! this . flags . json ) {
132
- // eslint-disable-next-line @typescript-eslint/require-await
133
- Lifecycle . getInstance ( ) . on ( 'PackageInstallRequest:status' , async ( piRequest : PackageInstallRequest ) => {
134
- this . ux . log ( messages . getMessage ( 'packageInstallPolling' , [ piRequest ?. Status ] ) ) ;
135
- } ) ;
136
- }
131
+ // eslint-disable-next-line @typescript-eslint/require-await
132
+ Lifecycle . getInstance ( ) . on ( 'PackageInstallRequest:status' , async ( piRequest : PackageInstallRequest ) => {
133
+ this . ux . log ( messages . getMessage ( 'packageInstallPolling' , [ piRequest ?. Status ] ) ) ;
134
+ } ) ;
137
135
}
138
136
139
- const pkgInstallRequest = await pkg . install ( request , installOptions ) ;
137
+ const pkgInstallRequest = await this . pkg . install ( request , installOptions ) ;
140
138
const { Status } = pkgInstallRequest ;
141
139
if ( Status === 'SUCCESS' ) {
142
- this . display ( messages . getMessage ( 'packageInstallSuccess' , [ this . flags . package ] ) ) ;
140
+ this . ux . log ( messages . getMessage ( 'packageInstallSuccess' , [ this . flags . package ] ) ) ;
143
141
} else if ( [ 'IN_PROGRESS' , 'UNKNOWN' ] . includes ( Status ) ) {
144
- this . display ( messages . getMessage ( 'packageInstallInProgress' , [ pkgInstallRequest . Id , this . org . getUsername ( ) ] ) ) ;
142
+ this . ux . log ( messages . getMessage ( 'packageInstallInProgress' , [ pkgInstallRequest . Id , this . org . getUsername ( ) ] ) ) ;
145
143
} else {
146
144
throw messages . createError ( 'packageInstallError' , [ this . parseInstallErrors ( pkgInstallRequest ) ] ) ;
147
145
}
148
146
149
147
return pkgInstallRequest ;
150
148
}
151
149
152
- private display ( message : string ) : void {
153
- if ( ! this . flags . json ) {
154
- this . ux . log ( message ) ;
155
- }
156
- }
157
-
158
150
private async confirmUpgradeType ( request : PackageInstallCreateRequest , noPrompt : boolean ) : Promise < void > {
159
151
const pkgType = await getPackageTypeBy04t ( request . SubscriberPackageVersionKey , this . connection , request . Password ) ;
160
152
if ( pkgType === 'Unlocked' && ! noPrompt ) {
@@ -180,13 +172,11 @@ export class Install extends SfdxCommand {
180
172
}
181
173
182
174
private async waitForPublish ( request : PackageInstallCreateRequest ) : Promise < void > {
183
- if ( ! this . flags . json ) {
184
- // eslint-disable-next-line @typescript-eslint/require-await
185
- Lifecycle . getInstance ( ) . on ( 'SubscriberPackageVersion:status' , async ( status : string ) => {
186
- const tokens = status ? [ ` Status = ${ status } ` ] : [ ] ;
187
- this . ux . log ( messages . getMessage ( 'publishWaitProgress' , tokens ) ) ;
188
- } ) ;
189
- }
175
+ // eslint-disable-next-line @typescript-eslint/require-await
176
+ Lifecycle . getInstance ( ) . on ( 'SubscriberPackageVersion:status' , async ( status : string ) => {
177
+ const tokens = status ? [ ` Status = ${ status } ` ] : [ ] ;
178
+ this . ux . log ( messages . getMessage ( 'publishWaitProgress' , tokens ) ) ;
179
+ } ) ;
190
180
191
181
// wait for the Subscriber Package Version ID to become available in the target org
192
182
try {
@@ -225,6 +215,7 @@ export class Install extends SfdxCommand {
225
215
let resolvedId : string ;
226
216
227
217
if ( idOrAlias . startsWith ( '04t' ) ) {
218
+ Package . validateId ( idOrAlias , 'SubscriberPackageVersionId' ) ;
228
219
resolvedId = idOrAlias ;
229
220
} else {
230
221
let packageAliases : { [ k : string ] : string } ;
@@ -238,13 +229,7 @@ export class Install extends SfdxCommand {
238
229
if ( ! resolvedId ) {
239
230
throw messages . createError ( 'packageAliasNotFound' , [ idOrAlias ] ) ;
240
231
}
241
- if ( ! resolvedId . startsWith ( '04t' ) ) {
242
- throw messages . createError ( 'invalidPackageId' , [ resolvedId ] ) ;
243
- }
244
- }
245
-
246
- if ( ! [ 15 , 18 ] . includes ( resolvedId . length ) ) {
247
- throw messages . createError ( 'invalidIdLength' , [ resolvedId ] ) ;
232
+ Package . validateId ( resolvedId , 'SubscriberPackageVersionId' ) ;
248
233
}
249
234
250
235
return resolvedId ;
0 commit comments