Skip to content

Commit 2ea0c9d

Browse files
authored
Merge pull request #5 from dcarrot2/feat/package-manager
feat() - add wrapper service to determine which package manager to use
2 parents facb45a + 1040c8a commit 2ea0c9d

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

lib/declarations.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,7 @@ interface IOptions extends IRelease, IDeviceIdentifier, IJustLaunch, IAvd, IAvai
506506
framework: string;
507507
frameworkName: string;
508508
frameworkVersion: string;
509+
yarn: string,
509510
ipa: string;
510511
tsc: boolean;
511512
ts: boolean;

lib/options.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ export class Options {
7171
tsc: { type: OptionType.Boolean },
7272
ts: { type: OptionType.Boolean },
7373
typescript: { type: OptionType.Boolean },
74+
yarn: { type: OptionType.Boolean },
7475
androidTypings: { type: OptionType.Boolean },
7576
bundle: { type: OptionType.String },
7677
all: { type: OptionType.Boolean },

lib/package-manager.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
2+
3+
export class PackageManager implements INodePackageManager {
4+
private packageManager: INodePackageManager;
5+
6+
constructor(
7+
private $npm: INodePackageManager,
8+
private $options: IOptions,
9+
private $yarn: INodePackageManager
10+
) {
11+
this.packageManager = this._determinePackageManager();
12+
}
13+
14+
public install(packageName: string, pathToSave: string, config: INodePackageManagerInstallOptions): Promise<INpmInstallResultInfo> {
15+
return this.packageManager.install(packageName, pathToSave, config);
16+
}
17+
uninstall(packageName: string, config?: IDictionary<string | boolean>, path?: string): Promise<string> {
18+
return this.packageManager.uninstall(packageName, config, path);
19+
}
20+
view(packageName: string, config: Object): Promise<any> {
21+
return this.packageManager.view(packageName, config);
22+
}
23+
search(filter: string[], config: IDictionary<string | boolean>): Promise<string> {
24+
return this.packageManager.search(filter, config);
25+
}
26+
searchNpms(keyword: string): Promise<INpmsResult> {
27+
return this.packageManager.searchNpms(keyword);
28+
}
29+
getRegistryPackageData(packageName: string): Promise<any> {
30+
return this.packageManager.getRegistryPackageData(packageName);
31+
}
32+
getCachePath(): Promise<string> {
33+
return this.packageManager.getCachePath();
34+
}
35+
36+
private _determinePackageManager(): INodePackageManager {
37+
return this.$options.yarn ? this.$yarn : this.$npm;
38+
}
39+
}
40+
41+
$injector.register('packageManager', PackageManager);

0 commit comments

Comments
 (0)