diff --git a/lib/common b/lib/common index 05c00c7312..a4c9747cce 160000 --- a/lib/common +++ b/lib/common @@ -1 +1 @@ -Subproject commit 05c00c7312823ad7410c90afc9beb0daa6957fbe +Subproject commit a4c9747cce9ec4ae6abfa16ced1fd44dab5a022f diff --git a/lib/definitions/plugins.d.ts b/lib/definitions/plugins.d.ts index 9e21e98821..2935878a59 100644 --- a/lib/definitions/plugins.d.ts +++ b/lib/definitions/plugins.d.ts @@ -1,7 +1,7 @@ interface IPluginsService { add(plugin: string): IFuture; // adds plugin by name, github url, local path and et. remove(pluginName: string): IFuture; // removes plugin only by name - prepare(pluginData: IDependencyData): IFuture; + prepare(pluginData: IDependencyData, platform: string): IFuture; getAllInstalledPlugins(): IFuture; ensureAllDependenciesAreInstalled(): IFuture; afterPrepareAllPlugins(): IFuture; diff --git a/lib/services/plugins-service.ts b/lib/services/plugins-service.ts index 2d630e34d2..dcd2743a31 100644 --- a/lib/services/plugins-service.ts +++ b/lib/services/plugins-service.ts @@ -122,40 +122,37 @@ export class PluginsService implements IPluginsService { }).future()(); } - public prepare(dependencyData: IDependencyData): IFuture { + public prepare(dependencyData: IDependencyData, platform: string): IFuture { return (() => { + platform = platform.toLowerCase(); + let platformData = this.$platformsData.getPlatformData(platform); + let pluginDestinationPath = path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME, "tns_modules"); let pluginData = this.convertToPluginData(dependencyData); - let action = (pluginDestinationPath: string, platform: string, platformData: IPlatformData) => { - return (() => { - if(!this.isPluginDataValidForPlatform(pluginData, platform).wait()) { - return; - } + if(!this.isPluginDataValidForPlatform(pluginData, platform).wait()) { + return; + } - if(this.$fs.exists(path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME)).wait()) { - this.$fs.ensureDirectoryExists(pluginDestinationPath).wait(); - shelljs.cp("-Rf", pluginData.fullPath, pluginDestinationPath); + if(this.$fs.exists(path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME)).wait()) { + this.$fs.ensureDirectoryExists(pluginDestinationPath).wait(); + shelljs.cp("-Rf", pluginData.fullPath, pluginDestinationPath); - let pluginConfigurationFilePath = this.getPluginConfigurationFilePath(pluginData, platformData); - if(this.$fs.exists(pluginConfigurationFilePath).wait()) { - this.merge(pluginData, platformData).wait(); - } + let pluginConfigurationFilePath = this.getPluginConfigurationFilePath(pluginData, platformData); - this.$projectFilesManager.processPlatformSpecificFiles(pluginDestinationPath, platform).wait(); + if(this.$fs.exists(pluginConfigurationFilePath).wait()) { + this.merge(pluginData, platformData).wait(); + } - pluginData.pluginPlatformsFolderPath = (_platform: string) => path.join(pluginData.fullPath, "platforms", _platform); - platformData.platformProjectService.preparePluginNativeCode(pluginData).wait(); + this.$projectFilesManager.processPlatformSpecificFiles(pluginDestinationPath, platform).wait(); - shelljs.rm("-rf", path.join(pluginDestinationPath, pluginData.name, "platforms")); + pluginData.pluginPlatformsFolderPath = (_platform: string) => path.join(pluginData.fullPath, "platforms", _platform); + platformData.platformProjectService.preparePluginNativeCode(pluginData).wait(); - // Show message - this.$logger.out(`Successfully prepared plugin ${pluginData.name} for ${platform}.`); - } + shelljs.rm("-rf", path.join(pluginDestinationPath, pluginData.name, "platforms")); - }).future()(); - }; - - this.executeForAllInstalledPlatforms(action).wait(); + // Show message + this.$logger.out(`Successfully prepared plugin ${pluginData.name} for ${platform}.`); + } }).future()(); } diff --git a/lib/tools/broccoli/node-modules-dest-copy.ts b/lib/tools/broccoli/node-modules-dest-copy.ts index e765064b0c..53646692a9 100644 --- a/lib/tools/broccoli/node-modules-dest-copy.ts +++ b/lib/tools/broccoli/node-modules-dest-copy.ts @@ -74,7 +74,7 @@ export class DestCopy implements IBroccoliPlugin { let isPlugin = !!dependency.nativescript; if(isPlugin) { - this.$pluginsService.prepare(dependency).wait(); + this.$pluginsService.prepare(dependency, platform).wait(); } if (dependency.name === constants.TNS_CORE_MODULES_NAME) { diff --git a/test/plugins-service.ts b/test/plugins-service.ts index b896d840f9..b18435c802 100644 --- a/test/plugins-service.ts +++ b/test/plugins-service.ts @@ -530,7 +530,7 @@ describe("Plugins service", () => { `\n@#[line:1,col:39].` + `\n@#[line:1,col:39].`; mockBeginCommand(testInjector, expectedErrorMessage); - pluginsService.prepare(pluginJsonData).wait(); + pluginsService.prepare(pluginJsonData, "android").wait(); }); it("merges AndroidManifest.xml and produces correct xml", () => { let pluginName = "mySamplePlugin"; @@ -609,7 +609,7 @@ describe("Plugins service", () => { let pluginConfigurationFilePath = path.join(pluginPlatformsDirPath, "AndroidManifest.xml"); fs.writeFile(pluginConfigurationFilePath, xml).wait(); - pluginsService.prepare(pluginJsonData).wait(); + pluginsService.prepare(pluginJsonData, "android").wait(); let expectedXml = ''; expectedXml = helpers.stringReplaceAll(expectedXml, EOL, "");