@@ -9,8 +9,10 @@ export class InstallCommand implements ICommand {
9
9
constructor ( private $fs : IFileSystem ,
10
10
private $errors : IErrors ,
11
11
private $logger : ILogger ,
12
- private $options : IOptions ,
13
- private $injector : IInjector ,
12
+ private $platformsData : IPlatformsData ,
13
+ private $platformService : IPlatformService ,
14
+ private $projectData : IProjectData ,
15
+ private $projectDataService : IProjectDataService ,
14
16
private $staticConfig : IStaticConfig ) { }
15
17
16
18
public enableHooks = false ;
@@ -19,66 +21,16 @@ export class InstallCommand implements ICommand {
19
21
20
22
public execute ( args : string [ ] ) : IFuture < void > {
21
23
return ( ( ) => {
22
- let projectFilePath = this . getProjectFilePath ( args [ 0 ] ) ;
23
- let projectData = this . getProjectData ( projectFilePath ) . wait ( ) ;
24
- let projectName = projectData . id . split ( "." ) [ 2 ] ;
24
+ this . $projectDataService . initialize ( this . $projectData . projectDir ) ;
25
25
26
- this . $injector . resolve ( "projectService" ) . createProject ( projectName ) . wait ( ) ;
27
-
28
- this . $options . path = path . join ( this . $options . path || path . resolve ( "." ) , projectName ) ;
29
-
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 ] ;
26
+ _ . each ( this . $platformsData . platformsNames , platform => {
27
+ let platformData = this . $platformsData . getPlatformData ( platform ) ;
28
+ let frameworkPackageData = this . $projectDataService . getValue ( platformData . frameworkPackageName ) . wait ( ) ;
37
29
if ( frameworkPackageData && frameworkPackageData . version ) {
38
- $platformService . addPlatforms ( [ `${ platform } @${ frameworkPackageData . version } ` ] ) . wait ( ) ;
30
+ this . $platformService . addPlatforms ( [ `${ platform } @${ frameworkPackageData . version } ` ] ) . wait ( ) ;
39
31
}
40
- } ) ;
41
-
32
+ } ) ;
42
33
} ) . future < void > ( ) ( ) ;
43
34
}
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
- }
83
35
}
84
36
$injector . registerCommand ( "install" , InstallCommand ) ;
0 commit comments