1
1
2
- import { exported } from './common/decorators' ;
2
+ import { cache , exported , invokeInit } from './common/decorators' ;
3
3
export class PackageManager implements INodePackageManager {
4
4
private packageManager : INodePackageManager ;
5
5
@@ -9,47 +9,62 @@ export class PackageManager implements INodePackageManager {
9
9
private $options : IOptions ,
10
10
private $yarn : INodePackageManager ,
11
11
private $userSettingsService : IUserSettingsService
12
- ) {
13
- this . _determinePackageManager ( ) ;
12
+ ) { }
13
+
14
+ @cache ( )
15
+ protected async init ( ) : Promise < void > {
16
+ this . packageManager = await this . _determinePackageManager ( ) ;
14
17
}
18
+
15
19
@exported ( "packageManager" )
20
+ @invokeInit ( )
16
21
public install ( packageName : string , pathToSave : string , config : INodePackageManagerInstallOptions ) : Promise < INpmInstallResultInfo > {
17
22
return this . packageManager . install ( packageName , pathToSave , config ) ;
18
23
}
19
24
@exported ( "packageManager" )
25
+ @invokeInit ( )
20
26
public uninstall ( packageName : string , config ?: IDictionary < string | boolean > , path ?: string ) : Promise < string > {
21
27
return this . packageManager . uninstall ( packageName , config , path ) ;
22
28
}
23
29
@exported ( "packageManager" )
30
+ @invokeInit ( )
24
31
public view ( packageName : string , config : Object ) : Promise < any > {
25
32
return this . packageManager . view ( packageName , config ) ;
26
33
}
27
34
@exported ( "packageManager" )
35
+ @invokeInit ( )
28
36
public search ( filter : string [ ] , config : IDictionary < string | boolean > ) : Promise < string > {
29
37
return this . packageManager . search ( filter , config ) ;
30
38
}
39
+
40
+ @invokeInit ( )
31
41
public searchNpms ( keyword : string ) : Promise < INpmsResult > {
32
42
return this . packageManager . searchNpms ( keyword ) ;
33
43
}
44
+
45
+ @invokeInit ( )
34
46
public getRegistryPackageData ( packageName : string ) : Promise < any > {
35
47
return this . packageManager . getRegistryPackageData ( packageName ) ;
36
48
}
49
+
50
+ @invokeInit ( )
37
51
public getCachePath ( ) : Promise < string > {
38
52
return this . packageManager . getCachePath ( ) ;
39
53
}
40
54
41
- private _determinePackageManager ( ) : void {
42
- this . $userSettingsService . getSettingValue ( 'packageManager' )
43
- . then ( ( pm : string ) => {
44
- if ( pm === 'yarn' || this . $options . yarn ) {
45
- this . packageManager = this . $yarn ;
46
- } else {
47
- this . packageManager = this . $npm ;
48
- }
49
- } )
50
- . catch ( ( err ) => {
55
+ private async _determinePackageManager ( ) : Promise < INodePackageManager > {
56
+ let pm = null ;
57
+ try {
58
+ pm = await this . $userSettingsService . getSettingValue ( 'packageManager' ) ;
59
+ } catch ( err ) {
51
60
this . $errors . fail ( `Unable to read package manager config from user settings ${ err } ` ) ;
52
- } ) ;
61
+ }
62
+
63
+ if ( pm === 'yarn' || this . $options . yarn ) {
64
+ return this . $yarn ;
65
+ } else {
66
+ return this . $npm ;
67
+ }
53
68
}
54
69
}
55
70
0 commit comments