From 02c2f8172a3456bfae1a560ba4c9ee48673a60dc Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 13 Jul 2015 01:23:14 +0100 Subject: Use spawn instead of exec-sync for cake package exec-sync fails to build for some environments and architectures (including mine). As spawn is already necessary for building, we know it will be available, and so can use that via a callback chain to run the packaging tasks. --- Cakefile | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/Cakefile b/Cakefile index ffd8308b..514c67e1 100644 --- a/Cakefile +++ b/Cakefile @@ -15,6 +15,14 @@ spawn = (procName, optArray, silent=false) -> proc.stderr.on 'data', (data) -> process.stderr.write data proc +spawnMultiple = (spawnDetailsArray, callback) -> + return callback?() if spawnDetailsArray.length == 0 + {procName, optArray, silent} = spawnDetailsArray.shift() + process = spawn procName, optArray, silent + process.on 'exit', (returnCode) -> + if returnCode == 0 + spawnMultiple spawnDetailsArray, callback + optArrayFromDict = (opts) -> result = [] for key, value of opts @@ -56,24 +64,22 @@ task "autobuild", "continually rebuild coffeescript files using coffee --watch", coffee = spawn "coffee", ["-cw", __dirname] task "package", "Builds a zip file for submission to the Chrome store. The output is in dist/", -> - # To get exec-sync, `npm install exec-sync`. We use this for synchronously executing shell commands. - execSync = require("exec-sync") - vimium_version = JSON.parse(fs.readFileSync("manifest.json").toString())["version"] invoke "build" - execSync "rm -rf dist/vimium" - execSync "mkdir -p dist/vimium" - blacklist = [".*", "*.coffee", "*.md", "reference", "test_harnesses", "tests", "dist", "git_hooks", "CREDITS", "node_modules", "MIT-LICENSE.txt", "Cakefile"] rsyncOptions = [].concat.apply( ["-r", ".", "dist/vimium"], - blacklist.map((item) -> ["--exclude", "'#{item}'"])) - - execSync "rsync " + rsyncOptions.join(" ") - execSync "cd dist && zip -r vimium-#{vimium_version}.zip vimium" + blacklist.map((item) -> ["--exclude", "#{item}"])) + + spawnMultiple [ + {procName: "rm", optArray: ["-rf", "dist/vimium"]}, + {procName: "mkdir", optArray: ["-p", "dist/vimium"]}, + {procName: "rsync", optArray: rsyncOptions}, + {procName: "zip", optArray: ["-r", "dist/vimium-#{vimium_version}.zip", "dist/vimium"]} + ] # This builds a CRX that's distributable outside of the Chrome web store. Is this used by folks who fork # Vimium and want to distribute their fork? -- cgit v1.2.3 From 718c883abc489d4602f7cf95e059997c50ee72fd Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Thu, 13 Aug 2015 21:57:08 +0100 Subject: Use spawnSync rather than spawn to provide synchronous processes --- Cakefile | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/Cakefile b/Cakefile index 514c67e1..f9744858 100644 --- a/Cakefile +++ b/Cakefile @@ -3,16 +3,21 @@ fs = require "fs" path = require "path" child_process = require "child_process" -spawn = (procName, optArray, silent=false) -> +spawn = (procName, optArray, silent = false, sync = false) -> if process.platform is "win32" # if win32, prefix arguments with "/c {original command}" # e.g. "coffee -c c:\git\vimium" becomes "cmd.exe /c coffee -c c:\git\vimium" optArray.unshift "/c", procName procName = "cmd.exe" - proc = child_process.spawn procName, optArray - unless silent - proc.stdout.on 'data', (data) -> process.stdout.write data - proc.stderr.on 'data', (data) -> process.stderr.write data + if sync + proc = child_process.spawnSync procName, optArray, { + stdio: [undefined, process.stdout, process.stderr] + } + else + proc = child_process.spawn procName, optArray + unless silent + proc.stdout.on 'data', (data) -> process.stdout.write data + proc.stderr.on 'data', (data) -> process.stderr.write data proc spawnMultiple = (spawnDetailsArray, callback) -> @@ -74,12 +79,10 @@ task "package", "Builds a zip file for submission to the Chrome store. The outpu ["-r", ".", "dist/vimium"], blacklist.map((item) -> ["--exclude", "#{item}"])) - spawnMultiple [ - {procName: "rm", optArray: ["-rf", "dist/vimium"]}, - {procName: "mkdir", optArray: ["-p", "dist/vimium"]}, - {procName: "rsync", optArray: rsyncOptions}, - {procName: "zip", optArray: ["-r", "dist/vimium-#{vimium_version}.zip", "dist/vimium"]} - ] + spawn "rm", ["-rf", "dist/vimium"], false, true + spawn "mkdir", ["-p", "dist/vimium"], false, true + spawn "rsync", rsyncOptions, false, true + spawn "zip", ["-r", "dist/vimium-#{vimium_version}.zip", "dist/vimium"], false, true # This builds a CRX that's distributable outside of the Chrome web store. Is this used by folks who fork # Vimium and want to distribute their fork? -- cgit v1.2.3 From 2f990121abbb403d7c7e0304cf629b84ea0dde59 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Thu, 13 Aug 2015 21:59:34 +0100 Subject: Remove an unused function, restructure to be like the execSync code --- Cakefile | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Cakefile b/Cakefile index f9744858..63c544c1 100644 --- a/Cakefile +++ b/Cakefile @@ -20,14 +20,6 @@ spawn = (procName, optArray, silent = false, sync = false) -> proc.stderr.on 'data', (data) -> process.stderr.write data proc -spawnMultiple = (spawnDetailsArray, callback) -> - return callback?() if spawnDetailsArray.length == 0 - {procName, optArray, silent} = spawnDetailsArray.shift() - process = spawn procName, optArray, silent - process.on 'exit', (returnCode) -> - if returnCode == 0 - spawnMultiple spawnDetailsArray, callback - optArrayFromDict = (opts) -> result = [] for key, value of opts @@ -73,14 +65,15 @@ task "package", "Builds a zip file for submission to the Chrome store. The outpu invoke "build" + spawn "rm", ["-rf", "dist/vimium"], false, true + spawn "mkdir", ["-p", "dist/vimium"], false, true + blacklist = [".*", "*.coffee", "*.md", "reference", "test_harnesses", "tests", "dist", "git_hooks", "CREDITS", "node_modules", "MIT-LICENSE.txt", "Cakefile"] rsyncOptions = [].concat.apply( ["-r", ".", "dist/vimium"], blacklist.map((item) -> ["--exclude", "#{item}"])) - spawn "rm", ["-rf", "dist/vimium"], false, true - spawn "mkdir", ["-p", "dist/vimium"], false, true spawn "rsync", rsyncOptions, false, true spawn "zip", ["-r", "dist/vimium-#{vimium_version}.zip", "dist/vimium"], false, true -- cgit v1.2.3