From 40220c024eddf5ad568a894fdb587cf3584f6e00 Mon Sep 17 00:00:00 2001 From: Erik Moura Date: Sun, 13 Nov 2022 01:16:07 -0300 Subject: [PATCH 1/4] fix(core): allow the `forge.config` property in `package.json` to point to a non-js file --- packages/api/core/src/util/forge-config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/api/core/src/util/forge-config.ts b/packages/api/core/src/util/forge-config.ts index 3f9768b025..503262dace 100644 --- a/packages/api/core/src/util/forge-config.ts +++ b/packages/api/core/src/util/forge-config.ts @@ -109,8 +109,8 @@ export default async (dir: string): Promise => { const packageJSON = await readRawPackageJson(dir); let forgeConfig: ForgeConfig | string | null = packageJSON.config && packageJSON.config.forge ? packageJSON.config.forge : null; - if (!forgeConfig) { - for (const extension of ['.js', ...Object.keys(interpret.extensions)]) { + if (!forgeConfig || typeof forgeConfig === 'string') { + for (const extension of ['.js', ...Object.keys(interpret.extensions), forgeConfig].filter(Boolean)) { const pathToConfig = path.resolve(dir, `forge.config${extension}`); if (await fs.pathExists(pathToConfig)) { rechoir.prepare(interpret.extensions, pathToConfig, dir); From 7963200892c60e719ace71ce87c98b644d4e874a Mon Sep 17 00:00:00 2001 From: Erik Moura Date: Sun, 13 Nov 2022 16:25:21 -0300 Subject: [PATCH 2/4] add possible test --- .../api/core/test/fast/forge-config_spec.ts | 7 +++++++ .../fixture/dummy_ts_conf/forge.config.yml | 1 + .../test/fixture/dummy_ts_conf/package.json | 20 +++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 packages/api/core/test/fixture/dummy_ts_conf/forge.config.yml create mode 100644 packages/api/core/test/fixture/dummy_ts_conf/package.json diff --git a/packages/api/core/test/fast/forge-config_spec.ts b/packages/api/core/test/fast/forge-config_spec.ts index e83791f5e7..c43b293a53 100644 --- a/packages/api/core/test/fast/forge-config_spec.ts +++ b/packages/api/core/test/fast/forge-config_spec.ts @@ -114,6 +114,13 @@ describe('forge-config', () => { expect(conf.defaultResolved).to.equal(true); }); + // @TODO make sure this test passes + it(`should resolve the yml config from forge.config.yml if it's specified in config.forge`, async () => { + type DefaultResolvedConfig = ResolvedForgeConfig; + const conf = (await findConfig(path.resolve(__dirname, '../fixture/dummy_ts_conf'))) as DefaultResolvedConfig; + expect(conf.buildIdentifier).to.equal('yml'); + }); + it('should resolve the TS file exports of forge.config.ts if config.forge does not exist and the TS config exists', async () => { type DefaultResolvedConfig = ResolvedForgeConfig; const conf = (await findConfig(path.resolve(__dirname, '../fixture/dummy_default_ts_conf'))) as DefaultResolvedConfig; diff --git a/packages/api/core/test/fixture/dummy_ts_conf/forge.config.yml b/packages/api/core/test/fixture/dummy_ts_conf/forge.config.yml new file mode 100644 index 0000000000..ee69896efa --- /dev/null +++ b/packages/api/core/test/fixture/dummy_ts_conf/forge.config.yml @@ -0,0 +1 @@ +buildIdentifier: 'yml' diff --git a/packages/api/core/test/fixture/dummy_ts_conf/package.json b/packages/api/core/test/fixture/dummy_ts_conf/package.json new file mode 100644 index 0000000000..df0eaf8be0 --- /dev/null +++ b/packages/api/core/test/fixture/dummy_ts_conf/package.json @@ -0,0 +1,20 @@ +{ + "name": "", + "productName": "", + "version": "1.0.0", + "description": "", + "main": "src/index.js", + "scripts": { + "start": "electron-forge start" + }, + "keywords": [], + "author": "", + "license": "MIT", + "config": { + "forge": "./forge.config.yml" + }, + "devDependencies": { + "@electron-forge/shared-types": "*", + "electron-prebuilt": "9.9.9" + } +} From 757721e76a46f9e3e07b4d8906020283dc593e52 Mon Sep 17 00:00:00 2001 From: Erik Moura Date: Mon, 14 Nov 2022 18:39:53 -0300 Subject: [PATCH 3/4] fixed test --- package.json | 3 ++- packages/api/core/package.json | 3 ++- packages/api/core/test/fast/forge-config_spec.ts | 1 - yarn.lock | 10 +++++++++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index d3b629846d..d78b6dfbba 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,8 @@ "typedoc-plugin-missing-exports": "^1.0.0", "typedoc-plugin-rename-defaults": "^0.6.4", "typescript": "^4.6.3", - "xvfb-maybe": "^0.2.1" + "xvfb-maybe": "^0.2.1", + "yaml-hook": "^1.0.0" }, "optionalDependencies": { "@malept/electron-installer-flatpak": "^0.11.2", diff --git a/packages/api/core/package.json b/packages/api/core/package.json index 65bc9ba8e0..74bddaf035 100644 --- a/packages/api/core/package.json +++ b/packages/api/core/package.json @@ -36,7 +36,8 @@ "mocha": "^9.0.1", "proxyquire": "^2.1.3", "sinon": "^13.0.1", - "sinon-chai": "^3.6.0" + "sinon-chai": "^3.6.0", + "yaml-hook": "^1.0.0" }, "dependencies": { "@electron-forge/core-utils": "^6.0.3", diff --git a/packages/api/core/test/fast/forge-config_spec.ts b/packages/api/core/test/fast/forge-config_spec.ts index c43b293a53..99e3cfa5e0 100644 --- a/packages/api/core/test/fast/forge-config_spec.ts +++ b/packages/api/core/test/fast/forge-config_spec.ts @@ -114,7 +114,6 @@ describe('forge-config', () => { expect(conf.defaultResolved).to.equal(true); }); - // @TODO make sure this test passes it(`should resolve the yml config from forge.config.yml if it's specified in config.forge`, async () => { type DefaultResolvedConfig = ResolvedForgeConfig; const conf = (await findConfig(path.resolve(__dirname, '../fixture/dummy_ts_conf'))) as DefaultResolvedConfig; diff --git a/yarn.lock b/yarn.lock index 2719308b38..024ffae10f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7493,7 +7493,7 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@^3.10.0, js-yaml@^3.13.1: +js-yaml@^3.10.0, js-yaml@^3.12.2, js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -11555,6 +11555,14 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml-hook@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yaml-hook/-/yaml-hook-1.0.0.tgz#14d682e949a9cf6f041e2af8278a4d349ccb52b7" + integrity sha512-iqSS5Mk1F3yBtrfx94hWzmEk0Wxs5QoBRvngAe39t0XA2JJ3jhQN6Snwv/shH1VoZr+ntdhf4EDLmW0WUWBjdQ== + dependencies: + js-yaml "^3.12.2" + pirates "^4.0.1" + yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" From 7787c3eaf2122e06723872cc2bfd56185ce7fbd6 Mon Sep 17 00:00:00 2001 From: Erik Moura Date: Tue, 15 Nov 2022 10:13:32 -0300 Subject: [PATCH 4/4] the config file name is not an extension, no need to test it --- packages/api/core/src/util/forge-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/core/src/util/forge-config.ts b/packages/api/core/src/util/forge-config.ts index 503262dace..03b9a229cf 100644 --- a/packages/api/core/src/util/forge-config.ts +++ b/packages/api/core/src/util/forge-config.ts @@ -110,7 +110,7 @@ export default async (dir: string): Promise => { let forgeConfig: ForgeConfig | string | null = packageJSON.config && packageJSON.config.forge ? packageJSON.config.forge : null; if (!forgeConfig || typeof forgeConfig === 'string') { - for (const extension of ['.js', ...Object.keys(interpret.extensions), forgeConfig].filter(Boolean)) { + for (const extension of ['.js', ...Object.keys(interpret.extensions)]) { const pathToConfig = path.resolve(dir, `forge.config${extension}`); if (await fs.pathExists(pathToConfig)) { rechoir.prepare(interpret.extensions, pathToConfig, dir);