From 175de493149ffa1370b4b7b09927f34d8c864658 Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Tue, 18 Apr 2017 21:53:04 -0400 Subject: [PATCH 01/18] Upgrade webdriver, fix integration test --- package.json | 23 +++++++++-------------- tasks/postinstall.js | 6 +++--- test/e2e.js | 2 +- test/example.js | 9 --------- 4 files changed, 13 insertions(+), 27 deletions(-) delete mode 100644 test/example.js diff --git a/package.json b/package.json index 00f543f..fc5653f 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "scripts": { "test": "cross-env NODE_ENV=test mocha --compilers js:babel-core/register --recursive --require ./test/setup.js test/**/*.spec.js", "test-watch": "npm test -- --watch", - "test-e2e": "cross-env NODE_ENV=test mocha --compilers js:babel-core/register --require ./test/setup.js --require co-mocha ./test/e2e.js", + "test-e2e": "cross-env NODE_ENV=production mocha --compilers js:babel-core/register --require ./test/setup.js --require co-mocha ./test/e2e.js", "coverage": "NODE_ENV=test node_modules/.bin/nyc --require babel-core/register node_modules/.bin/_mocha --recursive --require ./test/setup.js test/**/*.spec.js", "lint": "eslint src test *.js", "hot-server": "node server.js", @@ -17,7 +17,7 @@ "clean-build": "npm prune && npm run clean && npm run build-app", "start": "cross-env NODE_ENV=production electron ./", "start-hot": "cross-env HOT=1 NODE_ENV=development electron ./", - "postinstall": "node node_modules/fbjs-scripts/node/check-dev-engines.js package.json && install-app-deps && node tasks/postinstall.js", + "postinstall": "node node_modules/fbjs-scripts/node/check-dev-engines.js package.json && install-app-deps && node tasks/postinstall.js && electron-rebuild", "dev": "concurrently --kill-others \"npm run hot-server\" \"npm run start-hot\"", "dist": "build" }, @@ -34,12 +34,9 @@ "icon": "build/icons/app.icns" } }, - "directories": { - "output": "release", - "app": "app" - }, "bin": { - "electron": "./node_modules/.bin/electron" + "electron": "./node_modules/.bin/electron", + "electron-rebuild": "./node_modules/.bin/electron-rebuild" }, "license": "MIT", "devDependencies": { @@ -56,18 +53,16 @@ "babel-preset-react-hmre": "^1.0.1", "babel-preset-stage-0": "^6.3.13", "chai": "^3.3.0", - "chromedriver": "^2.19.0", + "chromedriver": "^2.29.0", "co-mocha": "^1.1.2", "concurrently": "^2.0.0", "cross-env": "^1.0.7", "css-loader": "^0.23.1", "del": "^2.0.1", "dirty-chai": "^1.2.2", - "electron-builder": "^3.16.1", - "electron-installer-debian": "^0.3.0", - "electron-packager": "^7.0.1", - "electron-prebuilt": "^0.37.4", - "electron-rebuild": "^1.1.3", + "electron": "^1.4.16", + "electron-builder": "^17.0.1", + "electron-rebuild": "^1.5.7", "enzyme": "^2.2.0", "eslint": "^2.7.0", "eslint-config-airbnb": "^7.0.0", @@ -87,7 +82,7 @@ "react-addons-test-utils": "^15.0.0", "redux-logger": "^2.6.1", "sass-loader": "^3.2.0", - "selenium-webdriver": "^2.48.2", + "selenium-webdriver": "^3.3.0", "sinon": "^1.17.3", "style-loader": "^0.13.0", "url-loader": "^0.5.7", diff --git a/tasks/postinstall.js b/tasks/postinstall.js index 9a96262..9fd1c1e 100644 --- a/tasks/postinstall.js +++ b/tasks/postinstall.js @@ -14,11 +14,11 @@ fs.lstat(symlink, (e, stats) => { }); // Rebuild native app modules to match electron version -const electron = require('electron-prebuilt'); -const electronPackage = require('electron-prebuilt/package.json'); +const electron = require('electron'); +const electronPackage = require('electron/package.json'); const rebuild = require('electron-rebuild'); -const pathToElectronNativeModules = path.join(__dirname, '../src/node_modules'); +const pathToElectronNativeModules = path.join(__dirname, '../app/node_modules'); rebuild.shouldRebuildNativeModules(electron) .then((shouldBuild) => { diff --git a/test/e2e.js b/test/e2e.js index 898d251..1296a6c 100644 --- a/test/e2e.js +++ b/test/e2e.js @@ -2,7 +2,7 @@ import path from 'path'; import chromedriver from 'chromedriver'; import webdriver from 'selenium-webdriver'; import { expect } from 'chai'; -import electronPath from 'electron-prebuilt'; +import electronPath from 'electron'; chromedriver.start(); // on port 9515 process.on('exit', chromedriver.stop); diff --git a/test/example.js b/test/example.js deleted file mode 100644 index b5db818..0000000 --- a/test/example.js +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint func-names: 0 */ -import { expect } from 'chai'; - - -describe('description', () => { - it('description', () => { - expect(1 + 2).to.equal(3); - }); -}); From f4339f52eae3245ed71fce3151501226dfe1a379 Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Fri, 21 Apr 2017 23:10:28 -0400 Subject: [PATCH 02/18] WIP --- package.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index fc5653f..24b9fa5 100644 --- a/package.json +++ b/package.json @@ -94,15 +94,15 @@ "dependencies": { "electron-debug": "^0.6.0", "font-awesome": "^4.4.0", - "react": "^15.0.1", - "react-dom": "^15.0.1", - "react-redux": "^4.4.5", + "react": "^15.5.0", + "react-dom": "^15.5.0", + "react-redux": "^4.4.8", "react-router": "^2.3.0", "react-router-redux": "^4.0.0", - "redux": "^3.2.1", - "redux-form": "^5.1.1", - "redux-promise": "^0.5.0", - "redux-thunk": "^2.0.0" + "redux": "^3.6.0", + "redux-form": "^5.3.6", + "redux-promise": "^0.5.1", + "redux-thunk": "^2.2.0" }, "devEngines": { "node": "4.x || 5.x || 6.x || 7.x", From 15906f9d58b8ecc9bfca73f86454490174c6c304 Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Sat, 29 Apr 2017 12:25:16 -0400 Subject: [PATCH 03/18] Ignore DS_Store files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 7e6cca9..ce7a7db 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ dist release .nyc_output .vagrant/ +.DS_Store # External roles are included from Ansible Galaxy, don't version control. ansible/roles/geerlingguy.nodejs From 9a6175a0361a1700c13345aca53e3472050b9b5a Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Sat, 29 Apr 2017 20:52:53 -0400 Subject: [PATCH 04/18] Get build working on OS X with updated electron-builder --- package.json | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 24b9fa5..6943dc9 100644 --- a/package.json +++ b/package.json @@ -19,17 +19,11 @@ "start-hot": "cross-env HOT=1 NODE_ENV=development electron ./", "postinstall": "node node_modules/fbjs-scripts/node/check-dev-engines.js package.json && install-app-deps && node tasks/postinstall.js && electron-rebuild", "dev": "concurrently --kill-others \"npm run hot-server\" \"npm run start-hot\"", - "dist": "build" + "dist": "npm run build-app && build" }, "build": { - "app-bundle-id": "apple.app.id", - "app-category-type": "public.app-category.utilities", "productName": "Sunder", "asar": false, - "osx": { - "background": "build/bg.jpg", - "icon": "build/icons/app.icns" - }, "linux": { "icon": "build/icons/app.icns" } @@ -92,7 +86,7 @@ "webpack-target-electron-renderer": "^0.4.0" }, "dependencies": { - "electron-debug": "^0.6.0", + "electron-debug": "^1.1.0", "font-awesome": "^4.4.0", "react": "^15.5.0", "react-dom": "^15.5.0", From c30365df0265dd4ffca34b2e1f386da351f0a7d8 Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Sat, 29 Apr 2017 21:07:00 -0400 Subject: [PATCH 05/18] Explicitly require prop-types, per deprecation. --- package.json | 1 + src/components/BackButton.js | 3 ++- src/components/Button.js | 3 ++- src/components/CopyButton.js | 3 ++- src/components/Distribute.js | 3 ++- src/components/ErrorMessage.js | 3 ++- src/components/Export.js | 3 ++- src/components/FileInput.js | 3 ++- src/components/FileOrTextInput.js | 3 ++- src/components/Home.js | 3 ++- src/components/HomeButton.js | 3 ++- src/components/Info.js | 3 ++- src/components/Layout.js | 3 ++- src/components/Modal.js | 3 ++- src/components/NumberField.js | 3 ++- src/components/Panel.js | 3 ++- src/components/PuzzleIcon.js | 3 ++- src/components/Recover.js | 3 ++- src/components/RecoverStatus.js | 3 ++- src/components/RecoverStatusShare.js | 3 ++- src/components/SaveFileButton.js | 3 ++- src/components/ShareInput.js | 3 ++- src/components/ShareRow.js | 3 ++- src/components/Split.js | 3 ++- src/components/SplitOptions.js | 3 ++- src/components/VeraCryptButton.js | 3 ++- src/containers/App.js | 3 ++- src/containers/DistributeScreen.js | 3 ++- src/containers/ExportScreen.js | 3 ++- src/containers/HomeScreen.js | 3 ++- src/containers/RecoverScreen.js | 3 ++- src/containers/SplitScreen.js | 3 ++- 32 files changed, 63 insertions(+), 31 deletions(-) diff --git a/package.json b/package.json index 6943dc9..f8603f4 100644 --- a/package.json +++ b/package.json @@ -88,6 +88,7 @@ "dependencies": { "electron-debug": "^1.1.0", "font-awesome": "^4.4.0", + "prop-types": "^15.5.8", "react": "^15.5.0", "react-dom": "^15.5.0", "react-redux": "^4.4.8", diff --git a/src/components/BackButton.js b/src/components/BackButton.js index edb8fa3..9f3a3cf 100644 --- a/src/components/BackButton.js +++ b/src/components/BackButton.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import Button from './Button'; diff --git a/src/components/Button.js b/src/components/Button.js index d8d0b0f..0e3f812 100644 --- a/src/components/Button.js +++ b/src/components/Button.js @@ -1,4 +1,5 @@ -import React, { PropTypes } from 'react'; +import React from 'react'; +import PropTypes from 'prop-types'; import './Button.scss'; export default function Button(props) { diff --git a/src/components/CopyButton.js b/src/components/CopyButton.js index c3dd019..d587eca 100644 --- a/src/components/CopyButton.js +++ b/src/components/CopyButton.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import Button from './Button'; diff --git a/src/components/Distribute.js b/src/components/Distribute.js index 56ab1a1..bbbb89f 100644 --- a/src/components/Distribute.js +++ b/src/components/Distribute.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import ShareRow from './ShareRow'; import Panel from './Panel'; import Info from './Info'; diff --git a/src/components/ErrorMessage.js b/src/components/ErrorMessage.js index 99efd7f..f59253d 100644 --- a/src/components/ErrorMessage.js +++ b/src/components/ErrorMessage.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import './ErrorMessage.scss'; diff --git a/src/components/Export.js b/src/components/Export.js index f6937bc..cc197d6 100644 --- a/src/components/Export.js +++ b/src/components/Export.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import './Export.scss'; import Panel from './Panel'; import Button from './Button'; diff --git a/src/components/FileInput.js b/src/components/FileInput.js index 265e464..1f9a966 100644 --- a/src/components/FileInput.js +++ b/src/components/FileInput.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import Button from 'src/components/Button'; import fs from 'fs'; diff --git a/src/components/FileOrTextInput.js b/src/components/FileOrTextInput.js index c10e101..7763783 100644 --- a/src/components/FileOrTextInput.js +++ b/src/components/FileOrTextInput.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import FileInput from './FileInput'; import './FileOrTextInput.scss'; diff --git a/src/components/Home.js b/src/components/Home.js index 9fe9c5f..190c4ca 100644 --- a/src/components/Home.js +++ b/src/components/Home.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import './Home.scss'; import PuzzleIcon from 'src/components/PuzzleIcon'; import Button from './Button'; diff --git a/src/components/HomeButton.js b/src/components/HomeButton.js index f499d8c..46a1d9e 100644 --- a/src/components/HomeButton.js +++ b/src/components/HomeButton.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import Button from './Button'; diff --git a/src/components/Info.js b/src/components/Info.js index 444812b..f547075 100644 --- a/src/components/Info.js +++ b/src/components/Info.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import './Info.scss'; diff --git a/src/components/Layout.js b/src/components/Layout.js index 8d21fad..c1c7509 100644 --- a/src/components/Layout.js +++ b/src/components/Layout.js @@ -1,4 +1,5 @@ -import React, { PropTypes } from 'react'; +import React from 'react'; +import PropTypes from 'prop-types'; import './Layout.scss'; diff --git a/src/components/Modal.js b/src/components/Modal.js index 896ab7b..5d64a7d 100644 --- a/src/components/Modal.js +++ b/src/components/Modal.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import Panel from './Panel'; import './Modal.scss'; diff --git a/src/components/NumberField.js b/src/components/NumberField.js index 6ca1861..8c8138f 100644 --- a/src/components/NumberField.js +++ b/src/components/NumberField.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import './Field.scss'; /** diff --git a/src/components/Panel.js b/src/components/Panel.js index e389a02..6c5ce88 100644 --- a/src/components/Panel.js +++ b/src/components/Panel.js @@ -1,4 +1,5 @@ -import React, { PropTypes } from 'react'; +import React from 'react'; +import PropTypes from 'prop-types'; import './Panel.scss'; diff --git a/src/components/PuzzleIcon.js b/src/components/PuzzleIcon.js index bb2a8f9..89af7ef 100644 --- a/src/components/PuzzleIcon.js +++ b/src/components/PuzzleIcon.js @@ -1,4 +1,5 @@ -import React, { PropTypes } from 'react'; +import React from 'react'; +import PropTypes from 'prop-types'; import './PuzzleIcon.scss'; diff --git a/src/components/Recover.js b/src/components/Recover.js index a57ab93..d92f73a 100644 --- a/src/components/Recover.js +++ b/src/components/Recover.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import Button from './Button'; import ShareInput from './ShareInput'; import RecoverStatus from './RecoverStatus'; diff --git a/src/components/RecoverStatus.js b/src/components/RecoverStatus.js index a0fe94a..1eec481 100644 --- a/src/components/RecoverStatus.js +++ b/src/components/RecoverStatus.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import RecoverStatusShare from './RecoverStatusShare'; import './RecoverStatus.scss'; diff --git a/src/components/RecoverStatusShare.js b/src/components/RecoverStatusShare.js index c55ca47..65ce774 100644 --- a/src/components/RecoverStatusShare.js +++ b/src/components/RecoverStatusShare.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { removeShare } from '../ducks/recover'; import './RecoverStatusShare.scss'; diff --git a/src/components/SaveFileButton.js b/src/components/SaveFileButton.js index 0feba60..a12f8c3 100644 --- a/src/components/SaveFileButton.js +++ b/src/components/SaveFileButton.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import { remote } from 'electron'; import fs from 'fs'; import Button from './Button'; diff --git a/src/components/ShareInput.js b/src/components/ShareInput.js index 8b85013..f0378fd 100644 --- a/src/components/ShareInput.js +++ b/src/components/ShareInput.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import { reduxForm } from 'redux-form'; import { createValidator, required } from 'src/lib/validations'; import FileOrTextInput from 'src/components/FileOrTextInput'; diff --git a/src/components/ShareRow.js b/src/components/ShareRow.js index 67e41b9..e73f965 100644 --- a/src/components/ShareRow.js +++ b/src/components/ShareRow.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import Button from './Button'; import CopyButton from './CopyButton'; import SaveFileButton from './SaveFileButton'; diff --git a/src/components/Split.js b/src/components/Split.js index 94961b6..b2d877d 100644 --- a/src/components/Split.js +++ b/src/components/Split.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import FileOrTextInput from './FileOrTextInput'; import SplitOptions from './SplitOptions'; import Button from './Button'; diff --git a/src/components/SplitOptions.js b/src/components/SplitOptions.js index 852cb64..471e32c 100644 --- a/src/components/SplitOptions.js +++ b/src/components/SplitOptions.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import NumberField from './NumberField'; import './SplitOptions.scss'; diff --git a/src/components/VeraCryptButton.js b/src/components/VeraCryptButton.js index 0c54b87..8841222 100644 --- a/src/components/VeraCryptButton.js +++ b/src/components/VeraCryptButton.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import Info from './Info'; import Button from './Button'; import ErrorMessage from './ErrorMessage'; diff --git a/src/containers/App.js b/src/containers/App.js index c031a31..006338f 100644 --- a/src/containers/App.js +++ b/src/containers/App.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; export default class App extends Component { static propTypes = { diff --git a/src/containers/DistributeScreen.js b/src/containers/DistributeScreen.js index d06d932..775e6c8 100644 --- a/src/containers/DistributeScreen.js +++ b/src/containers/DistributeScreen.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import Distribute from '../components/Distribute'; import HomeButton from '../components/HomeButton'; diff --git a/src/containers/ExportScreen.js b/src/containers/ExportScreen.js index e143eb7..a28d897 100644 --- a/src/containers/ExportScreen.js +++ b/src/containers/ExportScreen.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import HomeButton from 'src/components/HomeButton'; import Layout from '../components/Layout'; diff --git a/src/containers/HomeScreen.js b/src/containers/HomeScreen.js index c59807e..f1cb5be 100644 --- a/src/containers/HomeScreen.js +++ b/src/containers/HomeScreen.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import Home from '../components/Home'; import { reset } from 'src/ducks/global'; diff --git a/src/containers/RecoverScreen.js b/src/containers/RecoverScreen.js index cca9255..c40eeab 100644 --- a/src/containers/RecoverScreen.js +++ b/src/containers/RecoverScreen.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { recover, reset, addShare } from '../ducks/recover'; import Recover from '../components/Recover'; diff --git a/src/containers/SplitScreen.js b/src/containers/SplitScreen.js index d0369ee..571eecf 100644 --- a/src/containers/SplitScreen.js +++ b/src/containers/SplitScreen.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import { split } from '../ducks/split'; import { connect } from 'react-redux'; import Split from '../components/Split'; From 197339cb626c4e989ccf792f925a1ed485dcd65f Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Sat, 29 Apr 2017 21:20:41 -0400 Subject: [PATCH 06/18] Update to the maintained 3.x branch of react-router. The project is undergoing a total rewrite for 4.x, but at least for now the plan is to support 3.x indefinitely. Migrating to 4.x will require rewriting the routing code (there isn't much of it.) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f8603f4..16ebe2c 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "react": "^15.5.0", "react-dom": "^15.5.0", "react-redux": "^4.4.8", - "react-router": "^2.3.0", + "react-router": "^3.0.5", "react-router-redux": "^4.0.0", "redux": "^3.6.0", "redux-form": "^5.3.6", From f6460b83c5510dd23d00918b6d84490d96ef78d0 Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Sat, 29 Apr 2017 21:34:26 -0400 Subject: [PATCH 07/18] Migrate module-alias -> module-resolver --- .babelrc | 8 +++++--- package.json | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.babelrc b/.babelrc index ed8e6fa..f998729 100644 --- a/.babelrc +++ b/.babelrc @@ -8,9 +8,11 @@ "test": { "plugins": [ ["webpack-loaders", { "config": "webpack.config.node.js", "verbose": false }], - ["babel-plugin-module-alias", [ - { "src": "test/mocks/electron.js" , "expose": "electron" } - ]] + ["module-resolver", { + "alias": { + "electron": "./test/mocks/electron.js" + } + }] ] } } diff --git a/package.json b/package.json index 16ebe2c..04c5331 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "babel-eslint": "^6.0.0", "babel-loader": "^6.2.4", "babel-plugin-add-module-exports": "^0.1.2", - "babel-plugin-module-alias": "^1.3.0", + "babel-plugin-module-resolver": "^2.7.0", "babel-plugin-webpack-loaders": "^0.4.0", "babel-polyfill": "^6.6.1", "babel-preset-es2015": "^6.6.0", From 53e9a8b38ed1ee36556c1fa32ce15488083ab726 Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Sat, 29 Apr 2017 21:45:37 -0400 Subject: [PATCH 08/18] Update nyc, fixes some deprecation warnings. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 04c5331..7b60d6f 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "mocha": "^2.3.0", "mockery": "^1.6.2", "node-sass": "^3.4.2", - "nyc": "^6.4.0", + "nyc": "^10.3.0", "react-addons-test-utils": "^15.0.0", "redux-logger": "^2.6.1", "sass-loader": "^3.2.0", From ff675f78daeeb1cd454d70eafe954b631f6e6d5d Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Sat, 29 Apr 2017 21:54:14 -0400 Subject: [PATCH 09/18] Update mocha. Fixes a bunch of deprecation warnings. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7b60d6f..bdf1ba0 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "babel-preset-stage-0": "^6.3.13", "chai": "^3.3.0", "chromedriver": "^2.29.0", - "co-mocha": "^1.1.2", + "co-mocha": "^1.2.0", "concurrently": "^2.0.0", "cross-env": "^1.0.7", "css-loader": "^0.23.1", @@ -69,7 +69,7 @@ "jsdom": "^8.4.0", "json-loader": "^0.5.4", "minimist": "^1.2.0", - "mocha": "^2.3.0", + "mocha": "^3.3.0", "mockery": "^1.6.2", "node-sass": "^3.4.2", "nyc": "^10.3.0", From 770b4bfca84d5be5372cb7be12580f241000ceaa Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Sat, 29 Apr 2017 22:03:44 -0400 Subject: [PATCH 10/18] Remove check-dev-engines. This was more trouble than it's worth. It wasn't actually catching problematic situations. This also fixes all remaining deprecation warnings! --- package.json | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/package.json b/package.json index bdf1ba0..25bc641 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "clean-build": "npm prune && npm run clean && npm run build-app", "start": "cross-env NODE_ENV=production electron ./", "start-hot": "cross-env HOT=1 NODE_ENV=development electron ./", - "postinstall": "node node_modules/fbjs-scripts/node/check-dev-engines.js package.json && install-app-deps && node tasks/postinstall.js && electron-rebuild", + "postinstall": "install-app-deps && node tasks/postinstall.js && electron-rebuild", "dev": "concurrently --kill-others \"npm run hot-server\" \"npm run start-hot\"", "dist": "npm run build-app && build" }, @@ -64,7 +64,6 @@ "eslint-plugin-react": "^4.3.0", "express": "^4.13.3", "extract-text-webpack-plugin": "^1.0.1", - "fbjs-scripts": "^0.6.0", "file-loader": "^0.8.5", "jsdom": "^8.4.0", "json-loader": "^0.5.4", @@ -99,10 +98,6 @@ "redux-promise": "^0.5.1", "redux-thunk": "^2.2.0" }, - "devEngines": { - "node": "4.x || 5.x || 6.x || 7.x", - "npm": "2.x || 3.x || 4.x" - }, "nyc": { "include": [ "src/**" From 772feff6659d07dabbaa498f19ee3536c250ccfb Mon Sep 17 00:00:00 2001 From: Gabe Isman Date: Sat, 29 Apr 2017 22:17:37 -0400 Subject: [PATCH 11/18] Update documentation to reflect electron-builder updates. --- README.md | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index c8e795f..a397c42 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ You need a recent version of Node.js and NPM installed. Tested with: * v4.1.0 * v5.7.0 +* v7.5.0 ### Quickstart 1. Clone the git repository @@ -32,25 +33,18 @@ make build to create a VM and run a full build of the Linux packages. To build the OS X packages, read on. -### Step-by-step (required for OS X) -Compile the CSS and JavaScript: - -``` -npm run build-app -``` +### OS X - -The built assets end up in the `dist/` folder. Once the assets have been built, -open the app in production mode: +To package up the app for your current platform (e.g. OS X): ``` -npm start +npm run dist ``` -With built assets, you can now package up the app for your current platform (e.g. OS X): +Note that this will run `build-app` so there's no need to run that beforehand. -``` -npm run dist -``` +Packages will be stored in `dist/`. + +### Code Signing -Packages will be stored in `release/`. +Code signing is handled automatically by the `electron-builder` package. All you should need to do is add the signing identity through xcode, and electron-builder will discover it automatically. See [Apple documentation](https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html) and [electron-builder documentation](https://github.com/electron-userland/electron-builder/wiki/Code-Signing) for more info. From 42a2edb23166c8af3026a3f2fc7c3b7de35a3a16 Mon Sep 17 00:00:00 2001 From: Conor Schaefer Date: Fri, 5 May 2017 14:17:25 -0700 Subject: [PATCH 12/18] Updates Vagrantfile to support libvirt hosts Building under Linux via vagrant-libvirt these days. Activates NFS for shared directory (with two-way sync support). --- Vagrantfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Vagrantfile b/Vagrantfile index 62e73d7..7346ea3 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -13,5 +13,9 @@ Vagrant.configure("2") do |config| # Building nodejs packages triggers the OOM killer with 512MB of RAM. vb.memory = 1024 end + sunder.vm.provider "libvirt" do |lv, override| + lv.memory = 1024 + override.vm.synced_folder './', '/vagrant', type: 'nfs', disabled: false + end end end From e737d3cee6b816d07ae27c86b5c896c45164e077 Mon Sep 17 00:00:00 2001 From: Conor Schaefer Date: Fri, 5 May 2017 15:20:16 -0700 Subject: [PATCH 13/18] Bumps RAM build VM (1GB -> 2GB) Laughable, I know, but even a gig of RAM is insufficient to build the app now. Bumped to 2GB and no out-of-memory errors yet. --- Vagrantfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Vagrantfile b/Vagrantfile index 7346ea3..317813a 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -10,11 +10,11 @@ Vagrant.configure("2") do |config| ansible.playbook = "ansible/playbook.yml" end sunder.vm.provider "virtualbox" do |vb| - # Building nodejs packages triggers the OOM killer with 512MB of RAM. - vb.memory = 1024 + # Building nodejs packages triggers the OOM killer with 1GB of RAM. + vb.memory = 2048 end sunder.vm.provider "libvirt" do |lv, override| - lv.memory = 1024 + lv.memory = 2048 override.vm.synced_folder './', '/vagrant', type: 'nfs', disabled: false end end From e95a22c72d70b57609210d30666009f4ab7af86b Mon Sep 17 00:00:00 2001 From: Conor Schaefer Date: Fri, 5 May 2017 16:14:55 -0700 Subject: [PATCH 14/18] Updates Node version 4.x -> 7.x in Ansible logic Using a play-level var to override the role default (which is 6.x). --- ansible/playbook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/playbook.yml b/ansible/playbook.yml index 593206b..b1c3cf0 100644 --- a/ansible/playbook.yml +++ b/ansible/playbook.yml @@ -4,6 +4,6 @@ roles: - role: geerlingguy.nodejs become: yes - nodejs_version: "4.x" + nodejs_version: "7.x" - role: sunder-build From 0e99a5f82e527fc755ccb66661e1c1915bb45dbc Mon Sep 17 00:00:00 2001 From: Conor Schaefer Date: Fri, 5 May 2017 16:17:08 -0700 Subject: [PATCH 15/18] Adds required apt packages for electron-builder When building the Linux package, we need some additional apt packages, as documented here: https://github.com/electron-userland/electron-builder/wiki/Multi-Platform-Build#linux We'll also need to generate the PNG-format icons in the Ansible config. --- ansible/roles/sunder-build/tasks/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/roles/sunder-build/tasks/main.yml b/ansible/roles/sunder-build/tasks/main.yml index e854145..8e38409 100644 --- a/ansible/roles/sunder-build/tasks/main.yml +++ b/ansible/roles/sunder-build/tasks/main.yml @@ -9,6 +9,11 @@ - libgconf2-dev - libgtk2.0-dev - libnss3-dev + # Required for electron-builder: + # https://github.com/electron-userland/electron-builder/wiki/Multi-Platform-Build#linux + - icnsutils + - graphicsmagick + - xz-utils # These packages must be installed globally, because they're referenced # as system-wide scripts in the build process. The geerlingguy.nodejs role From 48d79c1f803f54517ea923f3e0a17bde18b58d8b Mon Sep 17 00:00:00 2001 From: Conor Schaefer Date: Fri, 5 May 2017 16:24:29 -0700 Subject: [PATCH 16/18] Generates PNG-format icons for Linux builds The electron-builder documentation states that we must use `icns2png` to extract the macOS icon format into PNGs, for use in the Linux version of the application. Added that command to the Ansible build logic, and also updated the Makefile and gitignore file to recognize these files. --- .gitignore | 3 +++ Makefile | 1 + ansible/roles/sunder-build/tasks/main.yml | 9 +++++++++ package.json | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ce7a7db..09c48ac 100644 --- a/.gitignore +++ b/.gitignore @@ -8,5 +8,8 @@ release .vagrant/ .DS_Store +# Linux builds require PNG-format icons extracted from app.icns file. +build/icons/*.png + # External roles are included from Ansible Galaxy, don't version control. ansible/roles/geerlingguy.nodejs diff --git a/Makefile b/Makefile index 297c2df..cd21fe4 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,7 @@ ansible: clean: rm -rf release/ + rm -rf build/icons/*.png build: make ansible diff --git a/ansible/roles/sunder-build/tasks/main.yml b/ansible/roles/sunder-build/tasks/main.yml index 8e38409..99e77a5 100644 --- a/ansible/roles/sunder-build/tasks/main.yml +++ b/ansible/roles/sunder-build/tasks/main.yml @@ -15,6 +15,15 @@ - graphicsmagick - xz-utils +- name: Generate PNG-format icons. + command: > + icns2png --extract + --output /vagrant/build/icons/ + /vagrant/build/icons/app.icns + args: + # Use `make clean` in the project root to clear out old icons. + creates: /vagrant/build/icons/app_32x32x32.png + # These packages must be installed globally, because they're referenced # as system-wide scripts in the build process. The geerlingguy.nodejs role # offers to handle global npm package installation, but is broken due to diff --git a/package.json b/package.json index 25bc641..a32eda2 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "productName": "Sunder", "asar": false, "linux": { - "icon": "build/icons/app.icns" + "icon": "build/icons/" } }, "bin": { From 0ec4bf197cc2a6f25db1d7a22d2c5ff08e11167e Mon Sep 17 00:00:00 2001 From: Conor Schaefer Date: Fri, 5 May 2017 16:36:28 -0700 Subject: [PATCH 17/18] Cleans up Ansible roles for clean build The ansible-galaxy install action is not idempotent, so it's possible that folks will have extremely old versions of the dependency roles lying around. Let's use the `make clean-build` action to clear out these old roles and default to the latest from upstream. --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index cd21fe4..0d771e5 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ ansible: clean: rm -rf release/ rm -rf build/icons/*.png + rm -rf ansible/roles/geerlingguy.nodejs build: make ansible From 6cad058c868fda2989bd521da9c7922b6e3ae176 Mon Sep 17 00:00:00 2001 From: Conor Schaefer Date: Fri, 5 May 2017 16:45:44 -0700 Subject: [PATCH 18/18] For Linux, build deb packages, not AppImage --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index a32eda2..647b4b3 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "productName": "Sunder", "asar": false, "linux": { - "icon": "build/icons/" + "icon": "build/icons/", + "target": ["deb"] } }, "bin": {