From 8a2edbe5f0d6d54eefb7f706976d298f787e387f Mon Sep 17 00:00:00 2001 From: Yevhen Kulinichenko Date: Wed, 11 May 2016 20:19:22 +0300 Subject: [PATCH 1/7] fixed unpacking when package is built into asar --- index.js | 47 +++++++++++++++++++++++++++++++++++------------ zip/bzip2.dll | Bin 0 -> 69120 bytes 2 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 zip/bzip2.dll diff --git a/index.js b/index.js index 90aa17e..8539375 100644 --- a/index.js +++ b/index.js @@ -66,6 +66,14 @@ class PackDir { return execute(cmd, params, callback); } + execFile(file, args, params, callback) { + let execute = this.params.isSync + ? require('child_process').execFileSync + : require('child_process').execFile; + + return execute(file, args, params, callback); + } + extract(path, destination) { if (!path) { return -1; @@ -153,13 +161,20 @@ class PackDir { unzip(path, destination, callback) { let pathInfo = Path.parse(path), - pathToUnZip = isWindows - ? this.getUnZipPath() - : 'unzip', - extractTo = this.escapeArg(destination || pathInfo.dir), - cmd = `${pathToUnZip} -o ${this.escapeArg(path)} -d ${extractTo}`; - - this.exec(cmd, unset, callback || unset); + extractTo = this.escapeArg(destination || pathInfo.dir); + + if (isWindows) { + let args = [ + '-o', + this.escapeArg(path), + '-d', + extractTo + ]; + this.execFile(this.getUnZipPath(), args, unset, callback || unset); + } else { + let cmd = `unzip -o ${this.escapeArg(path)} -d ${extractTo}`; + this.exec(cmd, unset, callback || unset); + } return extractTo; } @@ -173,11 +188,7 @@ class PackDir { ? pathInfo.base + Path.sep + '*' : pathInfo.base ), - pathToZip = isWindows - ? this.getZipPath() - : 'zip', pathToZipFile = this.escapeArg(pathInfo.base + '.zip'), - cmd = `${pathToZip} -r ${pathToZipFile} ${pathWithMask}`, params = {}; if (pathInfo.dir) { @@ -185,7 +196,19 @@ class PackDir { } this.cleanFile(fileName); - this.exec(cmd, params, callback || unset); + + if (isWindows) { + let args = [ + '-r', + pathToZipFile, + pathWithMask + ]; + this.execFile(this.getZipPath(), args, params, callback || unset); + } else { + let cmd = `zip -r ${pathToZipFile} ${pathWithMask}` + this.exec(cmd, params, callback || unset); + } + this.log(`ZIP archive created: "${fileName}"`); return fileName; diff --git a/zip/bzip2.dll b/zip/bzip2.dll new file mode 100644 index 0000000000000000000000000000000000000000..174fd06c2cfedd72ccf94f68b233dfa6c7d1ab62 GIT binary patch literal 69120 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 Date: Wed, 11 May 2016 22:34:43 +0300 Subject: [PATCH 2/7] Update execFile usage, tests, escaping changed for Windows --- index.js | 44 ++++++++++++++++++++++++++++---------------- tests/index.test.js | 17 ++++++++++++++++- 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/index.js b/index.js index 8539375..ad654c1 100644 --- a/index.js +++ b/index.js @@ -53,6 +53,14 @@ class PackDir { } escapeArg(arg) { + if (isWindows) { + return '"' + + arg + .trim() + .replace(/(["])/g, '\\$1') + + '"'; + } + return arg .trim() .replace(/(["\s'$`\\])/g, '\\$1'); @@ -161,18 +169,20 @@ class PackDir { unzip(path, destination, callback) { let pathInfo = Path.parse(path), - extractTo = this.escapeArg(destination || pathInfo.dir); - - if (isWindows) { - let args = [ + extractWhat = this.escapeArg(path), + extractTo = this.escapeArg(destination || pathInfo.dir), + args = [ '-o', - this.escapeArg(path), + extractWhat, '-d', extractTo - ]; + ]; + + if (isWindows) { + // With Electron + ASAR, we can only use `execFile()` this.execFile(this.getUnZipPath(), args, unset, callback || unset); } else { - let cmd = `unzip -o ${this.escapeArg(path)} -d ${extractTo}`; + let cmd = 'unzip ' + args.join(' '); this.exec(cmd, unset, callback || unset); } @@ -185,8 +195,8 @@ class PackDir { pathStat = FS.statSync(path), pathWithMask = this.escapeArg( pathStat.isDirectory() - ? pathInfo.base + Path.sep + '*' - : pathInfo.base + ? pathInfo.base + Path.sep + '*' + : pathInfo.base ), pathToZipFile = this.escapeArg(pathInfo.base + '.zip'), params = {}; @@ -197,16 +207,18 @@ class PackDir { this.cleanFile(fileName); + let args = [ + '-r', + pathToZipFile, + pathWithMask + ]; + if (isWindows) { - let args = [ - '-r', - pathToZipFile, - pathWithMask - ]; + // With Electron + ASAR, we can only use `execFile()` this.execFile(this.getZipPath(), args, params, callback || unset); } else { - let cmd = `zip -r ${pathToZipFile} ${pathWithMask}` - this.exec(cmd, params, callback || unset); + let cmd = 'zip ' + args.join(' '); + this.exec(cmd, params, callback || unset); } this.log(`ZIP archive created: "${fileName}"`); diff --git a/tests/index.test.js b/tests/index.test.js index 5edcb13..35ba1a0 100644 --- a/tests/index.test.js +++ b/tests/index.test.js @@ -2,6 +2,7 @@ const fs = require('fs'); const isOSX = (process.platform === 'darwin'), + isWindows = (process.platform === 'win32'), TEST_PATH = 'tests', TEST_DIR_PATH = TEST_PATH + '/test dir', TEST_EXTRACT_PATH = TEST_PATH + '/test-extract', @@ -58,6 +59,16 @@ describe('Pack Dir', () => { expect(Pack.exec(cmd) instanceof require('events')).toBe(true); }); + it('executed file sync/async', () => { + let cmd = 'echo'; + + Pack.param('isSync', true); + expect(Pack.execFile(cmd) instanceof Buffer).toBe(true); + + Pack.param('isSync', false); + expect(Pack.execFile(cmd) instanceof require('events')).toBe(true); + }); + it('logs are silent when off', () => { Pack.param('isSilent', true); expect(Pack.log('Something silent.')).toBe(false); @@ -105,7 +116,11 @@ describe('Pack Dir', () => { }); it('escapes args/paths', () => { - expect(Pack.escapeArg(TEST_PATH)).toEqual(TEST_PATH.replace(' ', '\\ ')); + if (isWindows) { + expect(Pack.escapeArg(TEST_PATH)).toEqual('"' + TEST_PATH.replace('"', '\\"') + '"'); + } else { + expect(Pack.escapeArg(TEST_PATH)).toEqual(TEST_PATH.replace(' ', '\\ ')); + } }); // Cleanup From fd4b7c5cf52914881cbeab74713734af1c4e14b5 Mon Sep 17 00:00:00 2001 From: Zork Date: Wed, 11 May 2016 22:37:47 +0300 Subject: [PATCH 3/7] bzip2.dll from gnuwin32 --- zip/bzip2.dll | Bin 69120 -> 69120 bytes 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 zip/bzip2.dll diff --git a/zip/bzip2.dll b/zip/bzip2.dll old mode 100644 new mode 100755 index 174fd06c2cfedd72ccf94f68b233dfa6c7d1ab62..817491218fbce1951b71ec021655b9a474ec32db GIT binary patch delta 294 zcmZpe!_qK^WkLtDqWi~*-M&m8E={~;#AKm3QBioaBBMVekh!^tDRD33k)c_7`HQWG5%);08sKt;{X5v delta 238 zcmZpe!_qK^WkLrt$M#1PyM39aubz0zi0O~QL`C7vij4k@K<4Hmro_FBJ2zk1Z=e8D zwwe9GUv>~ z`RVzg+`gEN a@hT&u!S<~jj6RH$FEH6`XXIl1&kO*tmqdyH From e3aa169ec8e36cad69a0af098fb2dfc54670dd71 Mon Sep 17 00:00:00 2001 From: Zork Date: Wed, 11 May 2016 23:56:46 +0300 Subject: [PATCH 4/7] Fix Jest version to run tests on VM (https://github.com/facebook/jest/issues/980) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2754868..30d1c4b 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ }, "dependencies": {}, "devDependencies": { - "jest-cli": "^12.0.2" + "jest-cli": "^12.0.3 || 11.0.2" }, "author": { "name": "Dmytro", From 0920ab0e518c59eee419a1c10befb2556b45d4a4 Mon Sep 17 00:00:00 2001 From: Dmytro Date: Wed, 11 May 2016 15:15:09 -0700 Subject: [PATCH 5/7] Fix Windows path escaping --- index.js | 22 ++++++++++------------ tests/index.test.js | 9 +++++---- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/index.js b/index.js index ad654c1..b6ead31 100644 --- a/index.js +++ b/index.js @@ -54,11 +54,9 @@ class PackDir { escapeArg(arg) { if (isWindows) { - return '"' - + arg + return arg .trim() - .replace(/(["])/g, '\\$1') - + '"'; + .replace(' ' , '\ '); } return arg @@ -119,7 +117,7 @@ class PackDir { } } catch (e) { - console.error(`Error while packaging "${path}": ${e.message}.`); + console.error(`Error while packaging "${path}":\n${e.message.trim()}`); } return false; @@ -193,14 +191,14 @@ class PackDir { let fileName = path + this.ZIP, pathInfo = Path.parse(path), pathStat = FS.statSync(path), - pathWithMask = this.escapeArg( + pathWithMask = ( pathStat.isDirectory() - ? pathInfo.base + Path.sep + '*' - : pathInfo.base + ? (pathInfo.base + Path.sep + '*') + : pathInfo.base ), - pathToZipFile = this.escapeArg(pathInfo.base + '.zip'), + pathToZipFile = pathInfo.base + '.zip', params = {}; - + if (pathInfo.dir) { params.cwd = pathInfo.dir; } @@ -209,8 +207,8 @@ class PackDir { let args = [ '-r', - pathToZipFile, - pathWithMask + this.escapeArg(pathToZipFile), + this.escapeArg(pathWithMask) ]; if (isWindows) { diff --git a/tests/index.test.js b/tests/index.test.js index 35ba1a0..8f03835 100644 --- a/tests/index.test.js +++ b/tests/index.test.js @@ -50,7 +50,7 @@ describe('Pack Dir', () => { }); it('executed sync/async', () => { - let cmd = 'echo test'; + let cmd = 'node -v'; Pack.param('isSync', true); expect(Pack.exec(cmd) instanceof Buffer).toBe(true); @@ -60,13 +60,14 @@ describe('Pack Dir', () => { }); it('executed file sync/async', () => { - let cmd = 'echo'; + let cmd = 'node', + args = ['-v']; Pack.param('isSync', true); expect(Pack.execFile(cmd) instanceof Buffer).toBe(true); Pack.param('isSync', false); - expect(Pack.execFile(cmd) instanceof require('events')).toBe(true); + expect(Pack.execFile(cmd, args) instanceof require('events')).toBe(true); }); it('logs are silent when off', () => { @@ -117,7 +118,7 @@ describe('Pack Dir', () => { it('escapes args/paths', () => { if (isWindows) { - expect(Pack.escapeArg(TEST_PATH)).toEqual('"' + TEST_PATH.replace('"', '\\"') + '"'); + expect(Pack.escapeArg(TEST_PATH)).toEqual(TEST_PATH.replace(' ' , '\ ')); } else { expect(Pack.escapeArg(TEST_PATH)).toEqual(TEST_PATH.replace(' ', '\\ ')); } From 37f34559c132819329462f5cdc78593a4c608fc8 Mon Sep 17 00:00:00 2001 From: Dmytro Date: Wed, 11 May 2016 15:18:51 -0700 Subject: [PATCH 6/7] Comments update [ci skip] --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index b6ead31..07d82a1 100644 --- a/index.js +++ b/index.js @@ -177,7 +177,7 @@ class PackDir { ]; if (isWindows) { - // With Electron + ASAR, we can only use `execFile()` + // Within Electron + ASAR, we can only use `execFile()` for bundled zip.exe this.execFile(this.getUnZipPath(), args, unset, callback || unset); } else { let cmd = 'unzip ' + args.join(' '); @@ -212,7 +212,7 @@ class PackDir { ]; if (isWindows) { - // With Electron + ASAR, we can only use `execFile()` + // Within Electron + ASAR, we can only use `execFile()` for bundled zip.exe this.execFile(this.getZipPath(), args, params, callback || unset); } else { let cmd = 'zip ' + args.join(' '); From 206eaf7f9b354150c738146fc2c564617c084796 Mon Sep 17 00:00:00 2001 From: Dmytro Date: Wed, 11 May 2016 15:21:05 -0700 Subject: [PATCH 7/7] Tests update --- tests/index.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/index.test.js b/tests/index.test.js index 8f03835..2034cad 100644 --- a/tests/index.test.js +++ b/tests/index.test.js @@ -1,5 +1,7 @@ 'use strict'; +jest.autoMockOff(); + const fs = require('fs'); const isOSX = (process.platform === 'darwin'), isWindows = (process.platform === 'win32'), @@ -9,8 +11,6 @@ const isOSX = (process.platform === 'darwin'), TEST_OSX_PATH = TEST_PATH + '/test-osx', TEST_OSX_REG = /osx/; -jest.autoMockOff(); - describe('Pack Dir', () => { let Pack;