@@ -7,49 +7,57 @@ import osenv = require("osenv");
77import util = require( "util" ) ;
88import helpers = require( "./../common/helpers" ) ;
99
10- export class ProjectService implements IProjectService {
11- private static DEFAULT_PROJECT_ID = "com.telerik.tns.HelloWorld" ;
12- private static DEFAULT_PROJECT_NAME = "HelloNativescript" ;
13- public static APP_FOLDER_NAME = "app" ;
14- private static APP_RESOURCES_FOLDER_NAME = "App_Resources" ;
15- public static PROJECT_FRAMEWORK_DIR = "framework" ;
16-
17- public projectData : IProjectData = null ;
10+ class ProjectData implements IProjectData {
11+ public projectDir : string ;
12+ public platformsDir : string ;
13+ public projectFilePath : string ;
14+ public projectId : string ;
15+ public projectName : string ;
1816
19- constructor ( private $logger : ILogger ,
20- private $errors : IErrors ,
21- private $fs : IFileSystem ,
22- private $projectTemplatesService : IProjectTemplatesService ,
23- private $androidProjectService : IPlatformProjectService ,
24- private $iOSProjectService : IPlatformProjectService ,
17+ constructor ( private $fs : IFileSystem ,
2518 private $projectHelper : IProjectHelper ,
2619 private $config ) {
27- this . projectData = this . getProjectData ( ) . wait ( ) ;
20+ this . initializeProjectData ( ) . wait ( ) ;
2821 }
2922
30- private getProjectData ( ) : IFuture < IProjectData > {
23+ private initializeProjectData ( ) : IFuture < void > {
3124 return ( ( ) => {
32- var projectData : IProjectData = null ;
3325 var projectDir = this . $projectHelper . projectDir ;
3426
3527 if ( projectDir ) {
36- projectData = {
37- projectDir : projectDir ,
38- platformsDir : path . join ( projectDir , "platforms" ) ,
39- projectFilePath : path . join ( projectDir , this . $config . PROJECT_FILE_NAME )
40- } ;
28+ this . projectDir = projectDir ;
29+ this . platformsDir = path . join ( projectDir , "platforms" ) ;
30+ this . projectFilePath = path . join ( projectDir , this . $config . PROJECT_FILE_NAME ) ;
31+
4132 var projectFilePath = path . join ( projectDir , this . $config . PROJECT_FILE_NAME ) ;
4233
4334 if ( this . $fs . exists ( projectFilePath ) . wait ( ) ) {
4435 var fileContent = this . $fs . readJson ( projectFilePath ) . wait ( ) ;
45- projectData . projectId = fileContent . id ;
46- projectData . projectName = path . basename ( projectDir ) ;
36+ this . projectId = fileContent . id ;
37+ this . projectName = path . basename ( projectDir ) ;
4738 }
4839 }
4940
50- return projectData ;
51- } ) . future < IProjectData > ( ) ( ) ;
41+ } ) . future < void > ( ) ( ) ;
5242 }
43+ }
44+ $injector . register ( "projectData" , ProjectData ) ;
45+
46+ export class ProjectService implements IProjectService {
47+ private static DEFAULT_PROJECT_ID = "com.telerik.tns.HelloWorld" ;
48+ private static DEFAULT_PROJECT_NAME = "HelloNativescript" ;
49+ public static APP_FOLDER_NAME = "app" ;
50+ private static APP_RESOURCES_FOLDER_NAME = "App_Resources" ;
51+ public static PROJECT_FRAMEWORK_DIR = "framework" ;
52+
53+ constructor ( private $logger : ILogger ,
54+ private $errors : IErrors ,
55+ private $fs : IFileSystem ,
56+ private $projectTemplatesService : IProjectTemplatesService ,
57+ private $androidProjectService : IPlatformProjectService ,
58+ private $iOSProjectService : IPlatformProjectService ,
59+ private $projectData : IProjectData ,
60+ private $config ) { }
5361
5462 public createProject ( projectName : string , projectId : string ) : IFuture < void > {
5563 return ( ( ) => {
@@ -134,12 +142,12 @@ export class ProjectService implements IProjectService {
134142 public prepareProject ( normalizedPlatformName : string , platforms : string [ ] ) : IFuture < void > {
135143 return ( ( ) => {
136144 var platform = normalizedPlatformName . toLowerCase ( ) ;
137- var assetsDirectoryPath = path . join ( this . projectData . platformsDir , platform , "assets" ) ;
145+ var assetsDirectoryPath = path . join ( this . $ projectData. platformsDir , platform , "assets" ) ;
138146 var appResourcesDirectoryPath = path . join ( assetsDirectoryPath , ProjectService . APP_FOLDER_NAME , ProjectService . APP_RESOURCES_FOLDER_NAME ) ;
139- shell . cp ( "-r" , path . join ( this . projectData . projectDir , ProjectService . APP_FOLDER_NAME ) , assetsDirectoryPath ) ;
147+ shell . cp ( "-r" , path . join ( this . $ projectData. projectDir , ProjectService . APP_FOLDER_NAME ) , assetsDirectoryPath ) ;
140148
141149 if ( this . $fs . exists ( appResourcesDirectoryPath ) . wait ( ) ) {
142- shell . cp ( "-r" , path . join ( appResourcesDirectoryPath , normalizedPlatformName , "*" ) , path . join ( this . projectData . platformsDir , platform , "res" ) ) ;
150+ shell . cp ( "-r" , path . join ( appResourcesDirectoryPath , normalizedPlatformName , "*" ) , path . join ( this . $ projectData. platformsDir , platform , "res" ) ) ;
143151 this . $fs . deleteDirectory ( appResourcesDirectoryPath ) . wait ( ) ;
144152 }
145153
@@ -189,18 +197,18 @@ export class ProjectService implements IProjectService {
189197 break ;
190198 }
191199
192- this . executeFunctionByName ( functionName , platformProjectService , [ this . projectData ] ) . wait ( ) ;
200+ this . executeFunctionByName ( functionName , platformProjectService ) . wait ( ) ;
193201 } ) . future < void > ( ) ( ) ;
194202 }
195203
196- private executeFunctionByName ( functionName , context , args : any [ ] ) : IFuture < any > {
204+ private executeFunctionByName ( functionName , context ) : IFuture < any > {
197205 return ( ( ) => {
198206 var namespaces = functionName . split ( "." ) ;
199207 var func = namespaces . pop ( ) ;
200208 for ( var i = 0 ; i < namespaces . length ; i ++ ) {
201209 context = context [ namespaces [ i ] ] ;
202210 }
203- return context [ func ] . apply ( context , args ) . wait ( ) ;
211+ return context [ func ] . apply ( context ) . wait ( ) ;
204212 } ) . future < any > ( ) ( ) ;
205213 }
206214
@@ -220,7 +228,7 @@ export class ProjectService implements IProjectService {
220228 }
221229
222230 public ensureProject ( ) {
223- if ( this . projectData . projectDir === "" || ! this . $fs . exists ( this . projectData . projectFilePath ) . wait ( ) ) {
231+ if ( this . $ projectData. projectDir === "" || ! this . $fs . exists ( this . $ projectData. projectFilePath ) . wait ( ) ) {
224232 this . $errors . fail ( "No project found at or above '%s' and neither was a --path specified." , process . cwd ( ) ) ;
225233 }
226234 }
@@ -235,28 +243,29 @@ class AndroidProjectService implements IPlatformProjectService {
235243 private $logger : ILogger ,
236244 private $childProcess : IChildProcess ,
237245 private $projectTemplatesService : IProjectTemplatesService ,
246+ private $projectData : IProjectData ,
238247 private $propertiesParser : IPropertiesParser ) { }
239248
240- public createProject ( projectData : IProjectData ) : IFuture < void > {
249+ public createProject ( ) : IFuture < void > {
241250 return ( ( ) => {
242- this . frameworkDir = this . getFrameworkDir ( projectData ) . wait ( ) ;
243-
244- var packageName = projectData . projectId ;
245- var packageAsPath = packageName . replace ( / \. / g, path . sep ) ;
246- var projectDir = path . join ( projectData . projectDir , "platforms" , "android" ) ;
251+ var packageName = this . $projectData . projectId ;
247252
248253 this . validatePackageName ( packageName ) ;
249- this . validateProjectName ( projectData . projectName ) ;
254+ this . validateProjectName ( this . $ projectData. projectName ) ;
250255
256+ var packageAsPath = packageName . replace ( / \. / g, path . sep ) ;
257+ var projectDir = path . join ( this . $projectData . projectDir , "platforms" , "android" ) ;
258+
259+ this . frameworkDir = this . getFrameworkDir ( this . $projectData ) . wait ( ) ;
251260 this . checkRequirements ( ) . wait ( ) ;
252261
253262 var targetApi = this . getTarget ( ) . wait ( ) ;
254263
255264 // Log the values for project
256265 this . $logger . trace ( "Creating NativeScript project for the Android platform" ) ;
257266 this . $logger . trace ( "Path: %s" , projectDir ) ;
258- this . $logger . trace ( "Package: %s" , projectData . projectId ) ;
259- this . $logger . trace ( "Name: %s" , projectData . projectName ) ;
267+ this . $logger . trace ( "Package: %s" , this . $ projectData. projectId ) ;
268+ this . $logger . trace ( "Name: %s" , this . $ projectData. projectName ) ;
260269 this . $logger . trace ( "Android target: %s" , targetApi ) ;
261270
262271 this . $logger . out ( "Copying template files..." ) ;
@@ -273,13 +282,13 @@ class AndroidProjectService implements IPlatformProjectService {
273282 var activityDir = path . join ( projectDir , 'src' , packageAsPath ) ;
274283 this . $fs . createDirectory ( activityDir ) . wait ( ) ;
275284
276- this . $fs . deleteDirectory ( path . join ( projectData . platformsDir , "android" , "node_modules" ) ) . wait ( ) ;
285+ this . $fs . deleteDirectory ( path . join ( this . $ projectData. platformsDir , "android" , "node_modules" ) ) . wait ( ) ;
277286
278287 // Interpolate the activity name and package
279288 var stringsFilePath = path . join ( projectDir , 'res' , 'values' , 'strings.xml' ) ;
280- shell . sed ( '-i' , / _ _ N A M E _ _ / , projectData . projectName , stringsFilePath ) ;
281- shell . sed ( '-i' , / _ _ T I T L E _ A C T I V I T Y _ _ / , projectData . projectName , stringsFilePath ) ;
282- shell . sed ( '-i' , / _ _ N A M E _ _ / , projectData . projectName , path . join ( projectDir , '.project' ) ) ;
289+ shell . sed ( '-i' , / _ _ N A M E _ _ / , this . $ projectData. projectName , stringsFilePath ) ;
290+ shell . sed ( '-i' , / _ _ T I T L E _ A C T I V I T Y _ _ / , this . $ projectData. projectName , stringsFilePath ) ;
291+ shell . sed ( '-i' , / _ _ N A M E _ _ / , this . $ projectData. projectName , path . join ( projectDir , '.project' ) ) ;
283292 shell . sed ( '-i' , / _ _ P A C K A G E _ _ / , packageName , path . join ( projectDir , "AndroidManifest.xml" ) ) ;
284293
285294 this . runAndroidUpdate ( projectDir , targetApi ) . wait ( ) ;
@@ -289,9 +298,9 @@ class AndroidProjectService implements IPlatformProjectService {
289298 } ) . future < any > ( ) ( ) ;
290299 }
291300
292- public buildProject ( projectData : IProjectData ) : IFuture < void > {
301+ public buildProject ( ) : IFuture < void > {
293302 return ( ( ) => {
294- var projectRoot = path . join ( projectData . platformsDir , "android" ) ;
303+ var projectRoot = path . join ( this . $ projectData. platformsDir , "android" ) ;
295304 var buildConfiguration = options . release || "--debug" ;
296305 var args = this . getAntArgs ( buildConfiguration , projectRoot ) ;
297306
@@ -427,17 +436,19 @@ class AndroidProjectService implements IPlatformProjectService {
427436 }
428437$injector . register ( "androidProjectService" , AndroidProjectService ) ;
429438
430- class iOSProjectService implements IPlatformProjectService {
431- public createProject ( projectData : IProjectData ) : IFuture < void > {
439+ class IOSProjectService implements IPlatformProjectService {
440+
441+ public createProject ( ) : IFuture < void > {
432442 return ( ( ) => {
433443
434444 } ) . future < any > ( ) ( ) ;
435445 }
436446
437- public buildProject ( projectData : IProjectData ) : IFuture < void > {
447+ public buildProject ( ) : IFuture < void > {
438448 return ( ( ) => {
439449
440450 } ) . future < void > ( ) ( ) ;
441451 }
452+
442453}
443- $injector . register ( "iOSProjectService" , iOSProjectService ) ;
454+ $injector . register ( "iOSProjectService" , IOSProjectService ) ;
0 commit comments