diff --git a/CHANGELOG.md b/CHANGELOG.md index b3d69a4b9..9a68b5b8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## v0.13.2 [(2016-06-09)](https://github.com/nodegit/nodegit/releases/tag/v0.13.2) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.13.1...v0.13.2) + +- Stop `RevWalk#walk` from swallowing errors in the callback [PR #1047](https://github.com/nodegit/nodegit/pull/1047) +- Stop swallowing errors in the install script [PR #1048](https://github.com/nodegit/nodegit/pull/1048) +- Fix initializing submodules when installing from npm [PR #1050](https://github.com/nodegit/nodegit/pull/1050) + ## v0.13.1 [(2016-06-03)](https://github.com/nodegit/nodegit/releases/tag/v0.13.1) [Full Changelog](https://github.com/nodegit/nodegit/compare/v0.13.0...v0.13.1) diff --git a/README.md b/README.md index d7047dac6..c46b32758 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ NodeGit -**Stable: 0.13.1** +**Stable: 0.13.2** ## Have a problem? Come chat with us! ## diff --git a/lib/revwalk.js b/lib/revwalk.js index d754259c6..36d60a034 100644 --- a/lib/revwalk.js +++ b/lib/revwalk.js @@ -37,7 +37,7 @@ Revwalk.prototype.walk = function(oid, callback) { this.push(oid); function walk() { - revwalk.next().then(function(oid) { + revwalk.next().done(function(oid) { if (!oid) { if (typeof callback === "function") { return callback(); diff --git a/lifecycleScripts/install.js b/lifecycleScripts/install.js index c9d911bd1..cde01665f 100644 --- a/lifecycleScripts/install.js +++ b/lifecycleScripts/install.js @@ -4,37 +4,38 @@ var cp = require("child_process"); var prepareForBuild = require("./prepareForBuild"); var exec = require("../utils/execPromise"); -var fromRegistry; - -try { - fs.statSync(path.join(__dirname, "..", "include")); - fs.statSync(path.join(__dirname, "..", "src")); - fs.statSync(path.join(__dirname, "..", "dist")); - fromRegistry = true; -} -catch(e) { - fromRegistry = false; -} +module.exports = function install() { + var fromRegistry; + + try { + fs.statSync(path.join(__dirname, "..", "include")); + fs.statSync(path.join(__dirname, "..", "src")); + fs.statSync(path.join(__dirname, "..", "dist")); + fromRegistry = true; + } + catch(e) { + fromRegistry = false; + } -if (!fromRegistry) { - console.info("[nodegit] Local install, no fetching allowed."); - return prepareAndBuild(); -} -if (process.env.BUILD_DEBUG) { - console.info("[nodegit] Doing a debug build, no fetching allowed."); - return prepareAndBuild(); -} -if (process.env.BUILD_ONLY) { - console.info("[nodegit] BUILD_ONLY is set to true, no fetching allowed."); - return prepareAndBuild(); -} + if (!fromRegistry) { + console.info("[nodegit] Local install, no fetching allowed."); + return prepareAndBuild(); + } + if (process.env.BUILD_DEBUG) { + console.info("[nodegit] Doing a debug build, no fetching allowed."); + return prepareAndBuild(); + } + if (process.env.BUILD_ONLY) { + console.info("[nodegit] BUILD_ONLY is set to true, no fetching allowed."); + return prepareAndBuild(); + } -return installPrebuilt(); + return installPrebuilt(); -function installPrebuilt() { - console.info("[nodegit] Fetching binary from S3."); - var npg = pathForTool("node-pre-gyp"); - return exec("\""+ npg + "\" install --fallback-to-build=false") + function installPrebuilt() { + console.info("[nodegit] Fetching binary from S3."); + var npg = pathForTool("node-pre-gyp"); + return exec("\""+ npg + "\" install --fallback-to-build=false") .then( function() { console.info("[nodegit] Completed installation successfully."); @@ -46,130 +47,141 @@ function installPrebuilt() { return prepareAndBuild(); } ); -} + } -function pathForTool(name) { - var toolPath = path.resolve(".", "node_modules", ".bin", name); - if (process.platform == "win32") { - toolPath += ".cmd"; + function pathForTool(name) { + var toolPath = path.resolve(".", "node_modules", ".bin", name); + if (process.platform == "win32") { + toolPath += ".cmd"; + } + return toolPath; } - return toolPath; -} -function prepareAndBuild() { - console.info("[nodegit] Regenerating and configuring code"); - return prepareForBuild() + function prepareAndBuild() { + console.info("[nodegit] Regenerating and configuring code"); + return prepareForBuild() .then(function() { return build(); }) .then(function() { return transpileJavascript(); }); -} + } -function transpileJavascript() { - var cmd = pathForTool("babel"); - var args = [ - "--presets", - "es2015", - "-d", - "./dist", - "./lib" - ]; - var opts = { - cwd: ".", - maxBuffer: Number.MAX_VALUE, - env: process.env, - stdio: "inherit" - }; - var home = process.platform == "win32" ? - process.env.USERPROFILE : process.env.HOME; - - opts.env.HOME = path.join(home, ".nodegit-gyp"); - - return new Promise(function(resolve, reject) { - var child = cp.spawn(cmd, args, opts); - child.on("close", function(code) { - if (code) { - reject(code); - process.exitCode = 13; - } - else { - resolve(); - } + function transpileJavascript() { + var cmd = pathForTool("babel"); + var args = [ + "--presets", + "es2015", + "-d", + "./dist", + "./lib" + ]; + var opts = { + cwd: ".", + maxBuffer: Number.MAX_VALUE, + env: process.env, + stdio: "inherit" + }; + var home = process.platform == "win32" ? + process.env.USERPROFILE : process.env.HOME; + + opts.env.HOME = path.join(home, ".nodegit-gyp"); + + return new Promise(function(resolve, reject) { + var child = cp.spawn(cmd, args, opts); + child.on("close", function(code) { + if (code) { + reject(code); + process.exitCode = 13; + } + else { + resolve(); + } + }); }); - }); -} - -function build() { - console.info("[nodegit] Everything is ready to go, attempting compilation"); - - var electronVersion = process.env.ELECTRON_VERSION; - var nwjsVersion = process.env.NWJS_VERSION; - var opts = { - cwd: ".", - maxBuffer: Number.MAX_VALUE, - env: process.env, - stdio: "inherit" - }; - - var builder = "node-gyp"; - var debug = (process.env.BUILD_DEBUG ? "--debug" : ""); - var target = ""; - var arch = (process.env.TARGET_ARCH ? - "--arch=" + process.env.TARGET_ARCH : ""); - var distUrl = ""; - var runtime = ""; - - process.argv.forEach(function(arg) { - if (~arg.indexOf("electronVersion")) { - electronVersion = arg.split("=")[1].trim(); - } - else if (~arg.indexOf("nsjwVersion")) { - nwjsVersion = arg.split("=")[1].trim(); - } - }); - - if (electronVersion) { - target = "--target=" + electronVersion; - distUrl = "--dist-url=https://atom.io/download/atom-shell"; - runtime = "--runtime=electron"; - } - else if (nwjsVersion) { - builder = "nw-gyp"; - target = "--target=" + nwjsVersion; - runtime = "--runtime=node-webkit"; } - var home = process.platform == "win32" ? - process.env.USERPROFILE : process.env.HOME; - - opts.env.HOME = path.join(home, ".nodegit-gyp"); - - var cmd = pathForTool(builder); - var args = [ - "rebuild", - debug, - target, - arch, - distUrl, - runtime - ] - .filter(function(arg) { - return arg; - }); - - return new Promise(function(resolve, reject) { - var child = cp.spawn(cmd, args, opts); - child.on("close", function(code) { - console.log(code); - if (code) { - reject(code); - process.exitCode = 13; + function build() { + console.info("[nodegit] Everything is ready to go, attempting compilation"); + + var electronVersion = process.env.ELECTRON_VERSION; + var nwjsVersion = process.env.NWJS_VERSION; + var opts = { + cwd: ".", + maxBuffer: Number.MAX_VALUE, + env: process.env, + stdio: "inherit" + }; + + var builder = "node-gyp"; + var debug = (process.env.BUILD_DEBUG ? "--debug" : ""); + var target = ""; + var arch = (process.env.TARGET_ARCH ? + "--arch=" + process.env.TARGET_ARCH : ""); + var distUrl = ""; + var runtime = ""; + + process.argv.forEach(function(arg) { + if (~arg.indexOf("electronVersion")) { + electronVersion = arg.split("=")[1].trim(); + } + else if (~arg.indexOf("nsjwVersion")) { + nwjsVersion = arg.split("=")[1].trim(); + } + }); + + if (electronVersion) { + target = "--target=" + electronVersion; + distUrl = "--dist-url=https://atom.io/download/atom-shell"; + runtime = "--runtime=electron"; } - else { - resolve(); + else if (nwjsVersion) { + builder = "nw-gyp"; + target = "--target=" + nwjsVersion; + runtime = "--runtime=node-webkit"; } + + var home = process.platform == "win32" ? + process.env.USERPROFILE : process.env.HOME; + + opts.env.HOME = path.join(home, ".nodegit-gyp"); + + var cmd = pathForTool(builder); + var args = [ + "rebuild", + debug, + target, + arch, + distUrl, + runtime + ] + .filter(function(arg) { + return arg; + }); + + return new Promise(function(resolve, reject) { + var child = cp.spawn(cmd, args, opts); + child.on("close", function(code) { + console.log(code); + if (code) { + reject(code); + process.exitCode = 13; + } + else { + resolve(); + } + }); + }); + } +}; + +// Called on the command line +if (require.main === module) { + module + .exports() + .catch(function(err) { + console.error(err); + return -1; }); - }); } diff --git a/lifecycleScripts/submodules/getStatus.js b/lifecycleScripts/submodules/getStatus.js index 53c85c1f3..2fcc42d37 100644 --- a/lifecycleScripts/submodules/getStatus.js +++ b/lifecycleScripts/submodules/getStatus.js @@ -40,5 +40,11 @@ module.exports = function getStatus() { .split("\n") .map(getStatusPromiseFromLine) ); + }) + .catch(function() { + // In the case that NodeGit is required from another project via npm we + // won't be able to run submodule commands but that's ok since the + // correct version of libgit2 is published with nodegit. + return Promise.resolve([]); }); }; diff --git a/package.json b/package.json index 1dc406e66..e5d431d25 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "nodegit", "description": "Node.js libgit2 asynchronous native bindings", - "version": "0.13.1", + "version": "0.13.2", "homepage": "http://nodegit.org", "keywords": [ "libgit2",