Skip to content

Commit

Permalink
Electron Forge support (#632)
Browse files Browse the repository at this point in the history
  • Loading branch information
lutzroeder committed Feb 2, 2024
1 parent 3d0e2fc commit 1b2fa07
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 3 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.DS_Store
.DS_Store?
dist/*
out/*
node_modules/*
third_party/*
package-lock.json
Expand Down
38 changes: 35 additions & 3 deletions package.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,12 @@ const unlink = async (dir, filter) => {
await Promise.all(promises);
};

const exec = async (command, encoding) => {
const exec = async (command, encoding, cwd) => {
cwd = cwd || dirname();
if (encoding) {
return child_process.execSync(command, { cwd: dirname(), encoding: encoding });
return child_process.execSync(command, { cwd: cwd, encoding: encoding });
}
child_process.execSync(command, { cwd: dirname(), stdio: [ 0,1,2 ] });
child_process.execSync(command, { cwd: cwd, stdio: [ 0,1,2 ] });
return '';
/*
return new Promise((resolve, reject) => {
Expand Down Expand Up @@ -579,6 +580,36 @@ const coverage = async () => {
await exec('nyc --instrument npx electron ./dist/nyc');
};

const forge = async() => {
const command = read();
switch (command) {
case 'install': {
await exec('npm install @electron-forge/cli@7.2.0');
await exec('npm install @electron-forge/core@7.2.0');
await exec('npm install @electron-forge/maker-snap@7.2.0');
await exec('npm install @electron-forge/maker-dmg@7.2.0');
await exec('npm install @electron-forge/maker-zip@7.2.0');
break;
}
case 'build': {
const cwd = path.join(dirname(), '..', 'forge');
const node_modules = path.join(cwd, 'node_modules');
const links = path.join(cwd, '.links');
const exists = await access(node_modules);
if (!exists) {
await exec('yarn', null, cwd);
}
await exec('yarn build', null, cwd);
await exec('yarn link:prepare', null, cwd);
await exec(`yarn link @electron-forge/core --link-folder=${links}`);
break;
}
default: {
throw new Error(`Unsupported forge command ${command}.`);
}
}
};

const analyze = async () => {
const exists = await access('third_party/tools/codeql');
if (!exists) {
Expand Down Expand Up @@ -630,6 +661,7 @@ const next = async () => {
case 'pull': await pull(); break;
case 'analyze': await analyze(); break;
case 'coverage': await coverage(); break;
case 'forge': await forge(); break;
default: throw new Error(`Unsupported task '${task}'.`);
}
} catch (err) {
Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@
"report-dir": "dist/nyc/coverage",
"temp-dir": "dist/nyc/.nyc_output"
},
"config": {
"forge": "publish/forge.config.js"
},
"build": {
"appId": "com.lutzroeder.netron",
"productName": "Netron",
Expand Down
65 changes: 65 additions & 0 deletions publish/forge.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@

/*
const APPLE_API_KEY_ID = process.env.APPLE_API_KEY_ID;
const APPLE_API_KEY_ISSUER_ID = process.env.APPLE_API_KEY_ISSUER_ID;
*/

export default {
outDir: 'dist',
packagerConfig: {
icon: "publish/icon",
dir: [
'source'
],
ignore: [
"publish",
"third_party",
"test",
"tools"
],
/*
osxNotarize: {
tool: 'notarytool',
appleApiKey: `~/.private_keys/AuthKey_${APPLE_API_KEY_ID}.p8`,
appleApiKeyId: APPLE_API_KEY_ID,
appleApiIssuer: APPLE_API_KEY_ISSUER_ID
},
*/
asar: true
},
/*
makeTargets: {
win32: ['nsis'],
darwin: ['dmg', 'zip'],
linux: ['snap'],
},
*/
makers: [
{
name: '@electron-forge/maker-zip',
config: {
platforms: [ 'darwin' ],
// name: "${name}-${version}-mac.zip"
}
},
{
name: '@electron-forge/maker-dmg',
config: {
background: './publish/background.png',
/* eslint-disable no-template-curly-in-string */
name: "Netron-${version}"
/* eslint-enable no-template-curly-in-string */
}
}
],
publishers: [
{
"name": "@electron-forge/publisher-github",
"config": {}
},
{
"name": "@electron-forge/publisher-snapcraft",
"config": {}
}
]
};

0 comments on commit 1b2fa07

Please sign in to comment.