From 11f8a1ac627fd7a614f723ab803aebf04905b23e Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Thu, 12 May 2016 11:12:59 +0200 Subject: [PATCH 01/35] Create .ico file, refactor resource folders --- README.md | 2 +- package.json | 14 +++++++++++++- {resource => resource-compile}/icon.icns | Bin resource-compile/icon.ico | Bin 0 -> 370070 bytes {resource => resource-compile}/icon.png | Bin .../screenshot-1.png | Bin .../fonts/lato-300.woff2 | Bin .../fonts/lato-400.woff2 | Bin .../fonts/lato-700.woff2 | Bin .../images/chrome_128x128.png | Bin .../images/chromium_128x128.png | Bin .../images/firefox_128x128.png | Bin .../images/ie_128x128.png | Bin .../images/opera_128x128.png | Bin .../images/phantomjs_128x128.png | Bin .../images/safari_128x128.png | Bin {resource => resource-runtime}/index.html | 0 17 files changed, 14 insertions(+), 2 deletions(-) rename {resource => resource-compile}/icon.icns (100%) create mode 100644 resource-compile/icon.ico rename {resource => resource-compile}/icon.png (100%) rename {resource => resource-compile}/screenshot-1.png (100%) rename {resource => resource-runtime}/fonts/lato-300.woff2 (100%) rename {resource => resource-runtime}/fonts/lato-400.woff2 (100%) rename {resource => resource-runtime}/fonts/lato-700.woff2 (100%) rename {resource => resource-runtime}/images/chrome_128x128.png (100%) rename {resource => resource-runtime}/images/chromium_128x128.png (100%) rename {resource => resource-runtime}/images/firefox_128x128.png (100%) rename {resource => resource-runtime}/images/ie_128x128.png (100%) rename {resource => resource-runtime}/images/opera_128x128.png (100%) rename {resource => resource-runtime}/images/phantomjs_128x128.png (100%) rename {resource => resource-runtime}/images/safari_128x128.png (100%) rename {resource => resource-runtime}/index.html (100%) diff --git a/README.md b/README.md index 7ccc4e26..3c28bbd4 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ It is an open-source alternative to the popular developer tool [Charles](http:// James is build with [hoxy](https://github.com/greim/hoxy), [electron](https://github.com/atom/electron) and [react](https://facebook.github.io/react/index.html) -![](resource/screenshot-1.png) +![](resource-compile/screenshot-1.png) ## Installing Download the correct version for your OS and run diff --git a/package.json b/package.json index f51ddf06..2627f88c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "james", "version": "1.4.5", - "description": "", + "description": "HTTP/HTTPS proxy built in Electron and ReactJS", "main": "electron-app.js", "scripts": { "build": "gulp", @@ -39,6 +39,7 @@ "babel-preset-react": "^6.3.13", "browserify": "^13.0.0", "del": "^2.2.0", + "electron-builder": "^3.17.1", "electron-connect": "^0.4.0", "electron-localshortcut": "^0.6.0", "electron-packager": "7.0.1", @@ -75,5 +76,16 @@ "plugins": [ "transform-object-rest-spread" ] + }, + "build": { + "app-bundle-id": "com.jamesproxy.james", + "app-category-type": "public.app-category.productivity", + "productName": "James", + "osx": { + "icon": "resource/compile/icon.icns" + }, + "win": { + + } } } diff --git a/resource/icon.icns b/resource-compile/icon.icns similarity index 100% rename from resource/icon.icns rename to resource-compile/icon.icns diff --git a/resource-compile/icon.ico b/resource-compile/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2c0c4ca4ac97b7e9d69e334c9981abf58a957383 GIT binary patch literal 370070 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

Dp4a_Lj+hpS;icYMy6-Jv+|2x>{+|qmH|6TP^H= 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 literal 0 HcmV?d00001 diff --git a/resource/icon.png b/resource-compile/icon.png similarity index 100% rename from resource/icon.png rename to resource-compile/icon.png diff --git a/resource/screenshot-1.png b/resource-compile/screenshot-1.png similarity index 100% rename from resource/screenshot-1.png rename to resource-compile/screenshot-1.png diff --git a/resource/fonts/lato-300.woff2 b/resource-runtime/fonts/lato-300.woff2 similarity index 100% rename from resource/fonts/lato-300.woff2 rename to resource-runtime/fonts/lato-300.woff2 diff --git a/resource/fonts/lato-400.woff2 b/resource-runtime/fonts/lato-400.woff2 similarity index 100% rename from resource/fonts/lato-400.woff2 rename to resource-runtime/fonts/lato-400.woff2 diff --git a/resource/fonts/lato-700.woff2 b/resource-runtime/fonts/lato-700.woff2 similarity index 100% rename from resource/fonts/lato-700.woff2 rename to resource-runtime/fonts/lato-700.woff2 diff --git a/resource/images/chrome_128x128.png b/resource-runtime/images/chrome_128x128.png similarity index 100% rename from resource/images/chrome_128x128.png rename to resource-runtime/images/chrome_128x128.png diff --git a/resource/images/chromium_128x128.png b/resource-runtime/images/chromium_128x128.png similarity index 100% rename from resource/images/chromium_128x128.png rename to resource-runtime/images/chromium_128x128.png diff --git a/resource/images/firefox_128x128.png b/resource-runtime/images/firefox_128x128.png similarity index 100% rename from resource/images/firefox_128x128.png rename to resource-runtime/images/firefox_128x128.png diff --git a/resource/images/ie_128x128.png b/resource-runtime/images/ie_128x128.png similarity index 100% rename from resource/images/ie_128x128.png rename to resource-runtime/images/ie_128x128.png diff --git a/resource/images/opera_128x128.png b/resource-runtime/images/opera_128x128.png similarity index 100% rename from resource/images/opera_128x128.png rename to resource-runtime/images/opera_128x128.png diff --git a/resource/images/phantomjs_128x128.png b/resource-runtime/images/phantomjs_128x128.png similarity index 100% rename from resource/images/phantomjs_128x128.png rename to resource-runtime/images/phantomjs_128x128.png diff --git a/resource/images/safari_128x128.png b/resource-runtime/images/safari_128x128.png similarity index 100% rename from resource/images/safari_128x128.png rename to resource-runtime/images/safari_128x128.png diff --git a/resource/index.html b/resource-runtime/index.html similarity index 100% rename from resource/index.html rename to resource-runtime/index.html From 8539dee7ee7d5b9b32ef489bb7f941616639d69d Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Thu, 12 May 2016 14:13:03 +0200 Subject: [PATCH 02/35] Add build and directories settings to package.json --- gulpfile.js | 12 ++++++------ package.json | 16 +++++++++++++--- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 5acbabe3..a3fc9dbb 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -45,7 +45,7 @@ gulp.task('resources', () => { return es.merge([ gulp.src('node_modules/font-awesome/fonts/**').pipe(gulp.dest('build/fonts')), gulp.src('package.json').pipe(gulp.dest('build')), - gulp.src('resource/**') + gulp.src('resource-runtime/**') .pipe(changed('build')) .pipe(gulp.dest('build')) ]); @@ -56,7 +56,7 @@ gulp.task('package-resources', ['default'], () => { gulp.src('node_modules/font-awesome/fonts/**').pipe(gulp.dest('package/fonts')), gulp.src('build/james.css').pipe(gulp.dest('package')), gulp.src('package.json').pipe(gulp.dest('package')), - gulp.src('resource/**') + gulp.src('resource-runtime/**') .pipe(gulpif('*.html', useref())) .pipe(gulp.dest('package')) ]); @@ -101,7 +101,7 @@ gulp.task('package', ['package-resources', 'package-render', 'package-main'], (d const electronVersion = require('electron-prebuilt/package.json').version; console.log(`Packaging James v${appVersion}...`); - electron({ + /*electron({ all: true, dir: 'package', platform: 'all', @@ -111,13 +111,13 @@ gulp.task('package', ['package-resources', 'package-render', 'package-main'], (d 'app-version': appVersion, version: electronVersion, out: 'binaries' - }, (err) => done(err)); + }, (err) => done(err));*/ }); gulp.task('watch', ['default'], () => { gulp.watch('src/**', ['js']); gulp.watch('style/**', ['css']); - gulp.watch('resource/**', ['resources']); + gulp.watch('resource-runtime/**', ['resources']); }); gulp.task('livereload', ['default'], () => { @@ -127,5 +127,5 @@ gulp.task('livereload', ['default'], () => { gulp.watch('src/**', ['js', reload]); gulp.watch('style/**', ['css', reload]); - gulp.watch('resource/**', ['resources', reload]); + gulp.watch('resource-runtime/**', ['resources', reload]); }); diff --git a/package.json b/package.json index 2627f88c..059bd189 100644 --- a/package.json +++ b/package.json @@ -82,10 +82,20 @@ "app-category-type": "public.app-category.productivity", "productName": "James", "osx": { - "icon": "resource/compile/icon.icns" + "icon": "resource-compile/icon.icns" }, "win": { - - } + "iconUrl": "https://github.com/mitchhentges/james/blob/electron-builder/resource-compile/icon.ico?raw=true" + }, + "linux": { + "synopsis": "Web proxy" + }, + "overwrite": true, + "app": "./package" + }, + "directories": { + "buildResources": "build-resources", + "output": "binaries", + "app": "./package" } } From c4000ca96994f349f83d427606b9dbba5d7c0b8c Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Fri, 13 May 2016 13:27:31 +0200 Subject: [PATCH 03/35] Make electron-builder a little happier --- gulpfile.js | 2 -- package.json | 14 ++++---------- resource-runtime/package.json | 12 ++++++++++++ 3 files changed, 16 insertions(+), 12 deletions(-) create mode 100644 resource-runtime/package.json diff --git a/gulpfile.js b/gulpfile.js index a3fc9dbb..4d5fb981 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -44,7 +44,6 @@ gulp.task('css', () => { gulp.task('resources', () => { return es.merge([ gulp.src('node_modules/font-awesome/fonts/**').pipe(gulp.dest('build/fonts')), - gulp.src('package.json').pipe(gulp.dest('build')), gulp.src('resource-runtime/**') .pipe(changed('build')) .pipe(gulp.dest('build')) @@ -55,7 +54,6 @@ gulp.task('package-resources', ['default'], () => { return es.merge([ gulp.src('node_modules/font-awesome/fonts/**').pipe(gulp.dest('package/fonts')), gulp.src('build/james.css').pipe(gulp.dest('package')), - gulp.src('package.json').pipe(gulp.dest('package')), gulp.src('resource-runtime/**') .pipe(gulpif('*.html', useref())) .pipe(gulp.dest('package')) diff --git a/package.json b/package.json index 059bd189..cc4f0413 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,6 @@ "test-ci": "npm run lint && npm run test && npm run package" }, "author": "Julian Hollmann ", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/james-proxy/james.git" - }, "dependencies": { "hoxy": "^3.2.0", "james-browser-launcher": "^1.2.1", @@ -82,7 +77,7 @@ "app-category-type": "public.app-category.productivity", "productName": "James", "osx": { - "icon": "resource-compile/icon.icns" + "icon": "icon.icns" }, "win": { "iconUrl": "https://github.com/mitchhentges/james/blob/electron-builder/resource-compile/icon.ico?raw=true" @@ -90,12 +85,11 @@ "linux": { "synopsis": "Web proxy" }, - "overwrite": true, - "app": "./package" + "overwrite": true }, "directories": { - "buildResources": "build-resources", - "output": "binaries", + "buildResources": "resource-compile", + "output": "builder-binaries", "app": "./package" } } diff --git a/resource-runtime/package.json b/resource-runtime/package.json new file mode 100644 index 00000000..00c3e9ae --- /dev/null +++ b/resource-runtime/package.json @@ -0,0 +1,12 @@ +{ + "name": "james", + "version": "1.4.5", + "description": "HTTP/HTTPS proxy built in Electron and ReactJS", + "main": "electron-app.js", + "author": "Julian Hollmann ", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/james-proxy/james.git" + } +} From b79020928b29128ef2a5b3339fd34ba079efb17f Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Fri, 13 May 2016 13:56:02 +0200 Subject: [PATCH 04/35] Remove unnecessary option and properly set output directory --- package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index dbd9010e..f2b2e336 100644 --- a/package.json +++ b/package.json @@ -84,12 +84,11 @@ }, "linux": { "synopsis": "Web proxy" - }, - "overwrite": true + } }, "directories": { "buildResources": "resource-compile", - "output": "builder-binaries", + "output": "build", "app": "./package" } } From a415a1f0d34dde15cc836b75f553173fac952b46 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Fri, 13 May 2016 14:58:13 +0200 Subject: [PATCH 05/35] Add 'background' item for electron-builder --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index f2b2e336..1b6fd24b 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,8 @@ "app-category-type": "public.app-category.productivity", "productName": "James", "osx": { - "icon": "icon.icns" + "icon": "icon.icns", + "background": "icon.png" }, "win": { "iconUrl": "https://github.com/mitchhentges/james/blob/electron-builder/resource-compile/icon.ico?raw=true" From 9f0af30c8fc7287591786d297059fe5d0f380218 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Fri, 13 May 2016 15:30:38 +0200 Subject: [PATCH 06/35] Apparently `background` isn't based off of `buildResources` --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1b6fd24b..b40a9e8f 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "productName": "James", "osx": { "icon": "icon.icns", - "background": "icon.png" + "background": "resource-compile/icon.png" }, "win": { "iconUrl": "https://github.com/mitchhentges/james/blob/electron-builder/resource-compile/icon.ico?raw=true" From cf829d9cef87cb0f2fb3d8a4e3c516574d32b513 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Fri, 13 May 2016 15:38:02 +0200 Subject: [PATCH 07/35] Cool, nothing is based off of `buildResources`. I'm not really sure what it's used for, at this point --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b40a9e8f..dccb9901 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "app-category-type": "public.app-category.productivity", "productName": "James", "osx": { - "icon": "icon.icns", + "icon": "resource-compile/icon.icns", "background": "resource-compile/icon.png" }, "win": { From 99dead8f0e35b08c48f72461b99af4a0458ef011 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Fri, 13 May 2016 15:42:10 +0200 Subject: [PATCH 08/35] Output should be to binaries --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dccb9901..ffa26591 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ }, "directories": { "buildResources": "resource-compile", - "output": "build", + "output": "binaries", "app": "./package" } } From e3eb03b8d59f43ba00870f398eebc5e297324bc8 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 09:34:30 +0200 Subject: [PATCH 09/35] Don't need electron-packager directly anymore --- npm-debug.log | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 - 2 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 npm-debug.log diff --git a/npm-debug.log b/npm-debug.log new file mode 100644 index 00000000..ad2ca8d0 --- /dev/null +++ b/npm-debug.log @@ -0,0 +1,93 @@ +0 info it worked if it ends with ok +1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'install', 'appdmg-tf' ] +2 info using npm@3.9.0 +3 info using node@v6.1.0 +4 silly loadCurrentTree Starting +5 silly install loadCurrentTree +6 silly install readLocalPackageData +7 silly fetchPackageMetaData appdmg-tf +8 silly fetchNamedPackageData appdmg-tf +9 silly mapToRegistry name appdmg-tf +10 silly mapToRegistry using default registry +11 silly mapToRegistry registry https://registry.npmjs.org/ +12 silly mapToRegistry data Result { +12 silly mapToRegistry raw: 'appdmg-tf', +12 silly mapToRegistry scope: null, +12 silly mapToRegistry name: 'appdmg-tf', +12 silly mapToRegistry rawSpec: '', +12 silly mapToRegistry spec: 'latest', +12 silly mapToRegistry type: 'tag' } +13 silly mapToRegistry uri https://registry.npmjs.org/appdmg-tf +14 verbose request uri https://registry.npmjs.org/appdmg-tf +15 verbose request no auth needed +16 info attempt registry request try #1 at 2:37:38 PM +17 verbose request using bearer token for auth +18 verbose request id eee19423f8202db0 +19 verbose etag "5DKNJD1T3RWXTDNPP4IVKJKQC" +20 http request GET https://registry.npmjs.org/appdmg-tf +21 http 304 https://registry.npmjs.org/appdmg-tf +22 verbose headers { 'cache-control': 'max-age=300', +22 verbose headers 'accept-ranges': 'bytes', +22 verbose headers date: 'Fri, 13 May 2016 12:37:31 GMT', +22 verbose headers via: '1.1 varnish', +22 verbose headers connection: 'keep-alive', +22 verbose headers 'x-served-by': 'cache-fra1236-FRA', +22 verbose headers 'x-cache': 'MISS', +22 verbose headers 'x-cache-hits': '0', +22 verbose headers 'x-timer': 'S1463143051.199587,VS0,VE184', +22 verbose headers vary: 'Accept-Encoding' } +23 silly get cb [ 304, +23 silly get { 'cache-control': 'max-age=300', +23 silly get 'accept-ranges': 'bytes', +23 silly get date: 'Fri, 13 May 2016 12:37:31 GMT', +23 silly get via: '1.1 varnish', +23 silly get connection: 'keep-alive', +23 silly get 'x-served-by': 'cache-fra1236-FRA', +23 silly get 'x-cache': 'MISS', +23 silly get 'x-cache-hits': '0', +23 silly get 'x-timer': 'S1463143051.199587,VS0,VE184', +23 silly get vary: 'Accept-Encoding' } ] +24 verbose etag https://registry.npmjs.org/appdmg-tf from cache +25 verbose get saving appdmg-tf to /home/mitch/.npm/registry.npmjs.org/appdmg-tf/.cache.json +26 verbose correctMkdir /home/mitch/.npm correctMkdir not in flight; initializing +27 silly install normalizeTree +28 silly loadCurrentTree Finishing +29 silly loadIdealTree Starting +30 silly install loadIdealTree +31 silly cloneCurrentTree Starting +32 silly install cloneCurrentTreeToIdealTree +33 silly cloneCurrentTree Finishing +34 silly loadShrinkwrap Starting +35 silly install loadShrinkwrap +36 silly loadShrinkwrap Finishing +37 silly loadAllDepsIntoIdealTree Starting +38 silly install loadAllDepsIntoIdealTree +39 silly rollbackFailedOptional Starting +40 silly rollbackFailedOptional Finishing +41 silly runTopLevelLifecycles Starting +42 silly runTopLevelLifecycles Finishing +43 silly install printInstalled +44 verbose stack Error: Unsupported platform for appdmg-tf@0.3.11: wanted {"name":"appdmg-tf","version":"0.3.11","license":"MIT","author":{"name":"Linus Unnebäck","email":"linus@folkdatorn.se"},"bin":{"appdmg-tf":"bin/appdmg.js"},"main":"index.js","preferGlobal":true,"dependencies":{"async":"^1.4.2","ds-store":"~0.1.4","fs-temp":"^1.0.0","fs-xattr":"~0.1.11","image-size":"~0.4.0","minimist":"^1.1.3","repeat-string":"^1.5.2"},"engines":{"node":">=0.10.0"},"os":["darwin"],"repository":{"type":"git","url":"git+ssh://git@github.com/LinusU/node-appdmg.git"},"scripts":{"test":"standard && mocha -b"},"devDependencies":{"capture-window":"^0.1.3","looks-same":"^2.1.0","mocha":"^2.2.5","standard":"^6.0.5"},"gitHead":"8dd4b340776550165da2fce1432ac8ccd0a422ae","description":"Generate beautiful DMG-images for your OS X applications.","bugs":{"url":"https://github.com/LinusU/node-appdmg/issues"},"homepage":"https://github.com/LinusU/node-appdmg#readme","_id":"appdmg-tf@0.3.11","_shasum":"33f7e9361f6fb2241b579bc246b4b6334aae49f7","_from":"appdmg-tf","_npmVersion":"3.8.7","_nodeVersion":"6.0.0","_npmUser":{"name":"develar","email":"develar@gmail.com"},"dist":{"shasum":"33f7e9361f6fb2241b579bc246b4b6334aae49f7","tarball":"https://registry.npmjs.org/appdmg-tf/-/appdmg-tf-0.3.11.tgz"},"maintainers":[{"name":"develar","email":"develar@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/appdmg-tf-0.3.11.tgz_1461828554738_0.9758019840810448"},"directories":{},"_resolved":"https://registry.npmjs.org/appdmg-tf/-/appdmg-tf-0.3.11.tgz","_requested":{"raw":"appdmg-tf","scope":null,"name":"appdmg-tf","rawSpec":"","spec":"latest","type":"tag"},"_spec":"appdmg-tf","_where":"/home/mitch/dev/james","_args":[["appdmg-tf","/home/mitch/dev/james"]],"readme":"ERROR: No README data found!"} (current: {"os":"linux","cpu":"x64"}) +44 verbose stack at checkPlatform (/usr/lib/node_modules/npm/node_modules/npm-install-checks/index.js:45:14) +44 verbose stack at thenWarnEngineIssues (/usr/lib/node_modules/npm/lib/install/validate-args.js:41:5) +44 verbose stack at /usr/lib/node_modules/npm/node_modules/iferr/index.js:13:50 +44 verbose stack at checkEngine (/usr/lib/node_modules/npm/node_modules/npm-install-checks/index.js:24:10) +44 verbose stack at module.exports.isInstallable (/usr/lib/node_modules/npm/lib/install/validate-args.js:38:3) +44 verbose stack at Array. (/usr/lib/node_modules/npm/node_modules/slide/lib/bind-actor.js:15:8) +44 verbose stack at LOOP (/usr/lib/node_modules/npm/node_modules/slide/lib/chain.js:15:14) +44 verbose stack at /usr/lib/node_modules/npm/node_modules/slide/lib/chain.js:18:7 +44 verbose stack at checkSelf (/usr/lib/node_modules/npm/lib/install/validate-args.js:46:72) +44 verbose stack at Array. (/usr/lib/node_modules/npm/node_modules/slide/lib/bind-actor.js:15:8) +45 verbose pkgid appdmg-tf@0.3.11 +46 verbose cwd /home/mitch/dev/james +47 error Linux 4.5.3-1-ARCH +48 error argv "/usr/bin/node" "/usr/bin/npm" "install" "appdmg-tf" +49 error node v6.1.0 +50 error npm v3.9.0 +51 error code EBADPLATFORM +52 error notsup Not compatible with your operating system or architecture: appdmg-tf@0.3.11 +53 error notsup Valid OS: darwin +53 error notsup Valid Arch: any +53 error notsup Actual OS: linux +53 error notsup Actual Arch: x64 +54 verbose exit [ 1, true ] diff --git a/package.json b/package.json index ffa26591..99b23969 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "electron-builder": "^3.17.1", "electron-connect": "^0.4.0", "electron-localshortcut": "^0.6.0", - "electron-packager": "7.0.1", "electron-prebuilt": "1.0.2", "envify": "^3.4.0", "eslint": "^2.2.0", From 7cc76818bf181d76926d34c4e3d158f07f235ca3 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 10:28:00 +0200 Subject: [PATCH 10/35] Put development version into app version --- gulpfile.js | 25 +++++++++++++------ package.json | 1 + .../package.json | 1 - 3 files changed, 19 insertions(+), 8 deletions(-) rename {resource-runtime => resource-compile}/package.json (93%) diff --git a/gulpfile.js b/gulpfile.js index 4d5fb981..54892168 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -13,6 +13,8 @@ const electronConnect = require('electron-connect').server; const gulpif = require('gulp-if'); const browserify = require('browserify'); const source = require('vinyl-source-stream'); +const jeditor = require('gulp-json-editor'); +const version = require('./package.json').version; gulp.task('default', ['js', 'css', 'resources']); @@ -42,21 +44,31 @@ gulp.task('css', () => { }); gulp.task('resources', () => { + const dest = 'build'; + return es.merge([ gulp.src('node_modules/font-awesome/fonts/**').pipe(gulp.dest('build/fonts')), gulp.src('resource-runtime/**') .pipe(changed('build')) - .pipe(gulp.dest('build')) + .pipe(gulp.dest(dest)), + gulp.src('resource-compile/package.json') + .pipe(jeditor({ version })) + .pipe(gulp.dest(dest)) ]); }); -gulp.task('package-resources', ['default'], () => { +gulp.task('package-resources', ['css'], () => { + const dest = 'package'; + return es.merge([ gulp.src('node_modules/font-awesome/fonts/**').pipe(gulp.dest('package/fonts')), gulp.src('build/james.css').pipe(gulp.dest('package')), gulp.src('resource-runtime/**') .pipe(gulpif('*.html', useref())) - .pipe(gulp.dest('package')) + .pipe(gulp.dest(dest)), + gulp.src('resource-compile/package.json') + .pipe(jeditor({ version })) + .pipe(gulp.dest(dest)) ]); }); @@ -82,22 +94,21 @@ function gulpBrowserify(entry) { }).bundle(); } -gulp.task('package-render', ['default'], () => { +gulp.task('package-render', ['js'], () => { gulpBrowserify('build/index.js') .pipe(source('index.js')) .pipe(gulp.dest('./package')); }); -gulp.task('package-main', ['default'], () => { +gulp.task('package-main', ['js'], () => { gulpBrowserify('build/electron-app.js') .pipe(source('electron-app.js')) .pipe(gulp.dest('./package')); }); gulp.task('package', ['package-resources', 'package-render', 'package-main'], (done) => { - const appVersion = require('./package.json').version; const electronVersion = require('electron-prebuilt/package.json').version; - console.log(`Packaging James v${appVersion}...`); + console.log(`Packaging James v${version}...`); /*electron({ all: true, diff --git a/package.json b/package.json index 99b23969..f291dd32 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "gulp-babel": "^6.1.1", "gulp-changed": "^1.3.0", "gulp-if": "^2.0.0", + "gulp-json-editor": "^2.2.1", "gulp-rename": "^1.2.2", "gulp-sass": "^2.1.1", "gulp-sourcemaps": "^1.6.0", diff --git a/resource-runtime/package.json b/resource-compile/package.json similarity index 93% rename from resource-runtime/package.json rename to resource-compile/package.json index 00c3e9ae..6c3be819 100644 --- a/resource-runtime/package.json +++ b/resource-compile/package.json @@ -1,5 +1,4 @@ { - "name": "james", "version": "1.4.5", "description": "HTTP/HTTPS proxy built in Electron and ReactJS", "main": "electron-app.js", From 28e5ba5698d37cf7945f1db89788e4d954194fed Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 10:57:53 +0200 Subject: [PATCH 11/35] Put 'name' back in app package.json Ensure that working version of eslint is used --- gulpfile.js | 18 ++----- npm-debug.log | 93 ----------------------------------- package.json | 2 +- resource-compile/package.json | 1 + 4 files changed, 7 insertions(+), 107 deletions(-) delete mode 100644 npm-debug.log diff --git a/gulpfile.js b/gulpfile.js index 54892168..0246e696 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -7,7 +7,7 @@ const changed = require('gulp-changed'); const sass = require('gulp-sass'); const sourcemaps = require('gulp-sourcemaps'); const autoprefixer = require('gulp-autoprefixer'); -const electron = require('electron-packager'); +const builder = require('electron-builder'); const useref = require('gulp-useref'); const electronConnect = require('electron-connect').server; const gulpif = require('gulp-if'); @@ -107,20 +107,12 @@ gulp.task('package-main', ['js'], () => { }); gulp.task('package', ['package-resources', 'package-render', 'package-main'], (done) => { - const electronVersion = require('electron-prebuilt/package.json').version; console.log(`Packaging James v${version}...`); - /*electron({ - all: true, - dir: 'package', - platform: 'all', - name: 'James', - overwrite: true, - icon: 'resource/icon.icns', - 'app-version': appVersion, - version: electronVersion, - out: 'binaries' - }, (err) => done(err));*/ + builder.build({ + dist: true, + arch: 'all' + }).then(done); }); gulp.task('watch', ['default'], () => { diff --git a/npm-debug.log b/npm-debug.log deleted file mode 100644 index ad2ca8d0..00000000 --- a/npm-debug.log +++ /dev/null @@ -1,93 +0,0 @@ -0 info it worked if it ends with ok -1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'install', 'appdmg-tf' ] -2 info using npm@3.9.0 -3 info using node@v6.1.0 -4 silly loadCurrentTree Starting -5 silly install loadCurrentTree -6 silly install readLocalPackageData -7 silly fetchPackageMetaData appdmg-tf -8 silly fetchNamedPackageData appdmg-tf -9 silly mapToRegistry name appdmg-tf -10 silly mapToRegistry using default registry -11 silly mapToRegistry registry https://registry.npmjs.org/ -12 silly mapToRegistry data Result { -12 silly mapToRegistry raw: 'appdmg-tf', -12 silly mapToRegistry scope: null, -12 silly mapToRegistry name: 'appdmg-tf', -12 silly mapToRegistry rawSpec: '', -12 silly mapToRegistry spec: 'latest', -12 silly mapToRegistry type: 'tag' } -13 silly mapToRegistry uri https://registry.npmjs.org/appdmg-tf -14 verbose request uri https://registry.npmjs.org/appdmg-tf -15 verbose request no auth needed -16 info attempt registry request try #1 at 2:37:38 PM -17 verbose request using bearer token for auth -18 verbose request id eee19423f8202db0 -19 verbose etag "5DKNJD1T3RWXTDNPP4IVKJKQC" -20 http request GET https://registry.npmjs.org/appdmg-tf -21 http 304 https://registry.npmjs.org/appdmg-tf -22 verbose headers { 'cache-control': 'max-age=300', -22 verbose headers 'accept-ranges': 'bytes', -22 verbose headers date: 'Fri, 13 May 2016 12:37:31 GMT', -22 verbose headers via: '1.1 varnish', -22 verbose headers connection: 'keep-alive', -22 verbose headers 'x-served-by': 'cache-fra1236-FRA', -22 verbose headers 'x-cache': 'MISS', -22 verbose headers 'x-cache-hits': '0', -22 verbose headers 'x-timer': 'S1463143051.199587,VS0,VE184', -22 verbose headers vary: 'Accept-Encoding' } -23 silly get cb [ 304, -23 silly get { 'cache-control': 'max-age=300', -23 silly get 'accept-ranges': 'bytes', -23 silly get date: 'Fri, 13 May 2016 12:37:31 GMT', -23 silly get via: '1.1 varnish', -23 silly get connection: 'keep-alive', -23 silly get 'x-served-by': 'cache-fra1236-FRA', -23 silly get 'x-cache': 'MISS', -23 silly get 'x-cache-hits': '0', -23 silly get 'x-timer': 'S1463143051.199587,VS0,VE184', -23 silly get vary: 'Accept-Encoding' } ] -24 verbose etag https://registry.npmjs.org/appdmg-tf from cache -25 verbose get saving appdmg-tf to /home/mitch/.npm/registry.npmjs.org/appdmg-tf/.cache.json -26 verbose correctMkdir /home/mitch/.npm correctMkdir not in flight; initializing -27 silly install normalizeTree -28 silly loadCurrentTree Finishing -29 silly loadIdealTree Starting -30 silly install loadIdealTree -31 silly cloneCurrentTree Starting -32 silly install cloneCurrentTreeToIdealTree -33 silly cloneCurrentTree Finishing -34 silly loadShrinkwrap Starting -35 silly install loadShrinkwrap -36 silly loadShrinkwrap Finishing -37 silly loadAllDepsIntoIdealTree Starting -38 silly install loadAllDepsIntoIdealTree -39 silly rollbackFailedOptional Starting -40 silly rollbackFailedOptional Finishing -41 silly runTopLevelLifecycles Starting -42 silly runTopLevelLifecycles Finishing -43 silly install printInstalled -44 verbose stack Error: Unsupported platform for appdmg-tf@0.3.11: wanted {"name":"appdmg-tf","version":"0.3.11","license":"MIT","author":{"name":"Linus Unnebäck","email":"linus@folkdatorn.se"},"bin":{"appdmg-tf":"bin/appdmg.js"},"main":"index.js","preferGlobal":true,"dependencies":{"async":"^1.4.2","ds-store":"~0.1.4","fs-temp":"^1.0.0","fs-xattr":"~0.1.11","image-size":"~0.4.0","minimist":"^1.1.3","repeat-string":"^1.5.2"},"engines":{"node":">=0.10.0"},"os":["darwin"],"repository":{"type":"git","url":"git+ssh://git@github.com/LinusU/node-appdmg.git"},"scripts":{"test":"standard && mocha -b"},"devDependencies":{"capture-window":"^0.1.3","looks-same":"^2.1.0","mocha":"^2.2.5","standard":"^6.0.5"},"gitHead":"8dd4b340776550165da2fce1432ac8ccd0a422ae","description":"Generate beautiful DMG-images for your OS X applications.","bugs":{"url":"https://github.com/LinusU/node-appdmg/issues"},"homepage":"https://github.com/LinusU/node-appdmg#readme","_id":"appdmg-tf@0.3.11","_shasum":"33f7e9361f6fb2241b579bc246b4b6334aae49f7","_from":"appdmg-tf","_npmVersion":"3.8.7","_nodeVersion":"6.0.0","_npmUser":{"name":"develar","email":"develar@gmail.com"},"dist":{"shasum":"33f7e9361f6fb2241b579bc246b4b6334aae49f7","tarball":"https://registry.npmjs.org/appdmg-tf/-/appdmg-tf-0.3.11.tgz"},"maintainers":[{"name":"develar","email":"develar@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/appdmg-tf-0.3.11.tgz_1461828554738_0.9758019840810448"},"directories":{},"_resolved":"https://registry.npmjs.org/appdmg-tf/-/appdmg-tf-0.3.11.tgz","_requested":{"raw":"appdmg-tf","scope":null,"name":"appdmg-tf","rawSpec":"","spec":"latest","type":"tag"},"_spec":"appdmg-tf","_where":"/home/mitch/dev/james","_args":[["appdmg-tf","/home/mitch/dev/james"]],"readme":"ERROR: No README data found!"} (current: {"os":"linux","cpu":"x64"}) -44 verbose stack at checkPlatform (/usr/lib/node_modules/npm/node_modules/npm-install-checks/index.js:45:14) -44 verbose stack at thenWarnEngineIssues (/usr/lib/node_modules/npm/lib/install/validate-args.js:41:5) -44 verbose stack at /usr/lib/node_modules/npm/node_modules/iferr/index.js:13:50 -44 verbose stack at checkEngine (/usr/lib/node_modules/npm/node_modules/npm-install-checks/index.js:24:10) -44 verbose stack at module.exports.isInstallable (/usr/lib/node_modules/npm/lib/install/validate-args.js:38:3) -44 verbose stack at Array. (/usr/lib/node_modules/npm/node_modules/slide/lib/bind-actor.js:15:8) -44 verbose stack at LOOP (/usr/lib/node_modules/npm/node_modules/slide/lib/chain.js:15:14) -44 verbose stack at /usr/lib/node_modules/npm/node_modules/slide/lib/chain.js:18:7 -44 verbose stack at checkSelf (/usr/lib/node_modules/npm/lib/install/validate-args.js:46:72) -44 verbose stack at Array. (/usr/lib/node_modules/npm/node_modules/slide/lib/bind-actor.js:15:8) -45 verbose pkgid appdmg-tf@0.3.11 -46 verbose cwd /home/mitch/dev/james -47 error Linux 4.5.3-1-ARCH -48 error argv "/usr/bin/node" "/usr/bin/npm" "install" "appdmg-tf" -49 error node v6.1.0 -50 error npm v3.9.0 -51 error code EBADPLATFORM -52 error notsup Not compatible with your operating system or architecture: appdmg-tf@0.3.11 -53 error notsup Valid OS: darwin -53 error notsup Valid Arch: any -53 error notsup Actual OS: linux -53 error notsup Actual Arch: x64 -54 verbose exit [ 1, true ] diff --git a/package.json b/package.json index f291dd32..c1595fc8 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "electron-localshortcut": "^0.6.0", "electron-prebuilt": "1.0.2", "envify": "^3.4.0", - "eslint": "^2.2.0", + "eslint": "2.9.0", "eslint-plugin-react": "^5.0.1", "event-stream": "^3.3.2", "font-awesome": "^4.5.0", diff --git a/resource-compile/package.json b/resource-compile/package.json index 6c3be819..00c3e9ae 100644 --- a/resource-compile/package.json +++ b/resource-compile/package.json @@ -1,4 +1,5 @@ { + "name": "james", "version": "1.4.5", "description": "HTTP/HTTPS proxy built in Electron and ReactJS", "main": "electron-app.js", From 0bd8cb341ab31b991b3281b6878dd20d72a672f2 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 11:01:14 +0200 Subject: [PATCH 12/35] Add icnsutils to travis apt --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 2d4c3eaa..1b516957 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,7 @@ addons: apt: packages: - wine + - icnsutils script: - npm --depth Infinity update - npm run test-ci From aba660530952fed3ed35912587a54dc5eeb49587 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 11:07:20 +0200 Subject: [PATCH 13/35] Add graphicsmagick to apt --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 1b516957..4e8ed6cb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ addons: packages: - wine - icnsutils + - graphicsmagick script: - npm --depth Infinity update - npm run test-ci From 0f74b647c4b989e88c36ef7977b30af1a62630fb Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 11:11:14 +0200 Subject: [PATCH 14/35] Ensure that travis fails when builder.build --- gulpfile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 0246e696..c3e24ef5 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -112,7 +112,7 @@ gulp.task('package', ['package-resources', 'package-render', 'package-main'], (d builder.build({ dist: true, arch: 'all' - }).then(done); + }).then(done).catch(done); }); gulp.task('watch', ['default'], () => { @@ -122,7 +122,7 @@ gulp.task('watch', ['default'], () => { }); gulp.task('livereload', ['default'], () => { - var server = electronConnect.create({path: './build'}); + const server = electronConnect.create({path: './build'}); server.start(); const reload = () => server.reload(); From f2580f8d6b9ee813fc1c299aae390811a3f7aa1c Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 11:15:39 +0200 Subject: [PATCH 15/35] Build for both linux and osx --- .travis.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.travis.yml b/.travis.yml index 4e8ed6cb..916395e2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,10 @@ +dist: trusty + +matrix: + include: + - os: linux + - os: osx + language: node_js node_js: - '5.1' From fd132baad0ffdf0b2396dd7f70ecbe35401dea92 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 11:23:42 +0200 Subject: [PATCH 16/35] Travis, pls use trusty --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 916395e2..7be56039 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ -dist: trusty - matrix: include: - os: linux + sudo: required + dist: trusty - os: osx language: node_js From ebda43b2cc536394f7ea7c08f8beaaecec617560 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 11:25:23 +0200 Subject: [PATCH 17/35] Travis, I only need one linux. Trusty only. No precise. Precis? --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7be56039..1667896e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ +sudo: required +dist: trusty + matrix: include: - - os: linux - sudo: required - dist: trusty - os: osx language: node_js From 7d4bb3718e7ec71f68711adb781dd7f33e38f1d3 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 11:48:52 +0200 Subject: [PATCH 18/35] Don't need wine if appveyor will do windows --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1667896e..29196298 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,6 @@ node_js: addons: apt: packages: - - wine - icnsutils - graphicsmagick script: From db9188098e4997156e6b51e4d9f61f61f7ac3dc8 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 12:06:50 +0200 Subject: [PATCH 19/35] Configure appveyor Make travis prune unneeded deps --- .travis.yml | 1 + appveyor.yml | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 appveyor.yml diff --git a/.travis.yml b/.travis.yml index 29196298..9f343aab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,7 @@ addons: - icnsutils - graphicsmagick script: + - npm prune - npm --depth Infinity update - npm run test-ci before_deploy: diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..dffc1a34 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,15 @@ +platform: + - x64 + +cache: + - node_modules + - '%USERPROFILE%\.electron' + +install: + - ps: Install-Product node 5 x64 + - npm install + - npm prune + - npm --depth Infinity update + +build_script: + - npm run test-ci \ No newline at end of file From 1b01fc5354161d4098308192a3cd083d03b3c8a5 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 12:22:16 +0200 Subject: [PATCH 20/35] Add artifacts to appveyor config --- appveyor.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index dffc1a34..dd6c0508 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,4 +12,9 @@ install: - npm --depth Infinity update build_script: - - npm run test-ci \ No newline at end of file + - npm run test-ci + +artifacts: + - path: binaries\win-x64 + name: Windows setup and .nupkg + type: zip \ No newline at end of file From f26d87157def45bb1870f11c5abcdfa76d08bc9d Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 12:57:25 +0200 Subject: [PATCH 21/35] On windows, only build x64 --- gulpfile.js | 28 +++++++++------------------- package.json | 9 +++++---- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index c3e24ef5..ca911e2b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -17,6 +17,7 @@ const jeditor = require('gulp-json-editor'); const version = require('./package.json').version; gulp.task('default', ['js', 'css', 'resources']); +gulp.task('dist-prep', ['dist-resources', 'browserify']); gulp.task('clean', () => { return del.sync(['build', 'package', 'binaries']); @@ -57,7 +58,7 @@ gulp.task('resources', () => { ]); }); -gulp.task('package-resources', ['css'], () => { +gulp.task('dist-resources', ['css'], () => { const dest = 'package'; return es.merge([ @@ -72,9 +73,9 @@ gulp.task('package-resources', ['css'], () => { ]); }); -function gulpBrowserify(entry) { +gulp.task('browserify', ['js'], () => { process.env.NODE_ENV = 'production'; - return browserify(entry, { + const opts = { builtins: false, commondir: false, browserField: false, @@ -91,30 +92,19 @@ function gulpBrowserify(entry) { transform: [ 'envify' ] - }).bundle(); -} + }; -gulp.task('package-render', ['js'], () => { - gulpBrowserify('build/index.js') + browserify('build/index.js', opts) + .bundle() .pipe(source('index.js')) .pipe(gulp.dest('./package')); -}); -gulp.task('package-main', ['js'], () => { - gulpBrowserify('build/electron-app.js') + browserify('build/electron-app.js', opts) + .bundle() .pipe(source('electron-app.js')) .pipe(gulp.dest('./package')); }); -gulp.task('package', ['package-resources', 'package-render', 'package-main'], (done) => { - console.log(`Packaging James v${version}...`); - - builder.build({ - dist: true, - arch: 'all' - }).then(done).catch(done); -}); - gulp.task('watch', ['default'], () => { gulp.watch('src/**', ['js']); gulp.watch('style/**', ['css']); diff --git a/package.json b/package.json index c1595fc8..779547e7 100644 --- a/package.json +++ b/package.json @@ -5,14 +5,15 @@ "main": "electron-app.js", "scripts": { "build": "gulp", + "start": "electron ./build", "watch": "gulp watch", "development": "gulp livereload", - "package": "gulp clean package", - "zip-binaries": "cd binaries; rm *.zip; for i in *; do zip --symlinks -r \"${i%/}.zip\" \"$i\"; done", - "start": "electron ./build", "lint": "eslint ./src ./test", "test": "mocha --reporter dot --recursive -r setup-referee-sinon/globals test/unit --compilers js:babel-core/register", - "test-ci": "npm run lint && npm run test && npm run package" + "test-ci": "npm run lint && npm run test && npm run dist", + "package": "npm run dist", + "dist": "gulp clean dist-prep && build --arch all", + "dist:win64": "gulp clean dist-prep && build --platform win32 --arch x64" }, "author": "Julian Hollmann ", "dependencies": { From 5f8373a6eaf975df2b296961b72b80dbc9f0400e Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:00:32 +0200 Subject: [PATCH 22/35] Ensure that windows only builds x64, for sure now --- .travis.yml | 1 + appveyor.yml | 1 + package.json | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9f343aab..b1dda2e8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ script: - npm prune - npm --depth Infinity update - npm run test-ci + - npm run dist before_deploy: - npm run zip-binaries deploy: diff --git a/appveyor.yml b/appveyor.yml index dd6c0508..fea33d3a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -13,6 +13,7 @@ install: build_script: - npm run test-ci + - npm run dist:win64 artifacts: - path: binaries\win-x64 diff --git a/package.json b/package.json index 779547e7..a4184cb5 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "development": "gulp livereload", "lint": "eslint ./src ./test", "test": "mocha --reporter dot --recursive -r setup-referee-sinon/globals test/unit --compilers js:babel-core/register", - "test-ci": "npm run lint && npm run test && npm run dist", + "test-ci": "npm run lint && npm run test", "package": "npm run dist", "dist": "gulp clean dist-prep && build --arch all", "dist:win64": "gulp clean dist-prep && build --platform win32 --arch x64" From 30648fa78bec5debd1da68e2d23e718bd5d713c3 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:12:03 +0200 Subject: [PATCH 23/35] Appveyor no tests --- appveyor.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index fea33d3a..8b41f759 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -18,4 +18,6 @@ build_script: artifacts: - path: binaries\win-x64 name: Windows setup and .nupkg - type: zip \ No newline at end of file + type: zip + +test: off \ No newline at end of file From 60a74bb5f85d291e09198141737cf0b4ff9b0cc0 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:22:54 +0200 Subject: [PATCH 24/35] Add GH_TOKENs --- .travis.yml | 41 +++++++++++++---------------------------- appveyor.yml | 4 ++++ 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/.travis.yml b/.travis.yml index b1dda2e8..0b461139 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,41 +1,26 @@ sudo: required dist: trusty - matrix: include: - - os: osx - + - os: osx language: node_js node_js: - - '5.1' +- '5.1' addons: apt: packages: - - icnsutils - - graphicsmagick + - icnsutils + - graphicsmagick script: - - npm prune - - npm --depth Infinity update - - npm run test-ci - - npm run dist -before_deploy: - - npm run zip-binaries -deploy: - provider: releases - api_key: - secure: KEDggFkivi1iJbO/G4hicXznWk+bGA7sDuKSd36fBB9pIN/JSr08HlasrmqLmRva/rkHinbEdu+f75k/xh/m0UKll5jXUhmJVgbvNjPWQDtRSeeRM8UjveCL9wTZopkM4bLLxmWD2klyCC8qde5mMOJ1gRi+aPboGBgxEmtD69Bdhq1k3Dd2HTFnqQEh+8al2//+ayhne512Mo+lgwR1+4pLbhE/xK0iV7gQllRzTT2/ifbn5an8vbUkwfmm2NivNhSJTaPD2NndLvOVBKKQVcbIx+37gXO1Hn6F7Wr0MMHeh/ypJzGygxPQ2xZHtCKABw8jFetpFaFzm4xFcbyHsqclQlDLCv9J1e5DMvWk2ay29L9qWXT5dc7tnjaIVFPMEw4ViwIC30ThO44HHm6m+/tQAp3cDAD37uunp83wDAImbyCzZ3UoNLcmWHc39fxaD1s4Fzan3/++QbqSgdB+p4dXraxlRyqFcmKW+O5S+oGFolmdLuRbxPaaeIMMGm9AN7+fmGJgmiRzPU5k3/ao6eHoycXVPcIiuFV+2ZxvJS4ewqT+HiH6cNOFeeHEXx2O0fjEuj7mZG5Jey5GNsOdcq7loPnipcGbDnIHs+wRyqPCQ5aZ+94gQAemjBdtVnDTKd7RSjKHWmbo3Xx260XnwAEsTDtVuUJmyVjpIdCdNAs= - file: - - binaries/James-darwin-x64.zip - - binaries/James-linux-ia32.zip - - binaries/James-linux-x64.zip - - binaries/James-win32-ia32.zip - - binaries/James-win32-x64.zip - skip_cleanup: true - on: - repo: james-proxy/james - tags: true +- npm prune +- npm --depth Infinity update +- npm run test-ci +- npm run dist cache: apt: true directories: - - node_modules - - $HOME/.electron \ No newline at end of file + - node_modules + - "$HOME/.electron" +env: + global: + secure: MH/lHeNdcu/SJoyQKLrZqjs6hPyeJK7O09y+bFc6IPRzl5E1iBhi7GO2GPhHtrbKMVJlN0dx8aVdPg2t5DBA2ecYq/LuiGAkzj4+qBzhm/T8A7iYVPYTjDbnzpKK9R6XXKraUzV5NVe8A1kIr5mkvKxod0eVHiXpsmkbKpBcUApZVemeds0JogMKN2eNrEH1EaqPSQ5GfjK/iQyTUCkzyIzywPKfp/zYubPLk5hmHXozF4baXEQjdp+UULjjGXY4mkWKEPq8L/uY69BhkDZ2ZIGO8PYDfBTmalmY1Q3aReZNuwW/zO9xiAXiYupS5TVEFAVoYe/NN4hhktoJJUCaq9XW5P68/1nf8O2++5/D7meEavAAMc7CE9zA8gbNmnbWnH9ZaYJZRxOZLbfv8ZcXMkCiRVI8mlITNKfLISwmvDPQ6R5ZHh495CvGrktSjo+g/1FViBAEGd4jJyaPPrPEVdYfNs5dBEyXNjFrSOOQu21sloTivOxS2z4UCs010vU7ZRomgLqBf5WYcKcR1WuCoJ4oVPUf2pSnHXBHw9zR/TCtQOwCir8NxYjJ6RJ0nYiGAzRW89ou83zSwpK7kXx/WORgskaGdNfo7OvE4TGswg4x6G5mQhCJo5S1blZ8HXME4jdm+so8UMcCA6rhBjt89FtCoPqJnioQpp1eKY2BOuc= diff --git a/appveyor.yml b/appveyor.yml index 8b41f759..6f407568 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -20,4 +20,8 @@ artifacts: name: Windows setup and .nupkg type: zip +environment: + GH_TOKEN: + secure: 1V6S11hA8oo6wo6IaW/jcv+lybbbhSv7sRij94aPsNSzVP5pso9U6aSrs6PNLfQfeOp38vhLn854u85dYkQQlw== + test: off \ No newline at end of file From 2b51f3c4f4b6349c199928a3216c9d5e17f1abaa Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:25:20 +0200 Subject: [PATCH 25/35] Appveyor get version from package.json --- appveyor.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 6f407568..ad1f8b6f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,3 +1,5 @@ +version: (Get-Content -Raw -Path package.json | ConvertFrom-Json).version + platform: - x64 From 1795d4392bc0867d9474f0ae4df30a65de252f36 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:25:52 +0200 Subject: [PATCH 26/35] Oops, powershell that version-getting --- appveyor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index ad1f8b6f..03ebb9a0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,5 @@ -version: (Get-Content -Raw -Path package.json | ConvertFrom-Json).version +version: + ps: (Get-Content -Raw -Path package.json | ConvertFrom-Json).version platform: - x64 From 45753e4c22a5f330104f93ad2daf90c04768ff68 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:30:45 +0200 Subject: [PATCH 27/35] Attempt to set appveyor build version in init --- appveyor.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 03ebb9a0..5e17c915 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,3 @@ -version: - ps: (Get-Content -Raw -Path package.json | ConvertFrom-Json).version - platform: - x64 @@ -8,6 +5,10 @@ cache: - node_modules - '%USERPROFILE%\.electron' +init: + - ps: $version = (Get-Content -Raw -Path package.json | ConvertFrom-Json).version + - ps: Update-AppveyorBuild -Version "$version" + install: - ps: Install-Product node 5 x64 - npm install From 676abd89c82107342e40868d8c12d0c127d4a31a Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:32:30 +0200 Subject: [PATCH 28/35] Re-add license and repository to main package.json --- package.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index a4184cb5..624dda9e 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,12 @@ "name": "james", "version": "1.4.5", "description": "HTTP/HTTPS proxy built in Electron and ReactJS", + "author": "Julian Hollmann ", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/james-proxy/james.git" + }, "main": "electron-app.js", "scripts": { "build": "gulp", @@ -15,7 +21,6 @@ "dist": "gulp clean dist-prep && build --arch all", "dist:win64": "gulp clean dist-prep && build --platform win32 --arch x64" }, - "author": "Julian Hollmann ", "dependencies": { "hoxy": "^3.2.0", "james-browser-launcher": "^1.2.1", From c6426570f4ddff5a53e9f4d7d7c3db1ab4c0a720 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:39:24 +0200 Subject: [PATCH 29/35] Env variables test for travis --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 0b461139..588077cc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,4 +23,6 @@ cache: - "$HOME/.electron" env: global: + - TEST=true + - Derp=pls secure: MH/lHeNdcu/SJoyQKLrZqjs6hPyeJK7O09y+bFc6IPRzl5E1iBhi7GO2GPhHtrbKMVJlN0dx8aVdPg2t5DBA2ecYq/LuiGAkzj4+qBzhm/T8A7iYVPYTjDbnzpKK9R6XXKraUzV5NVe8A1kIr5mkvKxod0eVHiXpsmkbKpBcUApZVemeds0JogMKN2eNrEH1EaqPSQ5GfjK/iQyTUCkzyIzywPKfp/zYubPLk5hmHXozF4baXEQjdp+UULjjGXY4mkWKEPq8L/uY69BhkDZ2ZIGO8PYDfBTmalmY1Q3aReZNuwW/zO9xiAXiYupS5TVEFAVoYe/NN4hhktoJJUCaq9XW5P68/1nf8O2++5/D7meEavAAMc7CE9zA8gbNmnbWnH9ZaYJZRxOZLbfv8ZcXMkCiRVI8mlITNKfLISwmvDPQ6R5ZHh495CvGrktSjo+g/1FViBAEGd4jJyaPPrPEVdYfNs5dBEyXNjFrSOOQu21sloTivOxS2z4UCs010vU7ZRomgLqBf5WYcKcR1WuCoJ4oVPUf2pSnHXBHw9zR/TCtQOwCir8NxYjJ6RJ0nYiGAzRW89ou83zSwpK7kXx/WORgskaGdNfo7OvE4TGswg4x6G5mQhCJo5S1blZ8HXME4jdm+so8UMcCA6rhBjt89FtCoPqJnioQpp1eKY2BOuc= From ff33ca13749340ee2365c11301027803aca960fa Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:44:36 +0200 Subject: [PATCH 30/35] Fix yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 588077cc..152cef2e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,4 +25,4 @@ env: global: - TEST=true - Derp=pls - secure: MH/lHeNdcu/SJoyQKLrZqjs6hPyeJK7O09y+bFc6IPRzl5E1iBhi7GO2GPhHtrbKMVJlN0dx8aVdPg2t5DBA2ecYq/LuiGAkzj4+qBzhm/T8A7iYVPYTjDbnzpKK9R6XXKraUzV5NVe8A1kIr5mkvKxod0eVHiXpsmkbKpBcUApZVemeds0JogMKN2eNrEH1EaqPSQ5GfjK/iQyTUCkzyIzywPKfp/zYubPLk5hmHXozF4baXEQjdp+UULjjGXY4mkWKEPq8L/uY69BhkDZ2ZIGO8PYDfBTmalmY1Q3aReZNuwW/zO9xiAXiYupS5TVEFAVoYe/NN4hhktoJJUCaq9XW5P68/1nf8O2++5/D7meEavAAMc7CE9zA8gbNmnbWnH9ZaYJZRxOZLbfv8ZcXMkCiRVI8mlITNKfLISwmvDPQ6R5ZHh495CvGrktSjo+g/1FViBAEGd4jJyaPPrPEVdYfNs5dBEyXNjFrSOOQu21sloTivOxS2z4UCs010vU7ZRomgLqBf5WYcKcR1WuCoJ4oVPUf2pSnHXBHw9zR/TCtQOwCir8NxYjJ6RJ0nYiGAzRW89ou83zSwpK7kXx/WORgskaGdNfo7OvE4TGswg4x6G5mQhCJo5S1blZ8HXME4jdm+so8UMcCA6rhBjt89FtCoPqJnioQpp1eKY2BOuc= + - secure: MH/lHeNdcu/SJoyQKLrZqjs6hPyeJK7O09y+bFc6IPRzl5E1iBhi7GO2GPhHtrbKMVJlN0dx8aVdPg2t5DBA2ecYq/LuiGAkzj4+qBzhm/T8A7iYVPYTjDbnzpKK9R6XXKraUzV5NVe8A1kIr5mkvKxod0eVHiXpsmkbKpBcUApZVemeds0JogMKN2eNrEH1EaqPSQ5GfjK/iQyTUCkzyIzywPKfp/zYubPLk5hmHXozF4baXEQjdp+UULjjGXY4mkWKEPq8L/uY69BhkDZ2ZIGO8PYDfBTmalmY1Q3aReZNuwW/zO9xiAXiYupS5TVEFAVoYe/NN4hhktoJJUCaq9XW5P68/1nf8O2++5/D7meEavAAMc7CE9zA8gbNmnbWnH9ZaYJZRxOZLbfv8ZcXMkCiRVI8mlITNKfLISwmvDPQ6R5ZHh495CvGrktSjo+g/1FViBAEGd4jJyaPPrPEVdYfNs5dBEyXNjFrSOOQu21sloTivOxS2z4UCs010vU7ZRomgLqBf5WYcKcR1WuCoJ4oVPUf2pSnHXBHw9zR/TCtQOwCir8NxYjJ6RJ0nYiGAzRW89ou83zSwpK7kXx/WORgskaGdNfo7OvE4TGswg4x6G5mQhCJo5S1blZ8HXME4jdm+so8UMcCA6rhBjt89FtCoPqJnioQpp1eKY2BOuc= From 012a8fcf53232241fa25b7de407ea488f97a4481 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:46:51 +0200 Subject: [PATCH 31/35] Appveyor doesn't want to play with artifacts, and I'll let this one go --- appveyor.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 5e17c915..dae4887e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -19,11 +19,6 @@ build_script: - npm run test-ci - npm run dist:win64 -artifacts: - - path: binaries\win-x64 - name: Windows setup and .nupkg - type: zip - environment: GH_TOKEN: secure: 1V6S11hA8oo6wo6IaW/jcv+lybbbhSv7sRij94aPsNSzVP5pso9U6aSrs6PNLfQfeOp38vhLn854u85dYkQQlw== From 5c97348543f091eeb6907306a45f7d1590a78092 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:48:44 +0200 Subject: [PATCH 32/35] Attempt to add secure travis var again --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 152cef2e..b27199dc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,6 +23,6 @@ cache: - "$HOME/.electron" env: global: - - TEST=true - - Derp=pls - - secure: MH/lHeNdcu/SJoyQKLrZqjs6hPyeJK7O09y+bFc6IPRzl5E1iBhi7GO2GPhHtrbKMVJlN0dx8aVdPg2t5DBA2ecYq/LuiGAkzj4+qBzhm/T8A7iYVPYTjDbnzpKK9R6XXKraUzV5NVe8A1kIr5mkvKxod0eVHiXpsmkbKpBcUApZVemeds0JogMKN2eNrEH1EaqPSQ5GfjK/iQyTUCkzyIzywPKfp/zYubPLk5hmHXozF4baXEQjdp+UULjjGXY4mkWKEPq8L/uY69BhkDZ2ZIGO8PYDfBTmalmY1Q3aReZNuwW/zO9xiAXiYupS5TVEFAVoYe/NN4hhktoJJUCaq9XW5P68/1nf8O2++5/D7meEavAAMc7CE9zA8gbNmnbWnH9ZaYJZRxOZLbfv8ZcXMkCiRVI8mlITNKfLISwmvDPQ6R5ZHh495CvGrktSjo+g/1FViBAEGd4jJyaPPrPEVdYfNs5dBEyXNjFrSOOQu21sloTivOxS2z4UCs010vU7ZRomgLqBf5WYcKcR1WuCoJ4oVPUf2pSnHXBHw9zR/TCtQOwCir8NxYjJ6RJ0nYiGAzRW89ou83zSwpK7kXx/WORgskaGdNfo7OvE4TGswg4x6G5mQhCJo5S1blZ8HXME4jdm+so8UMcCA6rhBjt89FtCoPqJnioQpp1eKY2BOuc= + - TEST=true + - Derp=pls + - secure: lmFuGJV9H7HRctLVOQ5Gvprw6PIVnu6AhTNVR+2uqCFlOOC/qGMiUWVGfb8dq8Yo/xf4cYaeFuK8R8pi9VFbMva4EhvzNioHCeUbZ0S+tAtrU3BbLD2MBkSVw2BmmSmioy3xMaNJbDiV9BD5dbPLDXdkZiH3fqL3OLJhrp10Cpcfe/tZB4LEPQsnCo24MOL+8fHhYre4K7aWSGWyVs9rVEbUtMKGw5AJswrpAFhDVluMH7JYS+sutL9peiRybxSVZj4s2qH/1deUE+cE3KqarfxaFJjLwdnGa3RUvhyiS4UnaP/7/M5o0jp6MYWIZ1LbERNSwlYVXtosRgPPS5o8eDkWcupQHw6yBPXW4WwcRLyaNFcQ34W+FveiE0TqfqgOZ2XBbr6ZcK0Vf1SQ3omnDjB0Zh715gnhrDQB74B3nG8au0KHaaqYxKz0dCuEsgbnIrVZzZvd1s6wuG9HY6FkPn6bNPbsOW7lK0WPRJH2oZxTl9KPygonbZ2/N5Mq7G+52r711q6yz0uep1RsGT2ZBspNDDhH7/4AIq3C+srSq+sn6oKDM9g5arfj00RpXZkv0ow/BCNlSqJYc0u/ydvRj0XPrOh+RPXNoEYGC3hw9fJq/OV5QvjhYN6c+2Ngq4edCOaneR0kH+188VJ+rGw5iNvYYROt3l9nSvsbw9TwyIc= From c31a2208b0ef0ca927c5352b7e1b3fc0c8803a7a Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:50:52 +0200 Subject: [PATCH 33/35] Travis, why you playin' --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b27199dc..923f2c8f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,4 +25,4 @@ env: global: - TEST=true - Derp=pls - - secure: lmFuGJV9H7HRctLVOQ5Gvprw6PIVnu6AhTNVR+2uqCFlOOC/qGMiUWVGfb8dq8Yo/xf4cYaeFuK8R8pi9VFbMva4EhvzNioHCeUbZ0S+tAtrU3BbLD2MBkSVw2BmmSmioy3xMaNJbDiV9BD5dbPLDXdkZiH3fqL3OLJhrp10Cpcfe/tZB4LEPQsnCo24MOL+8fHhYre4K7aWSGWyVs9rVEbUtMKGw5AJswrpAFhDVluMH7JYS+sutL9peiRybxSVZj4s2qH/1deUE+cE3KqarfxaFJjLwdnGa3RUvhyiS4UnaP/7/M5o0jp6MYWIZ1LbERNSwlYVXtosRgPPS5o8eDkWcupQHw6yBPXW4WwcRLyaNFcQ34W+FveiE0TqfqgOZ2XBbr6ZcK0Vf1SQ3omnDjB0Zh715gnhrDQB74B3nG8au0KHaaqYxKz0dCuEsgbnIrVZzZvd1s6wuG9HY6FkPn6bNPbsOW7lK0WPRJH2oZxTl9KPygonbZ2/N5Mq7G+52r711q6yz0uep1RsGT2ZBspNDDhH7/4AIq3C+srSq+sn6oKDM9g5arfj00RpXZkv0ow/BCNlSqJYc0u/ydvRj0XPrOh+RPXNoEYGC3hw9fJq/OV5QvjhYN6c+2Ngq4edCOaneR0kH+188VJ+rGw5iNvYYROt3l9nSvsbw9TwyIc= + - secure: "mxVdnW3J15VO9cEjs2DOJhstJD1hCXGVwTXHdMYkHCbcBTDeLSJnRMsPWrro/wcjFzu5DsQHQuaJXJOB+3tjfg73cx7LtoMsYcDrfCNiLXmj01AcPEdnAYCnu7xw4WCXce7CDwaOB272S6aUkbJC1zcIFehj+NAmml61Q0nNIZr63YHmO81YRaYlbXM3AK5FwUoVm7MlhiszEv9XpuuSCfjDhW33dW1JbQwWgngCffb6YS3+m2LIbvzptR4uIXPa1zadeDq/Hz5FINCsobaIuk4EbqGH4+dFQaBMKBWSWwc8goL1UChKivk1NumIY5f1XyV/eRyLEPyuEbDGsAzAUCUlqTrhqNo90w7bdSjFgm1bTXDM+zPV24wsFHZg0wO/x0BH7mAhE+g7QNkqxySnUYgiu88YPrr+LwjwC5YXTrS/fdchLWTuU41M8FtKHvQ1RyR2DaJQie2Ep8wBqj2Se6ymeGVFMqrErYYaOhtKNiiFVUxqbWO6kYrX0lEUmYPcHwkYm0Y32zBUKwomp6aHMkvS7o6g+RKM3Yefu3lWJQgEQ4ZXpittphxIzHdIoOLuz9lV2dXjq/G2ooEei7cj5IBkKBSy+bEtk8/KNpQwZJdGykEjlQENKegi0UCqUec4L+zX2NaizOYEQZQw2bS4BCANHKwAANcJz9dYmXg8hNg=" \ No newline at end of file From 8fb6cf802c27aaab20c592298fe50d3ee71a4248 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 13:56:56 +0200 Subject: [PATCH 34/35] More travis secure env testing --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 923f2c8f..e86ef333 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,4 +25,4 @@ env: global: - TEST=true - Derp=pls - - secure: "mxVdnW3J15VO9cEjs2DOJhstJD1hCXGVwTXHdMYkHCbcBTDeLSJnRMsPWrro/wcjFzu5DsQHQuaJXJOB+3tjfg73cx7LtoMsYcDrfCNiLXmj01AcPEdnAYCnu7xw4WCXce7CDwaOB272S6aUkbJC1zcIFehj+NAmml61Q0nNIZr63YHmO81YRaYlbXM3AK5FwUoVm7MlhiszEv9XpuuSCfjDhW33dW1JbQwWgngCffb6YS3+m2LIbvzptR4uIXPa1zadeDq/Hz5FINCsobaIuk4EbqGH4+dFQaBMKBWSWwc8goL1UChKivk1NumIY5f1XyV/eRyLEPyuEbDGsAzAUCUlqTrhqNo90w7bdSjFgm1bTXDM+zPV24wsFHZg0wO/x0BH7mAhE+g7QNkqxySnUYgiu88YPrr+LwjwC5YXTrS/fdchLWTuU41M8FtKHvQ1RyR2DaJQie2Ep8wBqj2Se6ymeGVFMqrErYYaOhtKNiiFVUxqbWO6kYrX0lEUmYPcHwkYm0Y32zBUKwomp6aHMkvS7o6g+RKM3Yefu3lWJQgEQ4ZXpittphxIzHdIoOLuz9lV2dXjq/G2ooEei7cj5IBkKBSy+bEtk8/KNpQwZJdGykEjlQENKegi0UCqUec4L+zX2NaizOYEQZQw2bS4BCANHKwAANcJz9dYmXg8hNg=" \ No newline at end of file + - secure: "Sv5RuS+OPm/ZSnI94L1/g9A3QTzLJ7EmmDU9ERA6nhMZWMklgLwMinOWQrMj+3rB/VieoEp+o2hnh5ktnhCkCkdUzVH9JE69uffkqqWfmE49yBISWaUHYSEAGewG2N2ZMyq97gXTeBpOYDeEjLTl9URB0G+o8SQDOE3Q8jhrgnmerPeg5yEnM5Y7ITkFI5u7pr6leO2J1jQxZtq7S+apxPBrvrZBtVJG/vNGzUf5M9/+IxcdJ+eIY+F/M2PwdYp1YOE0r37KgylL83eLgXfZk4m5MKe6YSiO67mdbfSQMIcwJcXcZZgR8kSYY27bPOp6KZTLhcW0JV1sznZnU5TEIQdttEFHfcoa5/qX4glFwCEbzHXRaY7sQ1vTXafEBLFp6tMlzlkiZoTuACwmmEHb7jEC3TPNE3BqxfbI+ONf5RPTB9DF4fXKocz1dqOKwEk5qcIDwTt8qLwfMaoeIcFc6F8D40SeHzgA3QMgkqhPrugFMvCdWvLxZeFPYh6AKxewZ5qxpIrDloJ2JZsEXFLXww7pAmiO2T51tApLwWlJ+dSQAYJbMEEMjkjWL34ib/HHjsrNy7vUN0Iu+oEGcL0Oz00HeM0iXaeEsqo3CLiZ5h3GqvqaBsJr3ifXCUY77FCpF05FqGEzMZdiPXo4tNugBfhZzQsWYFFEoOJ1sRKouQ8=" \ No newline at end of file From 265e3f5b2a0f5a7bb238230ea490f2376099f88b Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Sat, 14 May 2016 14:02:58 +0200 Subject: [PATCH 35/35] Attempt #376 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e86ef333..a4e12dd8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,4 +25,4 @@ env: global: - TEST=true - Derp=pls - - secure: "Sv5RuS+OPm/ZSnI94L1/g9A3QTzLJ7EmmDU9ERA6nhMZWMklgLwMinOWQrMj+3rB/VieoEp+o2hnh5ktnhCkCkdUzVH9JE69uffkqqWfmE49yBISWaUHYSEAGewG2N2ZMyq97gXTeBpOYDeEjLTl9URB0G+o8SQDOE3Q8jhrgnmerPeg5yEnM5Y7ITkFI5u7pr6leO2J1jQxZtq7S+apxPBrvrZBtVJG/vNGzUf5M9/+IxcdJ+eIY+F/M2PwdYp1YOE0r37KgylL83eLgXfZk4m5MKe6YSiO67mdbfSQMIcwJcXcZZgR8kSYY27bPOp6KZTLhcW0JV1sznZnU5TEIQdttEFHfcoa5/qX4glFwCEbzHXRaY7sQ1vTXafEBLFp6tMlzlkiZoTuACwmmEHb7jEC3TPNE3BqxfbI+ONf5RPTB9DF4fXKocz1dqOKwEk5qcIDwTt8qLwfMaoeIcFc6F8D40SeHzgA3QMgkqhPrugFMvCdWvLxZeFPYh6AKxewZ5qxpIrDloJ2JZsEXFLXww7pAmiO2T51tApLwWlJ+dSQAYJbMEEMjkjWL34ib/HHjsrNy7vUN0Iu+oEGcL0Oz00HeM0iXaeEsqo3CLiZ5h3GqvqaBsJr3ifXCUY77FCpF05FqGEzMZdiPXo4tNugBfhZzQsWYFFEoOJ1sRKouQ8=" \ No newline at end of file + - secure: "BbBbIa8BUgp8iUqd2AG8B59iZKN5+ppIqpUmYJ2tPR/r95m6yNBqlq3LidocfUVvTr1IrN8hJGApE62h3grc6cVZz4oB9++615CHdn8jCAf4KN7IP8sr91LDzGJaCyY5lOee61eTkPdSaSmRcxXN2J6W2OCwy7+9NEhtGY7uzGNdab4ofMgIzwzCRSEreA7PokafjQEzH8l8IxrmluTydubuX8ByuoIA5md4zNGyWTi1XqGpw0c9dG/cAPr8okNpIu9iHccNszy7ZAssPbNQ7pne6mhie+4SX8Th8xT9fur8Iev0t6MyipETyQ8owSjb9q79OECqXX+YNuMvFmhAFXoa2MGJNime9ukLbuOSmKVGEQcZoK2DT5vpAudFR2rUndXxtwK3NkjKO40KHqzV/xcsEP/TpHBIk7gTjTDurQQBiJ0Vjpju4UNK9Cgi84qvqXFYbcNmZEASJhIv6rmpSrlgdSKl6SzhAWTMCXciIv+9vrY/hn/suIZCVdSePLL5DsfdjIuWWQgbAWevFkZlZia/f09qyXMH22tz7Y7bhAXt03VQax/Nwf1brynn+q/dvkBWeidwOUD+JYeNZcCsCLqB9rcr6+hyHBAHcpMp4E5FzR0bfPzNzeVdUXz+4aaGe1M/8yBMJfm/OJEwlLWVOlfYP8FazYlEDYzFWvVBFkE=" \ No newline at end of file