@@ -7,49 +7,57 @@ import osenv = require("osenv");
7
7
import util = require( "util" ) ;
8
8
import helpers = require( "./../common/helpers" ) ;
9
9
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 ;
18
16
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 ,
25
18
private $projectHelper : IProjectHelper ,
26
19
private $config ) {
27
- this . projectData = this . getProjectData ( ) . wait ( ) ;
20
+ this . initializeProjectData ( ) . wait ( ) ;
28
21
}
29
22
30
- private getProjectData ( ) : IFuture < IProjectData > {
23
+ private initializeProjectData ( ) : IFuture < void > {
31
24
return ( ( ) => {
32
- var projectData : IProjectData = null ;
33
25
var projectDir = this . $projectHelper . projectDir ;
34
26
35
27
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
+
41
32
var projectFilePath = path . join ( projectDir , this . $config . PROJECT_FILE_NAME ) ;
42
33
43
34
if ( this . $fs . exists ( projectFilePath ) . wait ( ) ) {
44
35
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 ) ;
47
38
}
48
39
}
49
40
50
- return projectData ;
51
- } ) . future < IProjectData > ( ) ( ) ;
41
+ } ) . future < void > ( ) ( ) ;
52
42
}
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 ) { }
53
61
54
62
public createProject ( projectName : string , projectId : string ) : IFuture < void > {
55
63
return ( ( ) => {
@@ -134,12 +142,12 @@ export class ProjectService implements IProjectService {
134
142
public prepareProject ( normalizedPlatformName : string , platforms : string [ ] ) : IFuture < void > {
135
143
return ( ( ) => {
136
144
var platform = normalizedPlatformName . toLowerCase ( ) ;
137
- var assetsDirectoryPath = path . join ( this . projectData . platformsDir , platform , "assets" ) ;
145
+ var assetsDirectoryPath = path . join ( this . $ projectData. platformsDir , platform , "assets" ) ;
138
146
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 ) ;
140
148
141
149
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" ) ) ;
143
151
this . $fs . deleteDirectory ( appResourcesDirectoryPath ) . wait ( ) ;
144
152
}
145
153
@@ -189,18 +197,18 @@ export class ProjectService implements IProjectService {
189
197
break ;
190
198
}
191
199
192
- this . executeFunctionByName ( functionName , platformProjectService , [ this . projectData ] ) . wait ( ) ;
200
+ this . executeFunctionByName ( functionName , platformProjectService ) . wait ( ) ;
193
201
} ) . future < void > ( ) ( ) ;
194
202
}
195
203
196
- private executeFunctionByName ( functionName , context , args : any [ ] ) : IFuture < any > {
204
+ private executeFunctionByName ( functionName , context ) : IFuture < any > {
197
205
return ( ( ) => {
198
206
var namespaces = functionName . split ( "." ) ;
199
207
var func = namespaces . pop ( ) ;
200
208
for ( var i = 0 ; i < namespaces . length ; i ++ ) {
201
209
context = context [ namespaces [ i ] ] ;
202
210
}
203
- return context [ func ] . apply ( context , args ) . wait ( ) ;
211
+ return context [ func ] . apply ( context ) . wait ( ) ;
204
212
} ) . future < any > ( ) ( ) ;
205
213
}
206
214
@@ -220,7 +228,7 @@ export class ProjectService implements IProjectService {
220
228
}
221
229
222
230
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 ( ) ) {
224
232
this . $errors . fail ( "No project found at or above '%s' and neither was a --path specified." , process . cwd ( ) ) ;
225
233
}
226
234
}
@@ -235,28 +243,29 @@ class AndroidProjectService implements IPlatformProjectService {
235
243
private $logger : ILogger ,
236
244
private $childProcess : IChildProcess ,
237
245
private $projectTemplatesService : IProjectTemplatesService ,
246
+ private $projectData : IProjectData ,
238
247
private $propertiesParser : IPropertiesParser ) { }
239
248
240
- public createProject ( projectData : IProjectData ) : IFuture < void > {
249
+ public createProject ( ) : IFuture < void > {
241
250
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 ;
247
252
248
253
this . validatePackageName ( packageName ) ;
249
- this . validateProjectName ( projectData . projectName ) ;
254
+ this . validateProjectName ( this . $ projectData. projectName ) ;
250
255
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 ( ) ;
251
260
this . checkRequirements ( ) . wait ( ) ;
252
261
253
262
var targetApi = this . getTarget ( ) . wait ( ) ;
254
263
255
264
// Log the values for project
256
265
this . $logger . trace ( "Creating NativeScript project for the Android platform" ) ;
257
266
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 ) ;
260
269
this . $logger . trace ( "Android target: %s" , targetApi ) ;
261
270
262
271
this . $logger . out ( "Copying template files..." ) ;
@@ -273,13 +282,13 @@ class AndroidProjectService implements IPlatformProjectService {
273
282
var activityDir = path . join ( projectDir , 'src' , packageAsPath ) ;
274
283
this . $fs . createDirectory ( activityDir ) . wait ( ) ;
275
284
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 ( ) ;
277
286
278
287
// Interpolate the activity name and package
279
288
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' ) ) ;
283
292
shell . sed ( '-i' , / _ _ P A C K A G E _ _ / , packageName , path . join ( projectDir , "AndroidManifest.xml" ) ) ;
284
293
285
294
this . runAndroidUpdate ( projectDir , targetApi ) . wait ( ) ;
@@ -289,9 +298,9 @@ class AndroidProjectService implements IPlatformProjectService {
289
298
} ) . future < any > ( ) ( ) ;
290
299
}
291
300
292
- public buildProject ( projectData : IProjectData ) : IFuture < void > {
301
+ public buildProject ( ) : IFuture < void > {
293
302
return ( ( ) => {
294
- var projectRoot = path . join ( projectData . platformsDir , "android" ) ;
303
+ var projectRoot = path . join ( this . $ projectData. platformsDir , "android" ) ;
295
304
var buildConfiguration = options . release || "--debug" ;
296
305
var args = this . getAntArgs ( buildConfiguration , projectRoot ) ;
297
306
@@ -427,17 +436,19 @@ class AndroidProjectService implements IPlatformProjectService {
427
436
}
428
437
$injector . register ( "androidProjectService" , AndroidProjectService ) ;
429
438
430
- class iOSProjectService implements IPlatformProjectService {
431
- public createProject ( projectData : IProjectData ) : IFuture < void > {
439
+ class IOSProjectService implements IPlatformProjectService {
440
+
441
+ public createProject ( ) : IFuture < void > {
432
442
return ( ( ) => {
433
443
434
444
} ) . future < any > ( ) ( ) ;
435
445
}
436
446
437
- public buildProject ( projectData : IProjectData ) : IFuture < void > {
447
+ public buildProject ( ) : IFuture < void > {
438
448
return ( ( ) => {
439
449
440
450
} ) . future < void > ( ) ( ) ;
441
451
}
452
+
442
453
}
443
- $injector . register ( "iOSProjectService" , iOSProjectService ) ;
454
+ $injector . register ( "iOSProjectService" , IOSProjectService ) ;
0 commit comments