100 lines
3.2 KiB
JavaScript
100 lines
3.2 KiB
JavaScript
// Generated during build
|
|
const config = require('./config.js');
|
|
const { isMac } = require('../src/helpers/platform.js');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
module.exports = {
|
|
packagerConfig: {
|
|
ignore: ['/ember-test(/|$)', '/tests(/|$)'],
|
|
icon: './assets/app-icons/icon',
|
|
name: config.productName,
|
|
appVersion: config.releaseVersion,
|
|
appBundleId: 'com.electron.boundary',
|
|
appCopyright: config.copyright,
|
|
executableName: config.executableName,
|
|
osxSign: {
|
|
identity: process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY,
|
|
'hardened-runtime': true,
|
|
entitlements: './assets/macos/entitlements.plist',
|
|
'entitlements-inherit': './assets/macos/entitlements.plist',
|
|
'signature-flags': 'library',
|
|
},
|
|
},
|
|
makers: [
|
|
{
|
|
name: '@electron-forge/maker-zip',
|
|
},
|
|
{
|
|
name: '@electron-forge/maker-dmg',
|
|
config: {
|
|
title: config.productName,
|
|
name: config.name,
|
|
icon: './assets/macos/disk.icns',
|
|
background: './assets/macos/background.png',
|
|
},
|
|
},
|
|
{
|
|
name: '@electron-forge/maker-squirrel',
|
|
},
|
|
{
|
|
name: '@electron-forge/maker-deb',
|
|
config: {
|
|
options: {
|
|
name: 'boundary-desktop',
|
|
version: config.releaseVersion,
|
|
icon: './assets/app-icons/icon.png',
|
|
description: 'Desktop Client for Boundary',
|
|
productDescription: 'Desktop Client for Boundary',
|
|
},
|
|
},
|
|
},
|
|
],
|
|
hooks: {
|
|
prePackage: () => {
|
|
console.log(`\n[package] Release commit: ${config.releaseCommit}`);
|
|
console.log(`[package] Release version: ${config.releaseVersion}`);
|
|
|
|
// Check for MacOS signing identity.
|
|
// Ignore signing identity warning for debian builds made on MacOS
|
|
if (
|
|
isMac() &&
|
|
!process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY &&
|
|
!process.env.BUILD_DEBIAN
|
|
)
|
|
console.warn(
|
|
'[package] WARNING: Could not find signing identity. Proceeding without signing.'
|
|
);
|
|
},
|
|
postPackage: async (forgeConfig, options) => {
|
|
if (options.spinner) {
|
|
options.spinner.info(
|
|
`Packaged for ${options.platform}-${options.arch} at ${options.outputPaths[0]}`
|
|
);
|
|
}
|
|
},
|
|
postMake: (forgeConfig, options) => {
|
|
// Copy artifacts into release folder
|
|
options.forEach(({ artifacts, platform, arch }) => {
|
|
// Generate release name
|
|
const version = forgeConfig.packagerConfig.appVersion;
|
|
const destination = path.join('out', 'release', version);
|
|
if (!fs.existsSync(destination))
|
|
fs.mkdirSync(destination, { recursive: true });
|
|
// Copy artifacts
|
|
artifacts.forEach(async (artifact) => {
|
|
const name = `boundary-desktop_${version}_${platform}_${arch}${path.extname(artifact)}`;
|
|
const artifactDestination = path.join(destination, name);
|
|
console.log(`[release] Found artifact: ${artifact}`);
|
|
try {
|
|
await fs.promises.copyFile(artifact, artifactDestination);
|
|
console.log(`[release] Copied artifact: ${path.resolve(artifactDestination)}`);
|
|
} catch (e) {
|
|
console.warn(`[release] Could not copy ${artifact}`, e);
|
|
}
|
|
});
|
|
});
|
|
},
|
|
},
|
|
};
|