Skip to content
This repository has been archived by the owner on Oct 21, 2020. It is now read-only.

Commit

Permalink
feat(electron): package rai_node executables within the repo itself
Browse files Browse the repository at this point in the history
  • Loading branch information
devinus committed Jul 6, 2018
1 parent 796544f commit d38073a
Show file tree
Hide file tree
Showing 15 changed files with 6,261 additions and 188 deletions.
12 changes: 3 additions & 9 deletions app/electron/service.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,6 @@ export default Service.extend(Evented, DisposableMixin, {
},
}).volatile(),

isNodeDownloaded: computed('remote', {
get() {
return this.getRemoteGlobal('isNodeDownloaded', false);
},
}).volatile(),

isDataDownloaded: computed('remote', {
get() {
return this.getRemoteGlobal('isDataDownloaded', false);
Expand All @@ -119,12 +113,12 @@ export default Service.extend(Evented, DisposableMixin, {
return this.shell.openExternal(...args);
},

download(asset) {
download(key) {
return new Promise((resolve, reject) => {
const config = this.get('config');
const platform = this.get('platform');
const ipcRenderer = this.get('ipcRenderer');
const { url, integrity } = get(config, `assets.${asset}.${platform}`);
const assets = get(config, 'assets');
const { url, integrity } = get(assets, key);
ipcRenderer.once('download-error', () => reject(new DownloadError()));
ipcRenderer.once('download-progress', () => resolve(this));
ipcRenderer.once('download-done', this.onDownloadDone.bind(this));
Expand Down
2 changes: 1 addition & 1 deletion app/setup/download/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ import Controller from '@ember/controller';

export default Controller.extend({
queryParams: ['asset'],
asset: null,
asset: 'data',
});
11 changes: 0 additions & 11 deletions app/setup/download/route.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,6 @@ export default Route.extend({
},
},

// beforeModel(...args) {
// const electron = this.get('electron');
// const isNodeDownloaded = get(electron, 'isNodeDownloaded');
// const isDataDownloaded = get(electron, 'isDataDownloaded');
// if (isNodeDownloaded && isDataDownloaded) {
// return this.transitionTo('setup.start');
// }

// return this._super(...args);
// },

model({ asset }) {
return this.get('electron').download(asset);
},
Expand Down
5 changes: 0 additions & 5 deletions app/setup/start/route.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,6 @@ export default Route.extend({
const electron = this.get('electron');
const isElectron = get(electron, 'isElectron');
if (isElectron) {
const isNodeDownloaded = get(electron, 'isNodeDownloaded');
if (!isNodeDownloaded) {
return this.transitionTo('setup.download', { queryParams: { asset: 'node' } });
}

const isDataDownloaded = get(electron, 'isDataDownloaded');
if (!isDataDownloaded) {
return this.transitionTo('setup.download', { queryParams: { asset: 'data' } });
Expand Down
3 changes: 1 addition & 2 deletions app/start/route.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@ export default Route.extend({
const electron = this.get('electron');
const isElectron = get(electron, 'isElectron');
if (isElectron) {
const isNodeDownloaded = get(electron, 'isNodeDownloaded');
const isDataDownloaded = get(electron, 'isDataDownloaded');
if (!isNodeDownloaded || !isDataDownloaded) {
if (!isDataDownloaded) {
return this.transitionTo('setup.start');
}
}
Expand Down
6 changes: 2 additions & 4 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,10 @@ after_test:
$path = Join-Path -Path "$env:TMP" -ChildPath csc.p12
[IO.File]::WriteAllBytes($path, [Convert]::FromBase64String($env:CSC_LINK))
Set-AppveyorBuildVariable -Name 'CSC_LINK' -Value $path
- yarn cross-env DEBUG='electron-windows-installer:*' NODE_ENV=production ember electron:package -e production --build-path electron-out/ember
- yarn cross-env DEBUG='electron-windows-installer:*' NODE_ENV=production ember electron:make -e production --skip-package
- yarn cross-env NODE_ENV=production ember electron:package -e production --build-path electron-out/ember
- yarn cross-env NODE_ENV=production ember electron:make -e production --skip-package
- ps: Remove-Item env:CSC_KEY_PASSWORD
- ps: Remove-Item -Path $env:CSC_LINK
- ps: Remove-Item env:CSC_LINK
- ps: Write-Host "CSC_LINK = $env:CSC_LINK"

artifacts:
- path: electron-out\make\*.zip
Expand Down
32 changes: 4 additions & 28 deletions config/environment.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,38 +47,14 @@ module.exports = (environment) => {
},

links: {
eula: 'http://nanowalletcompany.com/desktop-eula',
privacyPolicy: 'http://nanowalletcompany.com/desktop-privacy-policy',
eula: 'https://nanowalletcompany.com/desktop-eula',
privacyPolicy: 'https://nanowalletcompany.com/desktop-privacy-policy',
},

assets: {
node: {
darwin: {
url: 'https://d31vj5w9sn4ozg.cloudfront.net/node-darwin-698798436c7a12b50360bf7a36b8b17a.zip',
integrity: 'sha512-GJgZmjwe0L/Zd2ryDTo4MG63eJCsBFaQjEMun/42CaeLsPenSPnVcRWcND5GH5Vv9AZmhg/qZfRJJtNzJXVfaQ==',
},
linux: {
url: 'https://d31vj5w9sn4ozg.cloudfront.net/node-linux-14490c4f97d204d3edad4a370cb129fd.zip',
integrity: 'sha512-IIrRm6AUOd7HefOwNy4YVpUKLjaFM0KTrmaTZwYgmow5kiKVvtV+Qhs/k4Dv4eZWdBvygT2AxTdHVRtOsA7Fug==',
},
win32: {
url: 'https://d31vj5w9sn4ozg.cloudfront.net/node-win32-9a82e5347de383929b97b2a8ef88aa0a.zip',
integrity: 'sha512-rM48YIoRKvAmCouivBK9qqlQXSkpJWango0bs8esbVTulG/XvsXKWuGUDqFiyfPt24Mxo8kWxgwr0HIh80EXMw==',
},
},
data: {
darwin: {
url: 'https://d31vj5w9sn4ozg.cloudfront.net/data-f356607a83d34613c810cc68755114b8.zip',
integrity: 'sha512-dSCSDvr2NwMy3FmIVqlI1Q9gVNCrU3/e5//kTWKI4J/0XVEK9m/lDfQmGHr5pvqTgVBMdPD/5/9T2jzvNSaoYQ==',
},
linux: {
url: 'https://d31vj5w9sn4ozg.cloudfront.net/data-f356607a83d34613c810cc68755114b8.zip',
integrity: 'sha512-dSCSDvr2NwMy3FmIVqlI1Q9gVNCrU3/e5//kTWKI4J/0XVEK9m/lDfQmGHr5pvqTgVBMdPD/5/9T2jzvNSaoYQ==',
},
win32: {
url: 'https://d31vj5w9sn4ozg.cloudfront.net/data-f356607a83d34613c810cc68755114b8.zip',
integrity: 'sha512-dSCSDvr2NwMy3FmIVqlI1Q9gVNCrU3/e5//kTWKI4J/0XVEK9m/lDfQmGHr5pvqTgVBMdPD/5/9T2jzvNSaoYQ==',
},
url: 'https://d31vj5w9sn4ozg.cloudfront.net/data-f356607a83d34613c810cc68755114b8.zip',
integrity: 'sha512-dSCSDvr2NwMy3FmIVqlI1Q9gVNCrU3/e5//kTWKI4J/0XVEK9m/lDfQmGHr5pvqTgVBMdPD/5/9T2jzvNSaoYQ==',
},
},
};
Expand Down
22 changes: 14 additions & 8 deletions ember-electron/electron-forge-config.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const path = require('path');
const moment = require('moment');

const {
version,
Expand Down Expand Up @@ -26,12 +27,7 @@ const [, name] = packageName.split('/');
const categories = linuxDesktopCategories.split(';');
const productIdentifier = productName.split(' ').join('');

const buildNumber = process.env.CI_JOB_ID
|| process.env.CI_BUILD_ID
|| process.env.TRAVIS_BUILD_NUMBER
|| process.env.APPVEYOR_BUILD_VERSION
|| '0';

const buildNumber = moment().format('YYYYMMDDHHmmss');
const buildVersion = `${version}+${buildNumber}`;

const osxSign = {
Expand Down Expand Up @@ -88,9 +84,19 @@ module.exports = {
buildVersion,
appBundleId,
appCategoryType,
asar: true,
ignore: [
'\\.xml$',
'\bordering.txt$',
],
asar: {
ordering: path.join(__dirname, 'ordering.txt'),
unpackDir: path.join('ember-electron', 'resources'),
},
extendInfo: {
CFBundleDevelopmentRegion: 'en_US',
CSResourcesFileMapped: true,
},
overwrite: true,
ignore: ['\\.xml$'],
packageManager: 'yarn',
executableName: name,
win32metadata: {
Expand Down
20 changes: 7 additions & 13 deletions ember-electron/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@ log.transports.file.level = 'info';
log.transports.rendererConsole.level = 'info';

global.locale = locale2 || null;
global.isNodeDownloaded = false;
global.isDataDownloaded = false;
global.isNodeStarted = false;
global.isQuitting = false;
Expand Down Expand Up @@ -170,6 +169,9 @@ protocolServe({
// autoSubmit: true
// });

const basePath = is.development ? __dirname : path.join(process.resourcesPath, 'app.asar.unpacked', 'ember-electron');
const resourcesPath = path.join(basePath, 'resources');

const generateCert = (commonName) => {
const attrs = [
{ name: 'commonName', value: commonName },
Expand Down Expand Up @@ -375,7 +377,7 @@ const startNode = async () => {
},
});

const cmd = path.join(dataPath, toExecutableName('rai_node'));
const cmd = path.join(resourcesPath, toExecutableName('rai_node'));
log.info('Starting node:', cmd);

const child = spawn(cmd, ['--daemon', '--data_path', dataPath], {
Expand Down Expand Up @@ -582,7 +584,7 @@ const createWindow = () => {
height,
} = mainWindowState;

const icon = path.join(process.resourcesPath, 'icon.png');
const icon = path.join(resourcesPath, 'icon.png');
const win = new BrowserWindow({
icon,
x,
Expand Down Expand Up @@ -717,28 +719,20 @@ const run = async () => {
const dataPath = path.normalize(app.getPath('userData'));
const storeVersion = store.get('version');
if (!storeVersion || semver.gt(version, storeVersion)) {
const outdatedAssets = ['config.json', toExecutableName('rai_node')];
const outdatedAssets = ['config.json'];
log.info('Deleting outdated assets:', outdatedAssets.join(', '));
await del(outdatedAssets, { force: true, cwd: dataPath });
}

store.set('version', version);

const nodePath = path.join(dataPath, toExecutableName('rai_node'));
const databasePath = path.join(dataPath, 'data.ldb');

Object.defineProperty(global, 'locale', {
get() {
return app.getLocale() || locale2 || null;
},
});

Object.defineProperty(global, 'isNodeDownloaded', {
get() {
return pathExists.sync(nodePath);
},
});

const databasePath = path.join(dataPath, 'data.ldb');
Object.defineProperty(global, 'isDataDownloaded', {
get() {
return pathExists.sync(databasePath);
Expand Down
Loading

0 comments on commit d38073a

Please sign in to comment.