From ef119301ddfad0c39a11b857ed4624da784259ea Mon Sep 17 00:00:00 2001 From: rosen-vladimirov Date: Thu, 31 Mar 2016 13:53:09 +0300 Subject: [PATCH 1/6] Use baseConfig when merging Info.plist files When --baseConfig is passed, we should use it when merging Info.plist files. --- lib/services/ios-project-service.ts | 4 ++-- lib/services/platform-service.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/services/ios-project-service.ts b/lib/services/ios-project-service.ts index 345535ae5b..9aa029a785 100644 --- a/lib/services/ios-project-service.ts +++ b/lib/services/ios-project-service.ts @@ -417,7 +417,7 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ public ensureConfigurationFileInAppResources(): IFuture { return (() => { let projectDir = this.$projectData.projectDir; - let infoPlistPath = path.join(projectDir, constants.APP_FOLDER_NAME, constants.APP_RESOURCES_FOLDER_NAME, this.platformData.normalizedPlatformName, this.platformData.configurationFileName); + let infoPlistPath = this.$options.baseConfig || path.join(projectDir, constants.APP_FOLDER_NAME, constants.APP_RESOURCES_FOLDER_NAME, this.platformData.normalizedPlatformName, this.platformData.configurationFileName); if (!this.$fs.exists(infoPlistPath).wait()) { // The project is missing Info.plist, try to populate it from the project template. @@ -442,7 +442,7 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ private mergeInfoPlists(): IFuture { return (() => { let projectDir = this.$projectData.projectDir; - let infoPlistPath = path.join(projectDir, constants.APP_FOLDER_NAME, constants.APP_RESOURCES_FOLDER_NAME, this.platformData.normalizedPlatformName, this.platformData.configurationFileName); + let infoPlistPath = this.$options.baseConfig || path.join(projectDir, constants.APP_FOLDER_NAME, constants.APP_RESOURCES_FOLDER_NAME, this.platformData.normalizedPlatformName, this.platformData.configurationFileName); this.ensureConfigurationFileInAppResources().wait(); if (!this.$fs.exists(infoPlistPath).wait()) { diff --git a/lib/services/platform-service.ts b/lib/services/platform-service.ts index 7a97a4aa19..4ca224df43 100644 --- a/lib/services/platform-service.ts +++ b/lib/services/platform-service.ts @@ -296,11 +296,11 @@ export class PlatformService implements IPlatformService { let excludedDirs = [constants.APP_RESOURCES_FOLDER_NAME]; this.$projectFilesManager.processPlatformSpecificFiles(directoryPath, platform, excludedDirs).wait(); + this.applyBaseConfigOption(platformData).wait(); + // Process configurations files from App_Resources platformData.platformProjectService.processConfigurationFilesFromAppResources().wait(); - this.applyBaseConfigOption(platformData).wait(); - // Replace placeholders in configuration files platformData.platformProjectService.interpolateConfigurationFile().wait(); From a598b1231aa54539d8ccc639da6eeecac388911c Mon Sep 17 00:00:00 2001 From: rosen-vladimirov Date: Thu, 31 Mar 2016 15:54:31 +0300 Subject: [PATCH 2/6] Disable analytics in AppBuilder Disable analytics in AppBuilder --- lib/config.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/config.ts b/lib/config.ts index 0ff17d0aa4..43ffd86cb8 100644 --- a/lib/config.ts +++ b/lib/config.ts @@ -22,6 +22,8 @@ export class Configuration extends ConfigBase implements IConfiguration { // Use $injector.register("config", Configuration); export class StaticConfig extends StaticConfigBase implements IStaticConfig { + public disableAnalytics = true; + public PROJECT_FILE_NAME = "package.json"; public CLIENT_NAME_KEY_IN_PROJECT_FILE = "nativescript"; public CLIENT_NAME = "tns"; From 446ff591553ee156c88d4c815b8776c530b24f5e Mon Sep 17 00:00:00 2001 From: rosen-vladimirov Date: Wed, 6 Apr 2016 13:03:46 +0300 Subject: [PATCH 3/6] Introduce `hooks` option When `--no-hooks` is passed on command line, the hooks will not be executed. --- lib/common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/common b/lib/common index 16e16855db..5b43773465 160000 --- a/lib/common +++ b/lib/common @@ -1 +1 @@ -Subproject commit 16e16855db2e506e40a8fc2d3b2acf6eec08b43e +Subproject commit 5b437734659e6c6d055ca1c3d41092552d30a4b8 From f3ba2ce2a16830d86d35413eafb25cca11f04e55 Mon Sep 17 00:00:00 2001 From: TsvetanMilanov Date: Wed, 20 Apr 2016 17:33:29 +0300 Subject: [PATCH 4/6] Include custom platform template when using tns init -f When the tns- key in the package.json of nativescript project has custom template the template key must be kept and the version key should be added. --- lib/services/init-service.ts | 39 ++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/lib/services/init-service.ts b/lib/services/init-service.ts index 6a5c8469ce..c89393e038 100644 --- a/lib/services/init-service.ts +++ b/lib/services/init-service.ts @@ -13,6 +13,8 @@ export class InitService implements IInitService { "tns-core-modules": "1.2.0" }; + private static VERSION_KEY_NAME = "version"; + private _projectFilePath: string; constructor(private $fs: IFileSystem, @@ -27,16 +29,16 @@ export class InitService implements IInitService { public initialize(): IFuture { return (() => { - let projectData: any = { }; + let projectData: any = {}; - if(this.$fs.exists(this.projectFilePath).wait()) { + if (this.$fs.exists(this.projectFilePath).wait()) { projectData = this.$fs.readJson(this.projectFilePath).wait(); } let projectDataBackup = _.extend({}, projectData); - if(!projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE]) { - projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE] = { }; + if (!projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE]) { + projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE] = {}; this.$fs.writeJson(this.projectFilePath, projectData).wait(); // We need to create package.json file here in order to prevent "No project found at or above and neither was a --path specified." when resolving platformsData } @@ -44,20 +46,22 @@ export class InitService implements IInitService { projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE]["id"] = this.getProjectId().wait(); - if(this.$options.frameworkName && this.$options.frameworkVersion) { + if (this.$options.frameworkName && this.$options.frameworkVersion) { projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE][this.$options.frameworkName] = this.buildVersionData(this.$options.frameworkVersion); } else { let $platformsData = this.$injector.resolve("platformsData"); _.each($platformsData.platformsNames, platform => { let platformData: IPlatformData = $platformsData.getPlatformData(platform); - if(!platformData.targetedOS || (platformData.targetedOS && _.contains(platformData.targetedOS, process.platform))) { - projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE][platformData.frameworkPackageName] = this.getVersionData(platformData.frameworkPackageName).wait(); + if (!platformData.targetedOS || (platformData.targetedOS && _.contains(platformData.targetedOS, process.platform))) { + let currentPlatformData = projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE][platformData.frameworkPackageName] || {}; + + projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE][platformData.frameworkPackageName] = _.extend(currentPlatformData, this.getVersionData(platformData.frameworkPackageName).wait()); } }); } let dependencies = projectData.dependencies; - if(!dependencies) { + if (!dependencies) { projectData.dependencies = Object.create(null); } // In case console is interactive and --force is not specified, do not read the version from package.json, show all available versions to the user. @@ -65,7 +69,7 @@ export class InitService implements IInitService { projectData.dependencies[constants.TNS_CORE_MODULES_NAME] = this.$options.tnsModulesVersion || tnsCoreModulesVersionInPackageJson || this.getVersionData(constants.TNS_CORE_MODULES_NAME).wait()["version"]; this.$fs.writeJson(this.projectFilePath, projectData).wait(); - } catch(err) { + } catch (err) { this.$fs.writeJson(this.projectFilePath, projectDataBackup).wait(); throw err; } @@ -75,7 +79,7 @@ export class InitService implements IInitService { } private get projectFilePath(): string { - if(!this._projectFilePath) { + if (!this._projectFilePath) { let projectDir = path.resolve(this.$options.path || "."); this._projectFilePath = path.join(projectDir, constants.PACKAGE_JSON_FILE_NAME); } @@ -85,12 +89,12 @@ export class InitService implements IInitService { private getProjectId(): IFuture { return (() => { - if(this.$options.appid) { + if (this.$options.appid) { return this.$options.appid; } let defaultAppId = this.$projectHelper.generateDefaultAppId(path.basename(path.dirname(this.projectFilePath)), constants.DEFAULT_APP_IDENTIFIER_PREFIX); - if(this.useDefaultValue) { + if (this.useDefaultValue) { return defaultAppId; } @@ -101,13 +105,14 @@ export class InitService implements IInitService { private getVersionData(packageName: string): IFuture { return (() => { let latestVersion = this.$npmInstallationManager.getLatestCompatibleVersion(packageName).wait(); - if(this.useDefaultValue) { + + if (this.useDefaultValue) { return this.buildVersionData(latestVersion); } let data = this.$npm.view(packageName, "versions").wait(); let versions = _.filter(data[latestVersion].versions, (version: string) => semver.gte(version, InitService.MIN_SUPPORTED_FRAMEWORK_VERSIONS[packageName])); - if(versions.length === 1) { + if (versions.length === 1) { this.$logger.info(`Only ${versions[0]} version is available for ${packageName}.`); return this.buildVersionData(versions[0]); } @@ -118,7 +123,11 @@ export class InitService implements IInitService { } private buildVersionData(version: string): IStringDictionary { - return { "version": version }; + let result: IStringDictionary = {}; + + result[InitService.VERSION_KEY_NAME] = version; + + return result; } private get useDefaultValue(): boolean { From ccd7ec2e531a4291756fa8309c4b40b8bd4070d3 Mon Sep 17 00:00:00 2001 From: TsvetanMilanov Date: Tue, 26 Apr 2016 10:50:27 +0300 Subject: [PATCH 5/6] Include custom platform template when using tns init When the `tns-` key in the package.json of nativescript project has custom template the template key must be kept and the version key should be added. When the --framework-name and --framework-version are passed as arguments. --- lib/services/init-service.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/services/init-service.ts b/lib/services/init-service.ts index c89393e038..46f9c7f258 100644 --- a/lib/services/init-service.ts +++ b/lib/services/init-service.ts @@ -47,7 +47,9 @@ export class InitService implements IInitService { projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE]["id"] = this.getProjectId().wait(); if (this.$options.frameworkName && this.$options.frameworkVersion) { - projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE][this.$options.frameworkName] = this.buildVersionData(this.$options.frameworkVersion); + let currentPlatformData = projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE][this.$options.frameworkName] || {}; + + projectData[this.$staticConfig.CLIENT_NAME_KEY_IN_PROJECT_FILE][this.$options.frameworkName] = _.extend(currentPlatformData, this.buildVersionData(this.$options.frameworkVersion)); } else { let $platformsData = this.$injector.resolve("platformsData"); _.each($platformsData.platformsNames, platform => { From 66cfb964e03d14aca256fd877eedefc43147fef2 Mon Sep 17 00:00:00 2001 From: rosen-vladimirov Date: Wed, 11 May 2016 11:46:34 +0300 Subject: [PATCH 6/6] Allow analytics Remove disableAnalytics set to true - we've used it only in AppBuilder branch. --- lib/config.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/config.ts b/lib/config.ts index 4c44832699..1c1044d1ee 100644 --- a/lib/config.ts +++ b/lib/config.ts @@ -22,8 +22,6 @@ export class Configuration extends ConfigBase implements IConfiguration { // Use $injector.register("config", Configuration); export class StaticConfig extends StaticConfigBase implements IStaticConfig { - public disableAnalytics = true; - public PROJECT_FILE_NAME = "package.json"; public CLIENT_NAME_KEY_IN_PROJECT_FILE = "nativescript"; public CLIENT_NAME = "tns";