Skip to content

Commit 90d6e95

Browse files
committed
Merge branch 'feat/pkg-mngr-impl' into refactor/pkg-mgr-replace
2 parents 80f2d64 + 1364bec commit 90d6e95

File tree

2 files changed

+33
-16
lines changed

2 files changed

+33
-16
lines changed

lib/package-manager.ts

+29-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
import { exported } from './common/decorators';
2+
import { cache, exported, invokeInit } from './common/decorators';
33
export 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

lib/yarn-package-manager.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ export class YarnPackageManager extends BasePackageManager implements INodePacka
7979

8080
@exported("yarn")
8181
public search(filter: string[], config: IDictionary<string | boolean>): Promise<string> {
82-
throw new Error("Method not implemented. Yarn does not support searching for packages in the registry.");
82+
this.$errors.fail("Method not implemented. Yarn does not support searching for packages in the registry.");
83+
return null;
8384
}
8485

8586
public async searchNpms(keyword: string): Promise<INpmsResult> {
@@ -102,7 +103,8 @@ export class YarnPackageManager extends BasePackageManager implements INodePacka
102103

103104
@exported("yarn")
104105
getCachePath(): Promise<string> {
105-
throw new Error("Method not implemented.");
106+
this.$errors.fail("Method not implemented");
107+
return null;
106108
}
107109
}
108110

0 commit comments

Comments
 (0)