From a57b408e0d417d6d62140f27f020f6ce052b671a Mon Sep 17 00:00:00 2001 From: AsinChen Date: Wed, 8 Mar 2017 15:49:31 +0800 Subject: [PATCH] First commit for i18n generator --- .editorconfig | 16 +++++ .gitattributes | 17 +++++ .gitignore | 16 +++++ .vscode/launch.json | 31 +++++++++ README.md | 119 +++++++++++++++++++++++++++++++++ app/app.html | 30 +++++++++ app/config.json | 1 + app/helpers/context_menu.js | 59 ++++++++++++++++ app/helpers/external_links.js | 44 ++++++++++++ build/icon.icns | Bin 0 -> 98586 bytes build/icon.ico | Bin 0 -> 108098 bytes build/icons/512x512.png | Bin 0 -> 3950 bytes config/env_development.json | 4 ++ config/env_production.json | 4 ++ config/env_test.json | 4 ++ gulpfile.js | 5 ++ package.json | 55 +++++++++++++++ scripts/istanbul-reporter.js | 26 +++++++ scripts/travis-build.sh | 18 +++++ src/app.js | 96 ++++++++++++++++++++++++++ src/background.js | 50 ++++++++++++++ src/env.js | 8 +++ src/helpers/window.js | 84 +++++++++++++++++++++++ src/menu/dev_menu_template.js | 24 +++++++ src/menu/edit_menu_template.js | 12 ++++ src/stylesheets/main.less | 25 +++++++ tasks/build_app.js | 53 +++++++++++++++ tasks/build_tests.js | 51 ++++++++++++++ tasks/bundle.js | 53 +++++++++++++++ tasks/start.js | 15 +++++ tasks/utils.js | 11 +++ 31 files changed, 931 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 README.md create mode 100644 app/app.html create mode 100644 app/config.json create mode 100644 app/helpers/context_menu.js create mode 100644 app/helpers/external_links.js create mode 100644 build/icon.icns create mode 100644 build/icon.ico create mode 100644 build/icons/512x512.png create mode 100644 config/env_development.json create mode 100644 config/env_production.json create mode 100644 config/env_test.json create mode 100644 gulpfile.js create mode 100644 package.json create mode 100644 scripts/istanbul-reporter.js create mode 100644 scripts/travis-build.sh create mode 100644 src/app.js create mode 100644 src/background.js create mode 100644 src/env.js create mode 100644 src/helpers/window.js create mode 100644 src/menu/dev_menu_template.js create mode 100644 src/menu/edit_menu_template.js create mode 100644 src/stylesheets/main.less create mode 100644 tasks/build_app.js create mode 100644 tasks/build_tests.js create mode 100644 tasks/bundle.js create mode 100644 tasks/start.js create mode 100644 tasks/utils.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..92926b6 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.json] +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..bdb0cab --- /dev/null +++ b/.gitattributes @@ -0,0 +1,17 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f10c755 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +node_modules +.DS_Store +Thumbs.db +*.log +*.autogenerated + +# ignore everything in 'app' folder what had been generated from 'src' folder +/app/stylesheets +/app/app.js +/app/background.js +/app/env.json +/app/**/*.map + +/dist + +/coverage diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..780f683 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,31 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Launch", + "type": "node", + "request": "launch", + "program": "${workspaceRoot}/app/app.js", + "stopOnEntry": false, + "args": [], + "cwd": "${workspaceRoot}", + "runtimeExecutable": "C:/Users/andy.chen/AppData/Roaming/npm/electron.cmd", + "runtimeArgs": [ + ".", + "--enable-logging" + ], + "env": {}, + "externalConsole": false, + "sourceMaps": false, + "outDir": null + }, + { + "name": "Attach", + "type": "node", + "request": "attach", + "port": 5858, + "sourceMaps": false, + "outDir": null + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..bf6a288 --- /dev/null +++ b/README.md @@ -0,0 +1,119 @@ +# electron-boilerplate [![Build Status](https://travis-ci.org/szwacz/electron-boilerplate.svg?branch=master)](https://travis-ci.org/szwacz/electron-boilerplate) [![Build status](https://ci.appveyor.com/api/projects/status/s9htc1k5ojkn08fr?svg=true)](https://ci.appveyor.com/project/szwacz/electron-boilerplate) + +A minimalistic yet comprehensive boilerplate application for [Electron runtime](http://electron.atom.io). Tested on OSX, Windows and Linux. + +This project does not impose on you any framework (like Angular or React). It tries to give you only the 'electron' part of technology stack so you can pick your favorite technologies to build the actual app. + +# Quick start + +The only development dependency of this project is [Node.js](https://nodejs.org), so just make sure you have it installed. +Then type few commands known to every Node developer... +``` +git clone https://github.com/szwacz/electron-boilerplate.git +cd electron-boilerplate +npm install +npm start +``` +... and boom! You have a running desktop application on your screen. + +# Structure of the project + +The application is split between two main folders... + +`src` - this folder is intended for files which need to be transpiled or compiled (files which can't be used directly by Electron). + +`app` - contains all static assets (put here images, css, html etc.) which don't need any pre-processing. + +The build process compiles all stuff from the `src` folder and puts it into the `app` folder, so after the build has finished, your `app` folder contains the full, runnable application. + +Treat `src` and `app` folders like two halves of one bigger thing. + +The drawback of this design is that `app` folder contains some files which should be git-ignored and some which shouldn't (see `.gitignore` file). But thanks to this two-folders split development builds are much (much!) faster. + +# Development + +## Starting the app + +``` +npm start +``` + +## Upgrading Electron version + +The version of Electron runtime your app is using is declared in `package.json`: +```json +"devDependencies": { + "electron": "1.4.7" +} +``` +Side note: [Electron authors advise](http://electron.atom.io/docs/tutorial/electron-versioning/) to use fixed version here. + +## Adding npm modules to your app + +Remember to respect the split between `dependencies` and `devDependencies` in `package.json` file. Only modules listed in `dependencies` will be included into distributable app. + +Side note: If the module you want to use in your app is a native one (not pure JavaScript but compiled C code or something) you should first run `npm install name_of_npm_module --save` and then `npm run postinstall` to rebuild the module for Electron. This needs to be done only once when you're first time installing the module. Later on postinstall script will fire automatically with every `npm install`. + +## Working with modules + +Thanks to [rollup](https://github.com/rollup/rollup) you can (and should) use ES6 modules for all code in `src` folder. But because ES6 modules still aren't natively supported you can't use them in the `app` folder. + +Use ES6 syntax in the `src` folder like this: +```js +import myStuff from './my_lib/my_stuff'; +``` + +But use CommonJS syntax in `app` folder. So the code from above should look as follows: +```js +var myStuff = require('./my_lib/my_stuff'); +``` + +# Testing + +## Unit tests + +``` +npm test +``` + +Using [electron-mocha](https://github.com/jprichardson/electron-mocha) test runner with the [chai](http://chaijs.com/api/assert/) assertion library. This task searches for all files in `src` directory which respect pattern `*.spec.js`. + +## End to end tests + +``` +npm run e2e +``` + +Using [mocha](https://mochajs.org/) test runner and [spectron](http://electron.atom.io/spectron/). This task searches for all files in `e2e` directory which respect pattern `*.e2e.js`. + +## Code coverage + +``` +npm run coverage +``` + +Using [istanbul](http://gotwarlost.github.io/istanbul/) code coverage tool. + +You can set the reporter(s) by setting `ISTANBUL_REPORTERS` environment variable (defaults to `text-summary` and `html`). The report directory can be set with `ISTANBUL_REPORT_DIR` (defaults to `coverage`). + +## Continuous integration + +Electron [can be plugged](https://github.com/atom/electron/blob/master/docs/tutorial/testing-on-headless-ci.md) into CI systems. Here two CIs are preconfigured for you. [Travis CI](https://travis-ci.org/) tests on OSX and Linux, [App Veyor](https://www.appveyor.com) tests on Windows. + +# Making a release + +To package your app into an installer use command: + +``` +npm run release +``` + +It will start the packaging process for operating system you are running this command on. Ready for distribution file will be outputted to `dist` directory. + +You can create Windows installer only when running on Windows, the same is true for Linux and OSX. So to generate all three installers you need all three operating systems. + +All packaging actions are handled by [electron-builder](https://github.com/electron-userland/electron-builder). It has a lot of [customization options](https://github.com/electron-userland/electron-builder/wiki/Options), which you can declare under ["build" key in package.json file](https://github.com/szwacz/electron-boilerplate/blob/master/package.json#L2). + +# License + +Released under the MIT license. diff --git a/app/app.html b/app/app.html new file mode 100644 index 0000000..e9748fb --- /dev/null +++ b/app/app.html @@ -0,0 +1,30 @@ + + + + + i18n file Generator + + + + + + +
+

i18n file Generator

+
+ + + +
+
+ + +
+ +
+ + + diff --git a/app/config.json b/app/config.json new file mode 100644 index 0000000..a7c0041 --- /dev/null +++ b/app/config.json @@ -0,0 +1 @@ +{"folderLocation":"D:\\Project\\DEV\\star3\\src\\AgileBet.Cash.Portal.NgWebsite\\Public\\resource\\i18n"} \ No newline at end of file diff --git a/app/helpers/context_menu.js b/app/helpers/context_menu.js new file mode 100644 index 0000000..b50877b --- /dev/null +++ b/app/helpers/context_menu.js @@ -0,0 +1,59 @@ +// This gives you default context menu (cut, copy, paste) +// in all input fields and textareas across your app. + +(function () { + 'use strict'; + + var remote = require('electron').remote; + var Menu = remote.Menu; + var MenuItem = remote.MenuItem; + + var isAnyTextSelected = function () { + return window.getSelection().toString() !== ''; + }; + + var cut = new MenuItem({ + label: "Cut", + click: function () { + document.execCommand("cut"); + } + }); + + var copy = new MenuItem({ + label: "Copy", + click: function () { + document.execCommand("copy"); + } + }); + + var paste = new MenuItem({ + label: "Paste", + click: function () { + document.execCommand("paste"); + } + }); + + var normalMenu = new Menu(); + normalMenu.append(copy); + + var textEditingMenu = new Menu(); + textEditingMenu.append(cut); + textEditingMenu.append(copy); + textEditingMenu.append(paste); + + document.addEventListener('contextmenu', function (e) { + switch (e.target.nodeName) { + case 'TEXTAREA': + case 'INPUT': + e.preventDefault(); + textEditingMenu.popup(remote.getCurrentWindow()); + break; + default: + if (isAnyTextSelected()) { + e.preventDefault(); + normalMenu.popup(remote.getCurrentWindow()); + } + } + }, false); + +}()); diff --git a/app/helpers/external_links.js b/app/helpers/external_links.js new file mode 100644 index 0000000..12e94ed --- /dev/null +++ b/app/helpers/external_links.js @@ -0,0 +1,44 @@ +// Convenient way for opening links in external browser, not in the app. +// Useful especially if you have a lot of links to deal with. +// +// Usage: +// +// Every link with class ".js-external-link" will be opened in external browser. +// google +// +// The same behaviour for many links can be achieved by adding +// this class to any parent tag of an anchor tag. +// + +(function () { + 'use strict'; + + var shell = require('electron').shell; + + var supportExternalLinks = function (e) { + var href; + var isExternal = false; + + var checkDomElement = function (element) { + if (element.nodeName === 'A') { + href = element.getAttribute('href'); + } + if (element.classList.contains('js-external-link')) { + isExternal = true; + } + if (href && isExternal) { + shell.openExternal(href); + e.preventDefault(); + } else if (element.parentElement) { + checkDomElement(element.parentElement); + } + }; + + checkDomElement(e.target); + }; + + document.addEventListener('click', supportExternalLinks, false); +}()); diff --git a/build/icon.icns b/build/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..74c113fb5db90aa5701cc5e2c03066aa32c4268d GIT binary patch literal 98586 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 literal 0 HcmV?d00001 diff --git a/build/icon.ico b/build/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..facd478b7271ce7540ab6aa56b5bec23c2c6fd45 GIT binary patch literal 108098 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 b8|DNXdx9NS;92FeLpJtA9f5Vd(f|Jgiq_s` literal 0 HcmV?d00001 diff --git a/build/icons/512x512.png b/build/icons/512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..00fc205ea929517179262a257bcdc18564d3fe55 GIT binary patch literal 3950 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 2) { + lanObj[colNum] = {}; + } + } + for (var rowNum in rows) { + if (rowNum > 1) { + var row = rows[rowNum]; + var key = row[1]; + for (var colNum in row) { + if (colNum > 2) { + var cell = row[colNum]; + lanObj[colNum][key] = cell; + } + } + } + } + endLoading(); + }); + }); +} + +function startLoading() { + generateBtn.disabled = reloadBtn.disabled = true; + loadingIcon.style.visibility = 'visible'; +} + +function endLoading() { + generateBtn.disabled = reloadBtn.disabled = false; + loadingIcon.style.visibility = 'hidden'; +} + +selectFolderBtn.onclick = () => { + folderSelector.click(); +} + +folderSelector.onchange = (event) => { + var dir = event.target.files[0]; + if (dir) { + config.folderLocation = folderLocation.value = dir.path; + } +}; + +reloadBtn.onclick = loadSpreadsheet; + +generateBtn.onclick = () => { + var targetFolder = folderLocation.value; + for (var colNum in lanObj) { + var language = header[colNum]; + var keyVals = lanObj[colNum]; + fs.writeFileSync(`${targetFolder}/${language}.json`, JSON.stringify(keyVals)); + } + require('child_process').exec(`start "" "${targetFolder}"`); + fs.writeFileSync("config.json", JSON.stringify(config)); +} \ No newline at end of file diff --git a/src/background.js b/src/background.js new file mode 100644 index 0000000..bd3fc16 --- /dev/null +++ b/src/background.js @@ -0,0 +1,50 @@ +// This is main process of Electron, started as first thing when your +// app starts. This script is running through entire life of your application. +// It doesn't have any windows which you can see on screen, but we can open +// window from here. + +import { app, Menu } from 'electron'; +import { devMenuTemplate } from './menu/dev_menu_template'; +import { editMenuTemplate } from './menu/edit_menu_template'; +import createWindow from './helpers/window'; + +// Special module holding environment variables which you declared +// in config/env_xxx.json file. +import env from './env'; + +var mainWindow; + +var setApplicationMenu = function () { + // var menus = [editMenuTemplate]; + // if (env.name !== 'production') { + // menus.push(devMenuTemplate); + // } + // Menu.setApplicationMenu(Menu.buildFromTemplate(menus)); +}; + +// Save userData in separate folders for each environment. +// Thanks to this you can use production and development versions of the app +// on same machine like those are two separate apps. +if (env.name !== 'production') { + var userDataPath = app.getPath('userData'); + app.setPath('userData', userDataPath + ' (' + env.name + ')'); +} + +app.on('ready', function () { + setApplicationMenu(); + + var mainWindow = createWindow('main', { + width: 800, + height: 300 + }); + + mainWindow.loadURL('file://' + __dirname + '/app.html'); + + if (env.name === 'development') { + mainWindow.openDevTools(); + } +}); + +app.on('window-all-closed', function () { + app.quit(); +}); diff --git a/src/env.js b/src/env.js new file mode 100644 index 0000000..dc48a38 --- /dev/null +++ b/src/env.js @@ -0,0 +1,8 @@ +// Simple wrapper exposing environment variables to rest of the code. + +import jetpack from 'fs-jetpack'; + +// The variables have been written to `env.json` by the build process. +var env = jetpack.cwd(__dirname).read('env.json', 'json'); + +export default env; diff --git a/src/helpers/window.js b/src/helpers/window.js new file mode 100644 index 0000000..d142ae0 --- /dev/null +++ b/src/helpers/window.js @@ -0,0 +1,84 @@ +// This helper remembers the size and position of your windows (and restores +// them in that place after app relaunch). +// Can be used for more than one window, just construct many +// instances of it and give each different name. + +import { app, BrowserWindow, screen } from 'electron'; +import jetpack from 'fs-jetpack'; + +export default function (name, options) { + + var userDataDir = jetpack.cwd(app.getPath('userData')); + var stateStoreFile = 'window-state-' + name +'.json'; + var defaultSize = { + width: options.width, + height: options.height + }; + var state = {}; + var win; + + var restore = function () { + var restoredState = {}; + try { + restoredState = userDataDir.read(stateStoreFile, 'json'); + } catch (err) { + // For some reason json can't be read (might be corrupted). + // No worries, we have defaults. + } + return Object.assign({}, defaultSize, restoredState); + }; + + var getCurrentPosition = function () { + var position = win.getPosition(); + var size = win.getSize(); + return { + x: position[0], + y: position[1], + width: size[0], + height: size[1] + }; + }; + + var windowWithinBounds = function (windowState, bounds) { + return windowState.x >= bounds.x && + windowState.y >= bounds.y && + windowState.x + windowState.width <= bounds.x + bounds.width && + windowState.y + windowState.height <= bounds.y + bounds.height; + }; + + var resetToDefaults = function (windowState) { + var bounds = screen.getPrimaryDisplay().bounds; + return Object.assign({}, defaultSize, { + x: (bounds.width - defaultSize.width) / 2, + y: (bounds.height - defaultSize.height) / 2 + }); + }; + + var ensureVisibleOnSomeDisplay = function (windowState) { + var visible = screen.getAllDisplays().some(function (display) { + return windowWithinBounds(windowState, display.bounds); + }); + if (!visible) { + // Window is partially or fully not visible now. + // Reset it to safe defaults. + return resetToDefaults(windowState); + } + return windowState; + }; + + var saveState = function () { + if (!win.isMinimized() && !win.isMaximized()) { + Object.assign(state, getCurrentPosition()); + } + userDataDir.write(stateStoreFile, state, { atomic: true }); + }; + + state = ensureVisibleOnSomeDisplay(restore()); + + win = new BrowserWindow(Object.assign({}, options, state)); + + win.on('close', saveState); + win.setMenu(null) + + return win; +} diff --git a/src/menu/dev_menu_template.js b/src/menu/dev_menu_template.js new file mode 100644 index 0000000..63f3416 --- /dev/null +++ b/src/menu/dev_menu_template.js @@ -0,0 +1,24 @@ +import { app, BrowserWindow } from 'electron'; + +export var devMenuTemplate = { + label: 'Development', + submenu: [{ + label: 'Reload', + accelerator: 'CmdOrCtrl+R', + click: function () { + BrowserWindow.getFocusedWindow().webContents.reloadIgnoringCache(); + } + },{ + label: 'Toggle DevTools', + accelerator: 'Alt+CmdOrCtrl+I', + click: function () { + BrowserWindow.getFocusedWindow().toggleDevTools(); + } + },{ + label: 'Quit', + accelerator: 'CmdOrCtrl+Q', + click: function () { + app.quit(); + } + }] +}; diff --git a/src/menu/edit_menu_template.js b/src/menu/edit_menu_template.js new file mode 100644 index 0000000..d225201 --- /dev/null +++ b/src/menu/edit_menu_template.js @@ -0,0 +1,12 @@ +export var editMenuTemplate = { + label: 'Edit', + submenu: [ + { label: "Undo", accelerator: "CmdOrCtrl+Z", selector: "undo:" }, + { label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" }, + { type: "separator" }, + { label: "Cut", accelerator: "CmdOrCtrl+X", selector: "cut:" }, + { label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" }, + { label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" }, + { label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:" } + ] +}; diff --git a/src/stylesheets/main.less b/src/stylesheets/main.less new file mode 100644 index 0000000..3156d59 --- /dev/null +++ b/src/stylesheets/main.less @@ -0,0 +1,25 @@ +html, body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; +} + +body { + display: flex; + justify-content: center; + align-items: center; + font-family: sans-serif; +} + +a { + text-decoration: none; +} + +.container { + text-align: center; +} + +.subtitle { + color: gray; +} diff --git a/tasks/build_app.js b/tasks/build_app.js new file mode 100644 index 0000000..8f1548b --- /dev/null +++ b/tasks/build_app.js @@ -0,0 +1,53 @@ +'use strict'; + +var gulp = require('gulp'); +var less = require('gulp-less'); +var watch = require('gulp-watch'); +var batch = require('gulp-batch'); +var plumber = require('gulp-plumber'); +var jetpack = require('fs-jetpack'); +var bundle = require('./bundle'); +var utils = require('./utils'); + +var projectDir = jetpack; +var srcDir = jetpack.cwd('./src'); +var destDir = jetpack.cwd('./app'); + +gulp.task('bundle', function () { + return Promise.all([ + bundle(srcDir.path('background.js'), destDir.path('background.js')), + bundle(srcDir.path('app.js'), destDir.path('app.js')), + ]); +}); + +gulp.task('less', function () { + return gulp.src(srcDir.path('stylesheets/main.less')) + .pipe(plumber()) + .pipe(less()) + .pipe(gulp.dest(destDir.path('stylesheets'))); +}); + +gulp.task('environment', function () { + var configFile = 'config/env_' + utils.getEnvName() + '.json'; + projectDir.copy(configFile, destDir.path('env.json'), { overwrite: true }); +}); + +gulp.task('watch', function () { + var beepOnError = function (done) { + return function (err) { + if (err) { + utils.beepSound(); + } + done(err); + }; + }; + + watch('src/**/*.js', batch(function (events, done) { + gulp.start('bundle', beepOnError(done)); + })); + watch('src/**/*.less', batch(function (events, done) { + gulp.start('less', beepOnError(done)); + })); +}); + +gulp.task('build', ['bundle', 'less', 'environment']); diff --git a/tasks/build_tests.js b/tasks/build_tests.js new file mode 100644 index 0000000..230ddca --- /dev/null +++ b/tasks/build_tests.js @@ -0,0 +1,51 @@ +'use strict'; + +var gulp = require('gulp'); +var jetpack = require('fs-jetpack'); +var bundle = require('./bundle'); +var istanbul = require('rollup-plugin-istanbul'); + +// Spec files are scattered through the whole project. Here we're searching +// for them and generate one entry file which will run all the tests. +var generateEntryFile = function (dir, destFileName, filePattern) { + var fileBanner = "// This file is generated automatically.\n" + + "// All modifications will be lost.\n"; + + return dir.findAsync('.', { matching: filePattern }) + .then(function (specPaths) { + var fileContent = specPaths.map(function (path) { + return 'import "./' + path.replace(/\\/g, '/') + '";'; + }).join('\n'); + return dir.writeAsync(destFileName, fileBanner + fileContent); + }) + .then(function () { + return dir.path(destFileName); + }); +}; + +gulp.task('build-unit', ['environment'], function () { + var srcDir = jetpack.cwd('src'); + var destDir = jetpack.cwd('app'); + + return generateEntryFile(srcDir, 'specs.js.autogenerated', '*.spec.js') + .then(function (entryFilePath) { + return bundle(entryFilePath, destDir.path('specs.js.autogenerated'), { + rollupPlugins: [ + istanbul({ + exclude: ['**/*.spec.js', '**/specs.js.autogenerated'], + sourceMap: true + }) + ] + }); + }); +}); + +gulp.task('build-e2e', ['build'], function () { + var srcDir = jetpack.cwd('e2e'); + var destDir = jetpack.cwd('app'); + + return generateEntryFile(srcDir, 'e2e.js.autogenerated', '*.e2e.js') + .then(function (entryFilePath) { + return bundle(entryFilePath, destDir.path('e2e.js.autogenerated')); + }); +}); diff --git a/tasks/bundle.js b/tasks/bundle.js new file mode 100644 index 0000000..1d6f619 --- /dev/null +++ b/tasks/bundle.js @@ -0,0 +1,53 @@ +'use strict'; + +var path = require('path'); +var jetpack = require('fs-jetpack'); +var rollup = require('rollup').rollup; + +var nodeBuiltInModules = ['assert', 'buffer', 'child_process', 'cluster', + 'console', 'constants', 'crypto', 'dgram', 'dns', 'domain', 'events', + 'fs', 'http', 'https', 'module', 'net', 'os', 'path', 'process', 'punycode', + 'querystring', 'readline', 'repl', 'stream', 'string_decoder', 'timers', + 'tls', 'tty', 'url', 'util', 'v8', 'vm', 'zlib']; + +var electronBuiltInModules = ['electron']; + +var generateExternalModulesList = function () { + var appManifest = jetpack.read('./package.json', 'json'); + return [].concat( + nodeBuiltInModules, + electronBuiltInModules, + Object.keys(appManifest.dependencies), + Object.keys(appManifest.devDependencies) + ); +}; + +var cached = {}; + +module.exports = function (src, dest, opts) { + opts = opts || {}; + opts.rollupPlugins = opts.rollupPlugins || []; + return rollup({ + entry: src, + external: generateExternalModulesList(), + cache: cached[src], + plugins: opts.rollupPlugins, + }) + .then(function (bundle) { + cached[src] = bundle; + + var jsFile = path.basename(dest); + var result = bundle.generate({ + format: 'cjs', + sourceMap: true, + sourceMapFile: jsFile, + }); + // Wrap code in self invoking function so the variables don't + // pollute the global namespace. + var isolatedCode = '(function () {' + result.code + '\n}());'; + return Promise.all([ + jetpack.writeAsync(dest, isolatedCode + '\n//# sourceMappingURL=' + jsFile + '.map'), + jetpack.writeAsync(dest + '.map', result.map.toString()), + ]); + }); +}; diff --git a/tasks/start.js b/tasks/start.js new file mode 100644 index 0000000..116ccce --- /dev/null +++ b/tasks/start.js @@ -0,0 +1,15 @@ +'use strict'; + +var childProcess = require('child_process'); +var electron = require('electron'); +var gulp = require('gulp'); + +gulp.task('start', ['build', 'watch'], function () { + childProcess.spawn(electron, ['.'], { + stdio: 'inherit' + }) + .on('close', function () { + // User closed the app. Kill the host process. + process.exit(); + }); +}); diff --git a/tasks/utils.js b/tasks/utils.js new file mode 100644 index 0000000..6e95998 --- /dev/null +++ b/tasks/utils.js @@ -0,0 +1,11 @@ +'use strict'; + +var argv = require('minimist')(process.argv); + +exports.getEnvName = function () { + return argv.env || 'development'; +}; + +exports.beepSound = function () { + process.stdout.write('\u0007'); +};