Skip to content

Commit beffd1d

Browse files
committed
PR comments
1 parent 47fb440 commit beffd1d

File tree

4 files changed

+27
-22
lines changed

4 files changed

+27
-22
lines changed

lib/definitions/plugins.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ interface INodeModuleData {
1414
version: string;
1515
fullPath: string;
1616
isPlugin: boolean;
17+
moduleInfo: any;
1718
}
1819

1920
interface IPluginPlatformsData {

lib/services/platform-service.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,7 @@ export class PlatformService implements IPlatformService {
318318
}
319319

320320
private isPlatformInstalled(platform: string): IFuture<boolean> {
321-
return (() => {
322-
return this.$fs.exists(path.join(this.$projectData.platformsDir, platform)).wait();
323-
}).future<boolean>()();
321+
return this.$fs.exists(path.join(this.$projectData.platformsDir, platform));
324322
}
325323

326324
private isValidPlatform(platform: string) {

lib/services/plugins-service.ts

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ export class PluginsService implements IPluginsService {
2828
if(!nodeModuleData.isPlugin) {
2929
// We should remove already downloaded plugin and show an error message
3030
this.executeNpmCommand(PluginsService.UNINSTALL_COMMAND_NAME, pluginName).wait();
31-
this.$errors.failWithoutHelp(`The specified plugin ${plugin} is not a valid NativeScript plugin. Ensure that the plugin contains nativescript key in package.json file and try again.`);
31+
this.$errors.failWithoutHelp(`${plugin} is not a valid NativeScript plugin. Verify that the plugin package.json file contains a nativescript key and try again.`);
3232
}
3333

3434
this.prepare(this.convertToPluginData(nodeModuleData)).wait();
35-
this.$logger.out(`Succsessfully installed plugin with name ${nodeModuleData.name}.`);
35+
this.$logger.out(`Successfully installed plugin ${nodeModuleData.name}.`);
3636
}).future<void>()();
3737
}
3838

@@ -42,7 +42,7 @@ export class PluginsService implements IPluginsService {
4242
let showMessage = true;
4343
let action = (modulesDestinationPath: string, platform: string, platformData: IPlatformData) => {
4444
shelljs.rm("-rf", path.join(modulesDestinationPath, pluginName));
45-
this.$logger.out(`Successfully removed plugin ${pluginName} for ${platform} platform`);
45+
this.$logger.out(`Successfully removed plugin ${pluginName} for ${platform}.`);
4646
showMessage = false;
4747
};
4848
this.executeForAllInstalledPlatforms(action);
@@ -61,19 +61,19 @@ export class PluginsService implements IPluginsService {
6161
let installedFrameworkVersion = this.getInstalledFrameworkVersion(platform).wait();
6262
let pluginVersion = (<any>pluginData.platformsData)[platform];
6363
if(semver.gt(pluginVersion, installedFrameworkVersion)) {
64-
this.$logger.warn(`Plugin ${pluginData.name} with specified version ${pluginVersion} for ${platform} platform is not compatible for currently installed framework with version ${installedFrameworkVersion}.`);
64+
this.$logger.warn(`${pluginData.name} ${pluginVersion} for ${platform} is not compatible with the currently installed framework version ${installedFrameworkVersion}.`);
6565
skipExecution = true;
6666
}
6767

6868
if(!skipExecution) {
6969
this.$fs.ensureDirectoryExists(pluginDestinationPath).wait();
7070
shelljs.cp("-R", pluginData.fullPath, pluginDestinationPath);
7171

72-
let pluginPlatformsFolderPath = path.join(pluginDestinationPath, pluginData.name, "platforms");
72+
let pluginPlatformsFolderPath = path.join(pluginDestinationPath, pluginData.name, "platforms", platform);
7373
let pluginConfigurationFilePath = path.join(pluginPlatformsFolderPath, platformData.configurationFileName);
7474
if(this.$fs.exists(pluginConfigurationFilePath).wait()) {
75-
let pluginConfigurationFileContent = this.$fs.readFile(pluginConfigurationFilePath).wait().toString();
76-
let configurationFileContent = this.$fs.readFile(platformData.configurationFilePath).wait().toString();
75+
let pluginConfigurationFileContent = this.$fs.readText(pluginConfigurationFilePath).wait();
76+
let configurationFileContent = this.$fs.readText(platformData.configurationFilePath).wait();
7777
let resultXml = this.mergeXml(pluginConfigurationFileContent, configurationFileContent).wait();
7878
this.$fs.writeFile(platformData.configurationFilePath, resultXml).wait();
7979
}
@@ -85,7 +85,7 @@ export class PluginsService implements IPluginsService {
8585
// TODO: Add libraries
8686

8787
// Show message
88-
this.$logger.out(`Successfully prepared plugin ${pluginData.name} for ${platform} platform`);
88+
this.$logger.out(`Successfully prepared plugin ${pluginData.name} for ${platform}.`);
8989
}
9090
};
9191

@@ -98,7 +98,7 @@ export class PluginsService implements IPluginsService {
9898
let nodeModules = this.$fs.readDirectory(this.nodeModulesPath).wait();
9999
let plugins: IPluginData[] = [];
100100
_.each(nodeModules, nodeModuleName => {
101-
var nodeModuleData = this.getNodeModuleData(nodeModuleName);
101+
let nodeModuleData = this.getNodeModuleData(nodeModuleName);
102102
if(nodeModuleData.isPlugin) {
103103
plugins.push(this.convertToPluginData(nodeModuleData));
104104
}
@@ -117,7 +117,7 @@ export class PluginsService implements IPluginsService {
117117
}
118118

119119
private composeNpmCommand(npmCommandName: string, npmCommandArguments: string): string {
120-
let command = `npm ${npmCommandName} ${npmCommandArguments} --save `;
120+
let command = ` npm ${npmCommandName} ${npmCommandArguments} --save `;
121121
if(this.$options.production) {
122122
command += " --production ";
123123
}
@@ -148,18 +148,19 @@ export class PluginsService implements IPluginsService {
148148
let result = {
149149
name: data.name,
150150
version: data.version,
151-
isPlugin: data.nativescript,
152151
fullPath: fullNodeModulePath,
152+
isPlugin: data.nativescript !== undefined,
153+
moduleInfo: data.nativescript
153154
};
154155

155156
return result;
156157
}
157158

158159
private convertToPluginData(nodeModuleData: INodeModuleData): IPluginData {
159160
let pluginData: any = _.extend({}, nodeModuleData);
160-
let data = <any>(nodeModuleData.isPlugin);
161-
if(data) {
162-
pluginData.platformsData = data.platforms;
161+
162+
if(pluginData.isPlugin) {
163+
pluginData.platformsData = nodeModuleData.moduleInfo.platforms;
163164
}
164165

165166
return pluginData;
@@ -180,9 +181,14 @@ export class PluginsService implements IPluginsService {
180181

181182
private mergeXml(xml1: string, xml2: string): IFuture<string> {
182183
let future = new Future<string>();
183-
xmlmerge.merge(xml1, xml2, (mergedXml: string) => { // TODO: process errors
184-
future.return(mergedXml);
185-
});
184+
185+
try {
186+
xmlmerge.merge(xml1, xml2, "", (mergedXml: string) => {
187+
future.return(mergedXml);
188+
});
189+
} catch(err) {
190+
future.throw(err);
191+
}
186192

187193
return future;
188194
}

test/plugins-service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ describe("plugins service", () => {
133133
addPluginWhenExpectingToFail(testInjector, null, "You must specify plugin name.");
134134
});
135135
it("fails when invalid nativescript plugin name is specified", () => {
136-
addPluginWhenExpectingToFail(testInjector, "lodash", "The specified plugin lodash is not a valid NativeScript plugin. Ensure that the plugin contains nativescript key in package.json file and try again.");
136+
addPluginWhenExpectingToFail(testInjector, "lodash", "lodash is not a valid NativeScript plugin. Verify that the plugin package.json file contains a nativescript key and try again.");
137137
});
138138
it("fails when the plugin is already installed", () => {
139139
let pluginName = "plugin1";
@@ -162,7 +162,7 @@ describe("plugins service", () => {
162162
});
163163
it("fails when the plugin does not support the installed framework", () => {
164164
let isWarningMessageShown = false;
165-
let expectedWarningMessage = "Plugin mySamplePlugin with specified version 1.0.1 for android platform is not compatible for currently installed framework with version 1.0.0.";
165+
let expectedWarningMessage = "mySamplePlugin 1.0.1 for android is not compatible with the currently installed framework version 1.0.0.";
166166

167167
// Creates plugin in temp folder
168168
let pluginName = "mySamplePlugin";

0 commit comments

Comments
 (0)