Skip to content

Commit 1ef70db

Browse files
FatmeFatme
Fatme
authored and
Fatme
committed
Merge pull request #1099 from NativeScript/fatme/fix-prepare-for-both-platforms
Fix prepare for both platforms
2 parents d5d3c99 + c4e0667 commit 1ef70db

File tree

5 files changed

+26
-29
lines changed

5 files changed

+26
-29
lines changed

lib/definitions/plugins.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
interface IPluginsService {
22
add(plugin: string): IFuture<void>; // adds plugin by name, github url, local path and et.
33
remove(pluginName: string): IFuture<void>; // removes plugin only by name
4-
prepare(pluginData: IDependencyData): IFuture<void>;
4+
prepare(pluginData: IDependencyData, platform: string): IFuture<void>;
55
getAllInstalledPlugins(): IFuture<IPluginData[]>;
66
ensureAllDependenciesAreInstalled(): IFuture<void>;
77
afterPrepareAllPlugins(): IFuture<void>;

lib/services/plugins-service.ts

+21-24
Original file line numberDiff line numberDiff line change
@@ -122,40 +122,37 @@ export class PluginsService implements IPluginsService {
122122
}).future<void>()();
123123
}
124124

125-
public prepare(dependencyData: IDependencyData): IFuture<void> {
125+
public prepare(dependencyData: IDependencyData, platform: string): IFuture<void> {
126126
return (() => {
127+
platform = platform.toLowerCase();
128+
let platformData = this.$platformsData.getPlatformData(platform);
129+
let pluginDestinationPath = path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME, "tns_modules");
127130
let pluginData = this.convertToPluginData(dependencyData);
128131

129-
let action = (pluginDestinationPath: string, platform: string, platformData: IPlatformData) => {
130-
return (() => {
131-
if(!this.isPluginDataValidForPlatform(pluginData, platform).wait()) {
132-
return;
133-
}
132+
if(!this.isPluginDataValidForPlatform(pluginData, platform).wait()) {
133+
return;
134+
}
134135

135-
if(this.$fs.exists(path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME)).wait()) {
136-
this.$fs.ensureDirectoryExists(pluginDestinationPath).wait();
137-
shelljs.cp("-Rf", pluginData.fullPath, pluginDestinationPath);
136+
if(this.$fs.exists(path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME)).wait()) {
137+
this.$fs.ensureDirectoryExists(pluginDestinationPath).wait();
138+
shelljs.cp("-Rf", pluginData.fullPath, pluginDestinationPath);
138139

139-
let pluginConfigurationFilePath = this.getPluginConfigurationFilePath(pluginData, platformData);
140-
if(this.$fs.exists(pluginConfigurationFilePath).wait()) {
141-
this.merge(pluginData, platformData).wait();
142-
}
140+
let pluginConfigurationFilePath = this.getPluginConfigurationFilePath(pluginData, platformData);
143141

144-
this.$projectFilesManager.processPlatformSpecificFiles(pluginDestinationPath, platform).wait();
142+
if(this.$fs.exists(pluginConfigurationFilePath).wait()) {
143+
this.merge(pluginData, platformData).wait();
144+
}
145145

146-
pluginData.pluginPlatformsFolderPath = (_platform: string) => path.join(pluginData.fullPath, "platforms", _platform);
147-
platformData.platformProjectService.preparePluginNativeCode(pluginData).wait();
146+
this.$projectFilesManager.processPlatformSpecificFiles(pluginDestinationPath, platform).wait();
148147

149-
shelljs.rm("-rf", path.join(pluginDestinationPath, pluginData.name, "platforms"));
148+
pluginData.pluginPlatformsFolderPath = (_platform: string) => path.join(pluginData.fullPath, "platforms", _platform);
149+
platformData.platformProjectService.preparePluginNativeCode(pluginData).wait();
150150

151-
// Show message
152-
this.$logger.out(`Successfully prepared plugin ${pluginData.name} for ${platform}.`);
153-
}
151+
shelljs.rm("-rf", path.join(pluginDestinationPath, pluginData.name, "platforms"));
154152

155-
}).future<void>()();
156-
};
157-
158-
this.executeForAllInstalledPlatforms(action).wait();
153+
// Show message
154+
this.$logger.out(`Successfully prepared plugin ${pluginData.name} for ${platform}.`);
155+
}
159156
}).future<void>()();
160157
}
161158

lib/tools/broccoli/node-modules-dest-copy.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export class DestCopy implements IBroccoliPlugin {
7474

7575
let isPlugin = !!dependency.nativescript;
7676
if(isPlugin) {
77-
this.$pluginsService.prepare(dependency).wait();
77+
this.$pluginsService.prepare(dependency, platform).wait();
7878
}
7979

8080
if (dependency.name === constants.TNS_CORE_MODULES_NAME) {

test/plugins-service.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ describe("Plugins service", () => {
530530
`\n@#[line:1,col:39].` +
531531
`\n@#[line:1,col:39].`;
532532
mockBeginCommand(testInjector, expectedErrorMessage);
533-
pluginsService.prepare(pluginJsonData).wait();
533+
pluginsService.prepare(pluginJsonData, "android").wait();
534534
});
535535
it("merges AndroidManifest.xml and produces correct xml", () => {
536536
let pluginName = "mySamplePlugin";
@@ -609,7 +609,7 @@ describe("Plugins service", () => {
609609
let pluginConfigurationFilePath = path.join(pluginPlatformsDirPath, "AndroidManifest.xml");
610610
fs.writeFile(pluginConfigurationFilePath, xml).wait();
611611

612-
pluginsService.prepare(pluginJsonData).wait();
612+
pluginsService.prepare(pluginJsonData, "android").wait();
613613

614614
let expectedXml = '<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.android.basiccontactables"android:versionCode="1"android:versionName="1.0"><supports-screensandroid:smallScreens="true"android:normalScreens="true"android:largeScreens="true"android:xlargeScreens="true"/><uses-sdkandroid:minSdkVersion="17"android:targetSdkVersion="23"/><uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.INTERNET"/><applicationandroid:name="com.tns.NativeScriptApplication"android:allowBackup="true"android:icon="@drawable/icon"android:label="@string/app_name"android:theme="@style/AppTheme"><activityandroid:name="com.tns.NativeScriptActivity"android:label="@string/title_activity_kimera"android:configChanges="keyboardHidden|orientation|screenSize"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activityandroid:name="com.tns.ErrorReportActivity"/></application><uses-permissionandroid:name="android.permission.READ_CONTACTS"/></manifest>';
615615
expectedXml = helpers.stringReplaceAll(expectedXml, EOL, "");

0 commit comments

Comments
 (0)