Skip to content

Commit f95a53a

Browse files
FatmeFatme
Fatme
authored and
Fatme
committed
Merge pull request #603 from NativeScript/fatme/install
Do not init new project when install command is executed
2 parents 62b7d1a + 30ed33f commit f95a53a

File tree

1 file changed

+10
-64
lines changed

1 file changed

+10
-64
lines changed

lib/commands/install.ts

+10-64
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,30 @@
11
///<reference path="../.d.ts"/>
22
"use strict";
33

4-
import path = require("path");
5-
64
export class InstallCommand implements ICommand {
75
private _projectData: any;
86

9-
constructor(private $fs: IFileSystem,
10-
private $errors: IErrors,
11-
private $logger: ILogger,
12-
private $options: IOptions,
13-
private $injector: IInjector,
14-
private $staticConfig: IStaticConfig) { }
7+
constructor(private $platformsData: IPlatformsData,
8+
private $platformService: IPlatformService,
9+
private $projectData: IProjectData,
10+
private $projectDataService: IProjectDataService) { }
1511

1612
public enableHooks = false;
1713

1814
public allowedParameters: ICommandParameter[] = [];
1915

2016
public execute(args: string[]): IFuture<void> {
2117
return (() => {
22-
let projectFilePath = this.getProjectFilePath(args[0]);
23-
let projectData = this.getProjectData(projectFilePath).wait();
24-
let projectName = projectData.id.split(".")[2];
25-
26-
this.$injector.resolve("projectService").createProject(projectName).wait();
27-
28-
this.$options.path = path.join(this.$options.path || path.resolve("."), projectName);
18+
this.$projectDataService.initialize(this.$projectData.projectDir);
2919

30-
this.$logger.info("Adding platforms...");
31-
32-
let $platformsData = this.$injector.resolve("platformsData");
33-
let $platformService = this.$injector.resolve("platformService");
34-
_.each($platformsData.platformsNames, platform => {
35-
let platformData = $platformsData.getPlatformData(platform);
36-
let frameworkPackageData = projectData[platformData.frameworkPackageName];
20+
_.each(this.$platformsData.platformsNames, platform => {
21+
let platformData = this.$platformsData.getPlatformData(platform);
22+
let frameworkPackageData = this.$projectDataService.getValue(platformData.frameworkPackageName).wait();
3723
if(frameworkPackageData && frameworkPackageData.version) {
38-
$platformService.addPlatforms([`${platform}@${frameworkPackageData.version}`]).wait();
24+
this.$platformService.addPlatforms([`${platform}@${frameworkPackageData.version}`]).wait();
3925
}
40-
});
41-
26+
});
4227
}).future<void>()();
4328
}
44-
45-
public canExecute(args: string[]): IFuture<boolean> {
46-
return (() => {
47-
let projectFilePath = this.getProjectFilePath(args[0]);
48-
let errorMessage = args[0] ? "The provided path doesn't contain package.json." :
49-
"The current directory doesn't contain package.json file. Execute the command in directory which contains package.json file or specify the path to package.json file.";
50-
51-
if(!this.$fs.exists(projectFilePath).wait()) {
52-
this.$errors.failWithoutHelp(errorMessage);
53-
}
54-
55-
let projectData = this.getProjectData(projectFilePath).wait();
56-
if(!projectData) {
57-
this.$errors.failWithoutHelp("Invalid project file. Verify that the specified package.json file contains a nativescript key and try again.");
58-
}
59-
60-
if(!projectData.id) {
61-
this.$errors.failWithoutHelp("Invalid project file. Verify that the specified package.json file contains an id and try again.");
62-
}
63-
64-
return true;
65-
}).future<boolean>()();
66-
}
67-
68-
private getProjectFilePath(providedPath: string): string {
69-
let resolvedPath = path.resolve(providedPath || ".");
70-
return path.basename(resolvedPath) === "package.json" ? resolvedPath : path.join(resolvedPath, "package.json");
71-
}
72-
73-
private getProjectData(projectFilePath: string): IFuture<any> {
74-
return (() => {
75-
if(!this._projectData) {
76-
let fileContent = this.$fs.readJson(projectFilePath).wait();
77-
this._projectData = fileContent[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE];
78-
}
79-
80-
return this._projectData;
81-
}).future<any>()();
82-
}
8329
}
8430
$injector.registerCommand("install", InstallCommand);

0 commit comments

Comments
 (0)