From 47c453e979462c5fc8ee1d8e769b992c529e1091 Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Fri, 21 May 2021 17:20:49 -0400 Subject: [PATCH 1/6] feat: Generate forge config file based on platform In addition, store release variables in forge config for display in "About" menu option --- .../electron-app/config/forge.config.js | 59 ------------- ui/desktop/electron-app/config/forge.js | 84 +++++++++++++++++++ ui/desktop/electron-app/package.json | 3 +- ui/desktop/electron-app/src/config/menu.js | 21 ++++- ui/desktop/package.json | 2 +- 5 files changed, 106 insertions(+), 63 deletions(-) delete mode 100644 ui/desktop/electron-app/config/forge.config.js create mode 100644 ui/desktop/electron-app/config/forge.js diff --git a/ui/desktop/electron-app/config/forge.config.js b/ui/desktop/electron-app/config/forge.config.js deleted file mode 100644 index c426f9aff..000000000 --- a/ui/desktop/electron-app/config/forge.config.js +++ /dev/null @@ -1,59 +0,0 @@ -const process = require('process'); -const { version } = require('../src/cli/index.js'); - -const formattedCLIVersion = version().formatted; - -const appVersion = process.env.RELEASE_VERSION - ? `Version: ${process.env.RELEASE_VERSION}\n` - : ''; -const appCommit = process.env.RELEASE_COMMIT - ? `Commit: ${process.env.RELEASE_COMMIT}\n` - : ''; - -const formattedAppVersion = `${appVersion}${appCommit}`; - -// Output version strings for debugging -console.log('\n\nVersion Env Vars:'); -console.log('RELEASE_VERSION ', process.env.RELEASE_VERSION); -console.log('RELEASE_COMMIT ', process.env.RELEASE_COMMIT); - -module.exports = { - releaseVersion: process.env.RELEASE_VERSION, - hooks: { - prePackage: () => { - if (!process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY) { - console.warn('\nWARNING: Could not find signing identity.'); - } - }, - }, - packagerConfig: { - ignore: ['/ember-test(/|$)', '/tests(/|$)'], - name: 'Boundary', - appBundleId: 'com.electron.boundary', - // TODO: where should the client version number come from? - appVersion: `${formattedAppVersion}${formattedCLIVersion}\n`, - appCopyright: 'Copyright © 2021 HashiCorp, Inc.', - icon: './config/macos/icon.icns', - osxSign: { - identity: process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY, - 'hardened-runtime': true, - entitlements: './config/macos/entitlements.plist', - 'entitlements-inherit': './config/macos/entitlements.plist', - 'signature-flags': 'library', - }, - }, - makers: [ - { - name: '@electron-forge/maker-dmg', - config: { - title: 'Boundary', - name: 'boundary', - icon: './config/macos/disk.icns', - background: './config/macos/background.png', - }, - }, - { - name: '@electron-forge/maker-zip', - }, - ], -}; diff --git a/ui/desktop/electron-app/config/forge.js b/ui/desktop/electron-app/config/forge.js new file mode 100644 index 000000000..1b6aab69f --- /dev/null +++ b/ui/desktop/electron-app/config/forge.js @@ -0,0 +1,84 @@ +const fs = require('fs'); +const os = require('os'); +const path = require('path'); + +const DEFAULT_CONFIG = { + packagerConfig: { + ignore: ['/ember-test(/|$)', '/tests(/|$)'], + name: 'Boundary', + version: '0.0.0', + appBundleId: 'com.electron.boundary', + appCopyright: 'Copyright © 2021 HashiCorp, Inc.', + }, + makers: [ + { + name: '@electron-forge/maker-zip', + }, + ], +} + +// Create forge config based on platform +const createConfig = () => { + const config = { ...DEFAULT_CONFIG }; + + // Store env vars in config + ['RELEASE_COMMIT', 'RELEASE_VERSION'].forEach((envVar) => { + if (process.env[envVar]) { + config[envVar] = process.env[envVar]; + console.log(`[forge-config] ${envVar} ${config[envVar]}`); + } + }); + + if (os.platform().match(/(darwin)/i)) { + config.packagerConfig.icon = './config/macos/icon.icns'; + config.packagerConfig.osxSign = { + 'hardened-runtime': true, + entitlements: './config/macos/entitlements.plist', + 'entitlements-inherit': './config/macos/entitlements.plist', + 'signature-flags': 'library', + }; + + // Version + if (config.RELEASE_VERSION) + config.packagerConfig.version = config.RELEASE_VERSION; + + // Signing identity + const signingIdentity = process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY; + if (signingIdentity) { + config.packagerConfig.osxSign.identity = signingIdentity; + } else { + console.warn( + '[forge-config] WARNING: Could not find signing identity. Proceeding without signing.' + ); + } + + // Generate DMG file + config.makers.push({ + name: '@electron-forge/maker-dmg', + config: { + title: 'Boundary', + name: 'boundary', + icon: './config/macos/disk.icns', + background: './config/macos/background.png', + }, + }); + } + + return config; +}; + +// Save forge config file +const saveConfig = (config, destination) => { + const configPath = `${destination}/forge.config.js`; + console.log(`[forge-config] ${configPath}`); + const content = `module.exports = ${JSON.stringify(config, null, 2)}`; + fs.writeFileSync(configPath, content); +}; + +module.exports = { + setup: () => { + const config = createConfig(); + const destination = path.resolve(__dirname); + saveConfig(config, destination); + }, +}; diff --git a/ui/desktop/electron-app/package.json b/ui/desktop/electron-app/package.json index d9df381c8..14502cdfc 100644 --- a/ui/desktop/electron-app/package.json +++ b/ui/desktop/electron-app/package.json @@ -9,9 +9,10 @@ "main": "src/index.js", "scripts": { "build:cli": "node -e 'require(\"./config/cli.js\").setup()'", + "build:config": "node -e 'require(\"./config/forge.js\").setup()'", "start": "electron-forge start", "package": "electron-forge package", - "premake": "yarn build:cli", + "premake": "yarn build:cli && yarn build:config", "make": "electron-forge make", "publish": "electron-forge publish", "lint": "echo \"No linting configured\"" diff --git a/ui/desktop/electron-app/src/config/menu.js b/ui/desktop/electron-app/src/config/menu.js index 5f669e4bb..4e72a2d0f 100644 --- a/ui/desktop/electron-app/src/config/menu.js +++ b/ui/desktop/electron-app/src/config/menu.js @@ -1,5 +1,7 @@ -const { shell } = require('electron'); +const { app, shell, dialog } = require('electron'); const appUpdater = require('../helpers/app-updater.js'); +const forgeConfig = require('../../config/forge.config.js'); +const { version } = require('../cli/index.js'); const generateMenuTemplate = () => { return [ @@ -7,7 +9,22 @@ const generateMenuTemplate = () => { { label: 'Boundary', submenu: [ - { role: 'about' }, + // { role: 'about' }, + { + label: `About ${app.getName()}`, + click: () => { + const appVersion = `Version: ${forgeConfig.RELEASE_VERSION}`; + const appCommit = `Commit: ${forgeConfig.RELEASE_COMMIT}`; + const cliVersion = version().formatted; + + const dialogOpts = { + type: 'none', + message: `${appVersion}\n${appCommit}`, + detail: cliVersion, + }; + dialog.showMessageBox(dialogOpts); + }, + }, { id: 'update', label: 'Check for Updates', diff --git a/ui/desktop/package.json b/ui/desktop/package.json index ad95f6b81..ba2dab71e 100644 --- a/ui/desktop/package.json +++ b/ui/desktop/package.json @@ -28,7 +28,7 @@ "format:sass": "prettier --write app/**/*.scss", "lint:js:fix": "eslint . --fix", "start": "ember serve", - "prestart:desktop": "cd electron-app && yarn build:cli", + "prestart:desktop": "cd electron-app && yarn premake", "start:desktop": "ember electron", "clean:coverage": "rm -rf coverage_*", "pretest": "yarn clean:coverage", From 5bb7d4190390943b54bfce8ae418f53cffe909e6 Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Fri, 21 May 2021 17:38:26 -0400 Subject: [PATCH 2/6] feat: Add copyright info to 'About' menu option Ignore generated forge config file --- ui/desktop/electron-app/.gitignore | 3 +++ ui/desktop/electron-app/src/config/menu.js | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ui/desktop/electron-app/.gitignore b/ui/desktop/electron-app/.gitignore index 75a95bf75..bb7b930fa 100644 --- a/ui/desktop/electron-app/.gitignore +++ b/ui/desktop/electron-app/.gitignore @@ -88,6 +88,9 @@ typings/ # Electron-Forge out/ +# Electron-Forge config +config/forge.config.js + # Ember build ember-dist/ ember-test/ diff --git a/ui/desktop/electron-app/src/config/menu.js b/ui/desktop/electron-app/src/config/menu.js index 4e72a2d0f..d2a0b12c4 100644 --- a/ui/desktop/electron-app/src/config/menu.js +++ b/ui/desktop/electron-app/src/config/menu.js @@ -16,11 +16,12 @@ const generateMenuTemplate = () => { const appVersion = `Version: ${forgeConfig.RELEASE_VERSION}`; const appCommit = `Commit: ${forgeConfig.RELEASE_COMMIT}`; const cliVersion = version().formatted; + const copyright = forgeConfig.packagerConfig.appCopyright; const dialogOpts = { type: 'none', - message: `${appVersion}\n${appCommit}`, - detail: cliVersion, + message: app.getName(), + detail: `${appVersion}\n${appCommit}\n\n${cliVersion}\n\n${copyright}`, }; dialog.showMessageBox(dialogOpts); }, From c99449d8e53175067caea351f311b7b4fcf80e42 Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Mon, 24 May 2021 15:20:02 -0400 Subject: [PATCH 3/6] refactor: Rename forge config generator to electron.js --- .../config/{forge.js => electron.js} | 25 ++++++++++--------- ui/desktop/electron-app/package.json | 2 +- ui/desktop/electron-app/src/config/menu.js | 8 +++--- 3 files changed, 18 insertions(+), 17 deletions(-) rename ui/desktop/electron-app/config/{forge.js => electron.js} (80%) diff --git a/ui/desktop/electron-app/config/forge.js b/ui/desktop/electron-app/config/electron.js similarity index 80% rename from ui/desktop/electron-app/config/forge.js rename to ui/desktop/electron-app/config/electron.js index 1b6aab69f..b5520f2ba 100644 --- a/ui/desktop/electron-app/config/forge.js +++ b/ui/desktop/electron-app/config/electron.js @@ -8,26 +8,27 @@ const DEFAULT_CONFIG = { name: 'Boundary', version: '0.0.0', appBundleId: 'com.electron.boundary', - appCopyright: 'Copyright © 2021 HashiCorp, Inc.', + appCopyright: `Copyright © ${new Date().getFullYear()} HashiCorp, Inc.`, }, makers: [ { name: '@electron-forge/maker-zip', }, ], -} +}; // Create forge config based on platform const createConfig = () => { - const config = { ...DEFAULT_CONFIG }; + const config = { + releaseVersion: process.env.RELEASE_VERSION, + releaseCommit: process.env.RELEASE_COMMIT, + ...DEFAULT_CONFIG, + }; - // Store env vars in config - ['RELEASE_COMMIT', 'RELEASE_VERSION'].forEach((envVar) => { - if (process.env[envVar]) { - config[envVar] = process.env[envVar]; - console.log(`[forge-config] ${envVar} ${config[envVar]}`); - } - }); + console.log(`[forge-config] + release version: ${config.releaseVersion} + release commit: ${config.releaseVersion} + `); if (os.platform().match(/(darwin)/i)) { config.packagerConfig.icon = './config/macos/icon.icns'; @@ -39,8 +40,8 @@ const createConfig = () => { }; // Version - if (config.RELEASE_VERSION) - config.packagerConfig.version = config.RELEASE_VERSION; + if (config.releaseVersion) + config.packagerConfig.version = config.releaseVersion; // Signing identity const signingIdentity = process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY; diff --git a/ui/desktop/electron-app/package.json b/ui/desktop/electron-app/package.json index 14502cdfc..3e2fc020b 100644 --- a/ui/desktop/electron-app/package.json +++ b/ui/desktop/electron-app/package.json @@ -9,7 +9,7 @@ "main": "src/index.js", "scripts": { "build:cli": "node -e 'require(\"./config/cli.js\").setup()'", - "build:config": "node -e 'require(\"./config/forge.js\").setup()'", + "build:config": "node -e 'require(\"./config/electron.js\").setup()'", "start": "electron-forge start", "package": "electron-forge package", "premake": "yarn build:cli && yarn build:config", diff --git a/ui/desktop/electron-app/src/config/menu.js b/ui/desktop/electron-app/src/config/menu.js index d2a0b12c4..2054c8240 100644 --- a/ui/desktop/electron-app/src/config/menu.js +++ b/ui/desktop/electron-app/src/config/menu.js @@ -1,6 +1,6 @@ const { app, shell, dialog } = require('electron'); const appUpdater = require('../helpers/app-updater.js'); -const forgeConfig = require('../../config/forge.config.js'); +const electronConfig = require('../../config/forge.config.js'); const { version } = require('../cli/index.js'); const generateMenuTemplate = () => { @@ -13,10 +13,10 @@ const generateMenuTemplate = () => { { label: `About ${app.getName()}`, click: () => { - const appVersion = `Version: ${forgeConfig.RELEASE_VERSION}`; - const appCommit = `Commit: ${forgeConfig.RELEASE_COMMIT}`; + const appVersion = `Version: ${electronConfig.releaseVersion}`; + const appCommit = `Commit: ${electronConfig.releaseCommit}`; const cliVersion = version().formatted; - const copyright = forgeConfig.packagerConfig.appCopyright; + const copyright = electronConfig.packagerConfig.appCopyright; const dialogOpts = { type: 'none', From 634c522eafc37eee81c344879f66bc83d1214b28 Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Tue, 25 May 2021 15:00:20 -0400 Subject: [PATCH 4/6] refactor: Update electron config console log tag --- ui/desktop/electron-app/config/electron.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ui/desktop/electron-app/config/electron.js b/ui/desktop/electron-app/config/electron.js index b5520f2ba..f1161ebd1 100644 --- a/ui/desktop/electron-app/config/electron.js +++ b/ui/desktop/electron-app/config/electron.js @@ -25,11 +25,15 @@ const createConfig = () => { ...DEFAULT_CONFIG, }; - console.log(`[forge-config] - release version: ${config.releaseVersion} - release commit: ${config.releaseVersion} + console.log(`[electron-config] + Release version: ${config.releaseVersion} + Release commit: ${config.releaseVersion} `); + // Version + if (config.releaseVersion) + config.packagerConfig.version = config.releaseVersion; + if (os.platform().match(/(darwin)/i)) { config.packagerConfig.icon = './config/macos/icon.icns'; config.packagerConfig.osxSign = { @@ -39,17 +43,13 @@ const createConfig = () => { 'signature-flags': 'library', }; - // Version - if (config.releaseVersion) - config.packagerConfig.version = config.releaseVersion; - // Signing identity const signingIdentity = process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY; if (signingIdentity) { config.packagerConfig.osxSign.identity = signingIdentity; } else { console.warn( - '[forge-config] WARNING: Could not find signing identity. Proceeding without signing.' + '[electron-config] WARNING: Could not find signing identity. Proceeding without signing.' ); } @@ -71,7 +71,7 @@ const createConfig = () => { // Save forge config file const saveConfig = (config, destination) => { const configPath = `${destination}/forge.config.js`; - console.log(`[forge-config] ${configPath}`); + console.log(`[electron-config] ${configPath}`); const content = `module.exports = ${JSON.stringify(config, null, 2)}`; fs.writeFileSync(configPath, content); }; From 22c4581d4db1d176e86526d91b78cdce3d64f7a5 Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Tue, 25 May 2021 18:07:04 -0400 Subject: [PATCH 5/6] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20Import=20generat?= =?UTF-8?q?ed=20config=20into=20electron=20forge=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/desktop/electron-app/.gitignore | 4 +- .../config/{macos => app-icons}/icon.icns | Bin ui/desktop/electron-app/config/desktop.js | 63 +++++++++++++ ui/desktop/electron-app/config/electron.js | 85 ------------------ .../electron-app/config/forge.config.js | 34 +++++++ ui/desktop/electron-app/package.json | 2 +- ui/desktop/electron-app/src/config/menu.js | 14 +-- 7 files changed, 107 insertions(+), 95 deletions(-) rename ui/desktop/electron-app/config/{macos => app-icons}/icon.icns (100%) create mode 100644 ui/desktop/electron-app/config/desktop.js delete mode 100644 ui/desktop/electron-app/config/electron.js create mode 100644 ui/desktop/electron-app/config/forge.config.js diff --git a/ui/desktop/electron-app/.gitignore b/ui/desktop/electron-app/.gitignore index bb7b930fa..3aca4c453 100644 --- a/ui/desktop/electron-app/.gitignore +++ b/ui/desktop/electron-app/.gitignore @@ -88,8 +88,8 @@ typings/ # Electron-Forge out/ -# Electron-Forge config -config/forge.config.js +# Generated config +config/config.js # Ember build ember-dist/ diff --git a/ui/desktop/electron-app/config/macos/icon.icns b/ui/desktop/electron-app/config/app-icons/icon.icns similarity index 100% rename from ui/desktop/electron-app/config/macos/icon.icns rename to ui/desktop/electron-app/config/app-icons/icon.icns diff --git a/ui/desktop/electron-app/config/desktop.js b/ui/desktop/electron-app/config/desktop.js new file mode 100644 index 000000000..f5671fb1e --- /dev/null +++ b/ui/desktop/electron-app/config/desktop.js @@ -0,0 +1,63 @@ +const fs = require('fs'); +const path = require('path'); + +// Create config for use in electron forge +const createConfig = () => { + const configPath = path.join(__dirname, '..', 'config'); + const macosConfigPath = path.join(configPath, 'macos'); + const appIconPath = path.join(configPath, 'app-icons', 'icon'); + + const config = { + name: 'boundary', + productName: 'Boundary', + bundleId: 'com.electron.boundary', + copyright: `Copyright © ${new Date().getFullYear()} HashiCorp, Inc.`, + releaseVersion: process.env.RELEASE_VERSION, + releaseCommit: process.env.RELEASE_COMMIT, + icon: appIconPath, + macos: { + hardenedRuntime: true, + entitlements: path.join(macosConfigPath, 'entitlements.plist'), + signatureFlags: 'library', + signingIdentity: process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY, + dmg: { + diskIcon: path.join(macosConfigPath, 'disk.icns'), + background: path.join(macosConfigPath, 'background.png'), + }, + }, + }; + + if (!config.releaseVersion) { + config.releaseVersion = '0.0.0'; + console.warn( + `[desktop-config] Release version not specified. Using: ${config.releaseVersion} instead` + ); + } + + console.log(`[desktop-config] Release commit: ${config.releaseCommit}`); + console.log(`[desktop-config] Release version: ${config.releaseVersion}`); + + // MacOS signing identity + if (!config.macos.signingIdentity) + console.warn( + '[desktop-config] WARNING: Could not find signing identity. Proceeding without signing.' + ); + + return config; +}; + +// Save config file +const saveConfig = (config, destination) => { + const configPath = `${destination}/config.js`; + console.log(`[desktop-config] Config: ${configPath}`); + const content = `module.exports = ${JSON.stringify(config, null, 2)}`; + fs.writeFileSync(configPath, content); +}; + +module.exports = { + setup: () => { + const config = createConfig(); + const destination = path.resolve(__dirname); + saveConfig(config, destination); + }, +}; diff --git a/ui/desktop/electron-app/config/electron.js b/ui/desktop/electron-app/config/electron.js deleted file mode 100644 index f1161ebd1..000000000 --- a/ui/desktop/electron-app/config/electron.js +++ /dev/null @@ -1,85 +0,0 @@ -const fs = require('fs'); -const os = require('os'); -const path = require('path'); - -const DEFAULT_CONFIG = { - packagerConfig: { - ignore: ['/ember-test(/|$)', '/tests(/|$)'], - name: 'Boundary', - version: '0.0.0', - appBundleId: 'com.electron.boundary', - appCopyright: `Copyright © ${new Date().getFullYear()} HashiCorp, Inc.`, - }, - makers: [ - { - name: '@electron-forge/maker-zip', - }, - ], -}; - -// Create forge config based on platform -const createConfig = () => { - const config = { - releaseVersion: process.env.RELEASE_VERSION, - releaseCommit: process.env.RELEASE_COMMIT, - ...DEFAULT_CONFIG, - }; - - console.log(`[electron-config] - Release version: ${config.releaseVersion} - Release commit: ${config.releaseVersion} - `); - - // Version - if (config.releaseVersion) - config.packagerConfig.version = config.releaseVersion; - - if (os.platform().match(/(darwin)/i)) { - config.packagerConfig.icon = './config/macos/icon.icns'; - config.packagerConfig.osxSign = { - 'hardened-runtime': true, - entitlements: './config/macos/entitlements.plist', - 'entitlements-inherit': './config/macos/entitlements.plist', - 'signature-flags': 'library', - }; - - // Signing identity - const signingIdentity = process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY; - if (signingIdentity) { - config.packagerConfig.osxSign.identity = signingIdentity; - } else { - console.warn( - '[electron-config] WARNING: Could not find signing identity. Proceeding without signing.' - ); - } - - // Generate DMG file - config.makers.push({ - name: '@electron-forge/maker-dmg', - config: { - title: 'Boundary', - name: 'boundary', - icon: './config/macos/disk.icns', - background: './config/macos/background.png', - }, - }); - } - - return config; -}; - -// Save forge config file -const saveConfig = (config, destination) => { - const configPath = `${destination}/forge.config.js`; - console.log(`[electron-config] ${configPath}`); - const content = `module.exports = ${JSON.stringify(config, null, 2)}`; - fs.writeFileSync(configPath, content); -}; - -module.exports = { - setup: () => { - const config = createConfig(); - const destination = path.resolve(__dirname); - saveConfig(config, destination); - }, -}; diff --git a/ui/desktop/electron-app/config/forge.config.js b/ui/desktop/electron-app/config/forge.config.js new file mode 100644 index 000000000..58d84bd3e --- /dev/null +++ b/ui/desktop/electron-app/config/forge.config.js @@ -0,0 +1,34 @@ +// Generated during build +const config = require('./config.js'); + +module.exports = { + packagerConfig: { + ignore: ['/ember-test(/|$)', '/tests(/|$)'], + icon: config.icon, + name: config.productName, + appVersion: config.version, + appBundleId: config.bundleId, + appCopyright: config.copyright, + osxSign: { + identity: config.macos.signingIdentity, + 'hardened-runtime': config.macos.hardenedRuntime, + entitlements: config.macos.entitlements, + 'entitlements-inherit': config.macos.entitlements, + 'signature-flags': config.macos.signatureFlags, + }, + }, + makers: [ + { + name: '@electron-forge/maker-zip', + }, + { + name: '@electron-forge/maker-dmg', + config: { + title: config.productName, + name: config.name, + icon: config.macos.dmg.diskIcon, + background: config.macos.dmg.background, + }, + }, + ], +}; diff --git a/ui/desktop/electron-app/package.json b/ui/desktop/electron-app/package.json index 3e2fc020b..49454d45e 100644 --- a/ui/desktop/electron-app/package.json +++ b/ui/desktop/electron-app/package.json @@ -9,7 +9,7 @@ "main": "src/index.js", "scripts": { "build:cli": "node -e 'require(\"./config/cli.js\").setup()'", - "build:config": "node -e 'require(\"./config/electron.js\").setup()'", + "build:config": "node -e 'require(\"./config/desktop.js\").setup()'", "start": "electron-forge start", "package": "electron-forge package", "premake": "yarn build:cli && yarn build:config", diff --git a/ui/desktop/electron-app/src/config/menu.js b/ui/desktop/electron-app/src/config/menu.js index 2054c8240..baa8e1da2 100644 --- a/ui/desktop/electron-app/src/config/menu.js +++ b/ui/desktop/electron-app/src/config/menu.js @@ -1,6 +1,6 @@ -const { app, shell, dialog } = require('electron'); +const { shell, dialog } = require('electron'); const appUpdater = require('../helpers/app-updater.js'); -const electronConfig = require('../../config/forge.config.js'); +const config = require('../../config/config.js'); const { version } = require('../cli/index.js'); const generateMenuTemplate = () => { @@ -11,16 +11,16 @@ const generateMenuTemplate = () => { submenu: [ // { role: 'about' }, { - label: `About ${app.getName()}`, + label: `About ${config.productName}`, click: () => { - const appVersion = `Version: ${electronConfig.releaseVersion}`; - const appCommit = `Commit: ${electronConfig.releaseCommit}`; + const appVersion = `Version: ${config.releaseVersion}`; + const appCommit = `Commit: ${config.releaseCommit}`; const cliVersion = version().formatted; - const copyright = electronConfig.packagerConfig.appCopyright; + const copyright = config.copyright; const dialogOpts = { type: 'none', - message: app.getName(), + message: config.productName, detail: `${appVersion}\n${appCommit}\n\n${cliVersion}\n\n${copyright}`, }; dialog.showMessageBox(dialogOpts); From 10d93992d40a7e41ea192787ae2c822090f81c31 Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Wed, 26 May 2021 15:05:30 -0400 Subject: [PATCH 6/6] refactor: Move assets out of config folder in desktop --- .../{config => assets}/app-icons/icon.icns | Bin .../{config => assets}/macos/background.png | Bin .../macos/background@2x.png | Bin .../{config => assets}/macos/disk.icns | Bin .../macos/entitlements.plist | 0 ui/desktop/electron-app/config/desktop.js | 35 +----------------- .../electron-app/config/forge.config.js | 27 +++++++++----- 7 files changed, 20 insertions(+), 42 deletions(-) rename ui/desktop/electron-app/{config => assets}/app-icons/icon.icns (100%) rename ui/desktop/electron-app/{config => assets}/macos/background.png (100%) rename ui/desktop/electron-app/{config => assets}/macos/background@2x.png (100%) rename ui/desktop/electron-app/{config => assets}/macos/disk.icns (100%) rename ui/desktop/electron-app/{config => assets}/macos/entitlements.plist (100%) diff --git a/ui/desktop/electron-app/config/app-icons/icon.icns b/ui/desktop/electron-app/assets/app-icons/icon.icns similarity index 100% rename from ui/desktop/electron-app/config/app-icons/icon.icns rename to ui/desktop/electron-app/assets/app-icons/icon.icns diff --git a/ui/desktop/electron-app/config/macos/background.png b/ui/desktop/electron-app/assets/macos/background.png similarity index 100% rename from ui/desktop/electron-app/config/macos/background.png rename to ui/desktop/electron-app/assets/macos/background.png diff --git a/ui/desktop/electron-app/config/macos/background@2x.png b/ui/desktop/electron-app/assets/macos/background@2x.png similarity index 100% rename from ui/desktop/electron-app/config/macos/background@2x.png rename to ui/desktop/electron-app/assets/macos/background@2x.png diff --git a/ui/desktop/electron-app/config/macos/disk.icns b/ui/desktop/electron-app/assets/macos/disk.icns similarity index 100% rename from ui/desktop/electron-app/config/macos/disk.icns rename to ui/desktop/electron-app/assets/macos/disk.icns diff --git a/ui/desktop/electron-app/config/macos/entitlements.plist b/ui/desktop/electron-app/assets/macos/entitlements.plist similarity index 100% rename from ui/desktop/electron-app/config/macos/entitlements.plist rename to ui/desktop/electron-app/assets/macos/entitlements.plist diff --git a/ui/desktop/electron-app/config/desktop.js b/ui/desktop/electron-app/config/desktop.js index f5671fb1e..95c15ff3b 100644 --- a/ui/desktop/electron-app/config/desktop.js +++ b/ui/desktop/electron-app/config/desktop.js @@ -3,55 +3,24 @@ const path = require('path'); // Create config for use in electron forge const createConfig = () => { - const configPath = path.join(__dirname, '..', 'config'); - const macosConfigPath = path.join(configPath, 'macos'); - const appIconPath = path.join(configPath, 'app-icons', 'icon'); - const config = { name: 'boundary', productName: 'Boundary', - bundleId: 'com.electron.boundary', copyright: `Copyright © ${new Date().getFullYear()} HashiCorp, Inc.`, releaseVersion: process.env.RELEASE_VERSION, releaseCommit: process.env.RELEASE_COMMIT, - icon: appIconPath, - macos: { - hardenedRuntime: true, - entitlements: path.join(macosConfigPath, 'entitlements.plist'), - signatureFlags: 'library', - signingIdentity: process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY, - dmg: { - diskIcon: path.join(macosConfigPath, 'disk.icns'), - background: path.join(macosConfigPath, 'background.png'), - }, - }, }; - if (!config.releaseVersion) { - config.releaseVersion = '0.0.0'; - console.warn( - `[desktop-config] Release version not specified. Using: ${config.releaseVersion} instead` - ); - } - - console.log(`[desktop-config] Release commit: ${config.releaseCommit}`); - console.log(`[desktop-config] Release version: ${config.releaseVersion}`); - - // MacOS signing identity - if (!config.macos.signingIdentity) - console.warn( - '[desktop-config] WARNING: Could not find signing identity. Proceeding without signing.' - ); - + if (!config.releaseVersion) config.releaseVersion = '0.0.0'; return config; }; // Save config file const saveConfig = (config, destination) => { const configPath = `${destination}/config.js`; - console.log(`[desktop-config] Config: ${configPath}`); const content = `module.exports = ${JSON.stringify(config, null, 2)}`; fs.writeFileSync(configPath, content); + console.log(`Create: ${configPath}`); }; module.exports = { diff --git a/ui/desktop/electron-app/config/forge.config.js b/ui/desktop/electron-app/config/forge.config.js index 58d84bd3e..4db3e2f8a 100644 --- a/ui/desktop/electron-app/config/forge.config.js +++ b/ui/desktop/electron-app/config/forge.config.js @@ -1,20 +1,29 @@ // Generated during build const config = require('./config.js'); +console.log(`\n[forge-config] Release commit: ${config.releaseCommit}`); +console.log(`[forge-config] Release version: ${config.releaseVersion}`); + +// MacOS signing identity +if (process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY) + console.warn( + '[forge-config] WARNING: Could not find signing identity. Proceeding without signing.' + ); + module.exports = { packagerConfig: { ignore: ['/ember-test(/|$)', '/tests(/|$)'], - icon: config.icon, + icon: './assets/app-icons/icon', name: config.productName, appVersion: config.version, - appBundleId: config.bundleId, + appBundleId: 'com.electron.boundary', appCopyright: config.copyright, osxSign: { - identity: config.macos.signingIdentity, - 'hardened-runtime': config.macos.hardenedRuntime, - entitlements: config.macos.entitlements, - 'entitlements-inherit': config.macos.entitlements, - 'signature-flags': config.macos.signatureFlags, + 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: [ @@ -26,8 +35,8 @@ module.exports = { config: { title: config.productName, name: config.name, - icon: config.macos.dmg.diskIcon, - background: config.macos.dmg.background, + icon: './assets/macos/disk.icns', + background: './assets/macos/background.png', }, }, ],