11///<reference path="../.d.ts"/>
22"use strict" ;
33
4- import path = require( "path" ) ;
5-
64export 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