11
2- import { exported } from './common/decorators' ;
2+ import { cache , exported , invokeInit } from './common/decorators' ;
33export class PackageManager implements INodePackageManager {
44 private packageManager : INodePackageManager ;
55
@@ -9,47 +9,62 @@ export class PackageManager implements INodePackageManager {
99 private $options : IOptions ,
1010 private $yarn : INodePackageManager ,
1111 private $userSettingsService : IUserSettingsService
12- ) {
13- this . _determinePackageManager ( ) ;
12+ ) { }
13+
14+ @cache ( )
15+ protected async init ( ) : Promise < void > {
16+ this . packageManager = await this . _determinePackageManager ( ) ;
1417 }
18+
1519 @exported ( "packageManager" )
20+ @invokeInit ( )
1621 public install ( packageName : string , pathToSave : string , config : INodePackageManagerInstallOptions ) : Promise < INpmInstallResultInfo > {
1722 return this . packageManager . install ( packageName , pathToSave , config ) ;
1823 }
1924 @exported ( "packageManager" )
25+ @invokeInit ( )
2026 public uninstall ( packageName : string , config ?: IDictionary < string | boolean > , path ?: string ) : Promise < string > {
2127 return this . packageManager . uninstall ( packageName , config , path ) ;
2228 }
2329 @exported ( "packageManager" )
30+ @invokeInit ( )
2431 public view ( packageName : string , config : Object ) : Promise < any > {
2532 return this . packageManager . view ( packageName , config ) ;
2633 }
2734 @exported ( "packageManager" )
35+ @invokeInit ( )
2836 public search ( filter : string [ ] , config : IDictionary < string | boolean > ) : Promise < string > {
2937 return this . packageManager . search ( filter , config ) ;
3038 }
39+
40+ @invokeInit ( )
3141 public searchNpms ( keyword : string ) : Promise < INpmsResult > {
3242 return this . packageManager . searchNpms ( keyword ) ;
3343 }
44+
45+ @invokeInit ( )
3446 public getRegistryPackageData ( packageName : string ) : Promise < any > {
3547 return this . packageManager . getRegistryPackageData ( packageName ) ;
3648 }
49+
50+ @invokeInit ( )
3751 public getCachePath ( ) : Promise < string > {
3852 return this . packageManager . getCachePath ( ) ;
3953 }
4054
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 ) {
5160 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+ }
5368 }
5469}
5570
0 commit comments