From aaceb3f285c77bfc221e8bdbf6db7ecbfdb6a4d8 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Sun, 4 Dec 2016 14:13:20 +1100 Subject: [PATCH] feat(maker): add the dmg maker for the darwin target --- package.json | 1 + src/makers/darwin/dmg.js | 22 ++++++++++++++++++++++ src/util/forge-config.js | 1 + test/cli_spec.js | 2 +- 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/makers/darwin/dmg.js diff --git a/package.json b/package.json index f1bad5715f..dbca6dae45 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "colors": "^1.1.2", "commander": "^2.9.0", "debug": "^2.3.3", + "electron-installer-dmg": "^0.1.2", "electron-packager": "^8.3.0", "electron-winstaller": "^2.5.0", "fs-promise": "^0.5.0", diff --git a/src/makers/darwin/dmg.js b/src/makers/darwin/dmg.js new file mode 100644 index 0000000000..f68cb75b0c --- /dev/null +++ b/src/makers/darwin/dmg.js @@ -0,0 +1,22 @@ +import electronDMG from 'electron-installer-dmg'; +import fs from 'fs-promise'; +import mkdirp from 'mkdirp'; +import path from 'path'; +import pify from 'pify'; +import rimraf from 'rimraf'; + +export default async (dir, appName, forgeConfig) => { + const outPath = path.resolve(dir, '../make', `${path.basename(dir)}.dmg`); + if (await fs.exists(outPath)) { + await pify(rimraf)(outPath); + } + await pify(mkdirp)(path.dirname(outPath)); + const dmgConfig = Object.assign({ + overwrite: true, + }, forgeConfig.electronInstallerDMG, { + appPath: path.resolve(dir, `${appName}.app`), + name: appName, + out: path.dirname(outPath), + }); + await pify(electronDMG)(dmgConfig); +}; diff --git a/src/util/forge-config.js b/src/util/forge-config.js index bb977eb4fc..3b6c8abeb4 100644 --- a/src/util/forge-config.js +++ b/src/util/forge-config.js @@ -8,6 +8,7 @@ export default async (dir) => { electronPackagerConfig: {}, electronWinstallerConfig: {}, electronInstallerDebian: {}, + electronInstallerDMG: {}, electronInstallerRedhat: {}, }, forgeConfig); forgeConfig.make_targets = Object.assign({ diff --git a/test/cli_spec.js b/test/cli_spec.js index 87571294e6..d7394b7f4c 100644 --- a/test/cli_spec.js +++ b/test/cli_spec.js @@ -67,7 +67,7 @@ describe(`electron-forge CLI (with installer=${installer.substr(12)})`, () => { let dir; before(async () => { - dir = path.resolve(os.tmpdir(), `electron-forge-test-${Date.now()}`); + dir = path.resolve(os.tmpdir(), `electron-forge-test-${`${Date.now()}`.substr(7)}`); await pSpawn(['init', dir]); await pSpawn(['package', dir]); });