fix(build): format top-level key for nsis-web (#158)
diff --git a/lib/build.js b/lib/build.js
index 00a0fba..9195285 100644
--- a/lib/build.js
+++ b/lib/build.js
@@ -29,6 +29,10 @@
win: 'win32'
};
+const TARGET_TOP_LEVEL_KEY_MAPPING = {
+ 'nsis-web': 'nsisWeb'
+};
+
class ElectronBuilder {
constructor (buildOptions, api) {
this.api = api;
@@ -120,7 +124,9 @@
if (typeof target === 'object' && Object.keys(target).length !== 0) {
const targetKey = Object.keys(target)[0];
- userBuildSettings.config[targetKey] = target[targetKey];
+ const rootKey = TARGET_TOP_LEVEL_KEY_MAPPING[targetKey] || targetKey;
+
+ userBuildSettings.config[rootKey] = target[targetKey];
target = targetKey;
}
diff --git a/tests/spec/unit/lib/build.spec.js b/tests/spec/unit/lib/build.spec.js
index 372d18d..a07d14a 100644
--- a/tests/spec/unit/lib/build.spec.js
+++ b/tests/spec/unit/lib/build.spec.js
@@ -1261,6 +1261,33 @@
expect(buildOptions.buildConfig.electron.mac.signing.store.requirements).toBe(undefined);
});
+ it('should format nsis-web taget with nsisWeb top-level configs in __formatAppendUserSettings.', () => {
+ // Sample target configuration option
+ const appPackageUrl = 'https://foo.bar/apps/win/web';
+ // The settings which will be populated by `__formatAppendUserSettings`
+ const userBuildSettings = {};
+ // platform config partial from `build.json`
+ const platformConfig = {
+ package: [
+ { 'nsis-web': { appPackageUrl } }
+ ]
+ };
+ // the mock `build.json`
+ const buildConfig = { electron: { windows: platformConfig } };
+ // the build options which is passed from CLI/Lib to Platform Build
+ const buildOptions = { argv: [], buildConfig };
+
+ // // create spies
+ existsSyncSpy = jasmine.createSpy('existsSync').and.returnValue(false);
+ build.__set__('fs', { existsSync: existsSyncSpy });
+
+ electronBuilder = new ElectronBuilder(buildOptions, api)
+ .__formatAppendUserSettings('win', platformConfig, userBuildSettings);
+
+ expect(existsSyncSpy).toHaveBeenCalled();
+ expect(userBuildSettings.config.nsisWeb.appPackageUrl).toBe(appPackageUrl);
+ });
+
it('should append user singing for windows', () => {
// mock platformConfig, buildConfig and buildOptions Objects
const platformConfig = {