From 1882a99b5f2ea4bd1ef984671f1501cae9df6d4c Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Wed, 14 Jan 2015 11:44:16 -0700 Subject: [PATCH 01/16] remove prepublish step --- package.json | 1 - prepublish.js | 8 -------- 2 files changed, 9 deletions(-) delete mode 100644 prepublish.js diff --git a/package.json b/package.json index 66dec164d..cc8f210bd 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,6 @@ "generateJson": "node generate/scripts/generateJson", "generateNativeCode": "node generate/scripts/generateNativeCode", "generateMissingTests": "node generate/scripts/generateMissingTests", - "prepublish": "node prepublish", "publish": "node-pre-gyp package && node-pre-gyp publish", "install": "node install", "recompile": "BUILD_ONLY=true npm install", diff --git a/prepublish.js b/prepublish.js deleted file mode 100644 index 7fddbecdd..000000000 --- a/prepublish.js +++ /dev/null @@ -1,8 +0,0 @@ -var exec = require('child_process').exec; -try { - require("./build/Release/nodegit"); - console.info("[nodegit] Nothing to do.") -} -catch (e) { - exec("node generate"); -} From 37e2e497819e1ba35dc606545b6c987be76dfd9b Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Wed, 14 Jan 2015 11:45:06 -0700 Subject: [PATCH 02/16] change generation scripts to work from command line but return function via require --- generate/index.js | 16 +++++++++-- generate/scripts/generateJson.js | 16 +++++++---- generate/scripts/generateMissingTests.js | 17 +++++------ generate/scripts/generateNativeCode.js | 36 +++++++++++++----------- 4 files changed, 53 insertions(+), 32 deletions(-) diff --git a/generate/index.js b/generate/index.js index 9eea74ecf..5ca590172 100644 --- a/generate/index.js +++ b/generate/index.js @@ -1,3 +1,13 @@ -require("./scripts/generateJson"); -require("./scripts/generateNativeCode"); -require("./scripts/generateMissingTests"); +var generateJson = require("./scripts/generateJson"); +var generateNativeCode = require("./scripts/generateNativeCode"); +var generateMissingTests = require("./scripts/generateMissingTests"); + +module.exports = function generate() { + generateJson(); + generateNativeCode(); + generateMissingTests(); +} + +if (require.main === module) { + module.exports(); +} diff --git a/generate/scripts/generateJson.js b/generate/scripts/generateJson.js index 35430bff4..4ef0b75dd 100644 --- a/generate/scripts/generateJson.js +++ b/generate/scripts/generateJson.js @@ -1,15 +1,17 @@ const fs = require("fs"); const path = require("path"); -const helpers = require("./helpers"); const utils = require("./utils"); -const _ = require("lodash"); +var _; var version = require("../../package.json").libgit2.version; var libgit2 = require("../input/v" + version + ".json"); var descriptor = require("../input/descriptor.json"); - var supplement = require("../input/libgit2-supplement.json"); +var supplement = require("../input/libgit2-supplement.json"); + +module.exports = function generateJson() { + var helpers = require("./helpers"); + _ = require("lodash"); -module.exports = (function generateJson() { libgit2.types.forEach(function(type) { if (supplement.types[type[0]]){ _.merge(type[1], supplement.types[type[0]]); @@ -219,4 +221,8 @@ module.exports = (function generateJson() { utils.writeFile("output/idefs.json", output); -}()); +}; + +if (require.main === module) { + module.exports(); +} diff --git a/generate/scripts/generateMissingTests.js b/generate/scripts/generateMissingTests.js index 1b6c7aae2..0a89c7bd8 100644 --- a/generate/scripts/generateMissingTests.js +++ b/generate/scripts/generateMissingTests.js @@ -5,10 +5,9 @@ const fse = promisify(require("fs-extra")); const utils = require("./utils"); const testFilesPath = "../test/tests"; -const idefs = require("../output/idefs"); const missingFileIgnores = require("../input/ignored-missing-tests"); -module.exports = (function generateMissingTests() { +module.exports = function generateMissingTests() { var output = {}; function findMissingTest(idef) { @@ -55,10 +54,9 @@ module.exports = (function generateMissingTests() { }); }; - var promises = []; - - idefs.forEach(function(idef) { - promises.push(findMissingTest(idef)); + const idefs = require("../output/idefs"); + var promises = idefs.map(function(idef) { + return findMissingTest(idef); }); Promise.all(promises).then( @@ -66,9 +64,12 @@ module.exports = (function generateMissingTests() { utils.writeFile("output/missing-tests.json", output); }, function(fail) { - console.log(fail); + console.error(fail); } ); -}()); +}; +if (require.main === module) { + module.exports(); +} diff --git a/generate/scripts/generateNativeCode.js b/generate/scripts/generateNativeCode.js index c277e0e9f..0944ffca5 100644 --- a/generate/scripts/generateNativeCode.js +++ b/generate/scripts/generateNativeCode.js @@ -1,26 +1,25 @@ const path = require("path"); -const combyne = require("combyne"); const promisify = require("promisify-node"); const fse = promisify(require("fs-extra")); -const js_beautify = require("js-beautify").js_beautify; -const beautify = function (input) { - return js_beautify(input, { - "brace_style": "end-expand", - "max_preserve_newlines": 2, - "preserve_newlines": true, - "indent_size": 2, - "indent_char": " " - }); -} const exec = promisify(function(command, opts, callback) { return require("child_process").exec(command, opts, callback); }); - const utils = require("./utils"); -const idefs = require("../output/idefs"); -module.exports = (function generateNativeCode() { +module.exports = function generateNativeCode() { + const combyne = require("combyne"); + const js_beautify = require("js-beautify").js_beautify; + const beautify = function (input) { + return js_beautify(input, { + "brace_style": "end-expand", + "max_preserve_newlines": 2, + "preserve_newlines": true, + "indent_size": 2, + "indent_char": " " + }); + }; + // Customize the delimiters so as to not process `{{{` or `}}}`. combyne.settings.delimiters = { START_RAW: "{{=", @@ -91,6 +90,7 @@ module.exports = (function generateNativeCode() { // Determine which definitions to actually include in the source code. // This might not be needed anymore but to be frank I'm not totally positive + const idefs = require("../output/idefs"); var enabled = idefs.filter(function(idef) { return !idef.ignore; }); @@ -119,7 +119,7 @@ module.exports = (function generateNativeCode() { } catch (e) { if (process.env.BUILD_ONLY) { - console.log(e); + console.error(e); } } }); @@ -143,4 +143,8 @@ module.exports = (function generateNativeCode() { }) }); -}()); +}; + +if (require.main === module) { + module.exports(); +} From c8cbbf24b22088567f409bbd1205d015235eb8bb Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Wed, 14 Jan 2015 11:49:11 -0700 Subject: [PATCH 03/16] allow publishing of vendors --- .npmignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.npmignore b/.npmignore index b3d2f9d9d..681059b64 100644 --- a/.npmignore +++ b/.npmignore @@ -3,9 +3,6 @@ /examples/ /generate/ /test/ -/vendor/libgit2/ -/vendor/libssh2/ -/vendor/http_parser/ /vendor/Release/ .astylerc From d5ef754d5c1d0ff4d93e3a8afd2b5032f1a85411 Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Wed, 14 Jan 2015 11:50:52 -0700 Subject: [PATCH 04/16] add some new dependencies --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index cc8f210bd..d8d44e018 100644 --- a/package.json +++ b/package.json @@ -61,9 +61,11 @@ ], "dependencies": { "find-parent-dir": "^0.3.0", + "for-node-webkit": "0.0.2", "fs-extra": "~0.14.0", "node-pre-gyp": "~0.6.1", "nodegit-promise": "~1.0.0", + "npm": "^2.1.18", "promisify-node": "~0.1.2" }, "devDependencies": { From 5764d4c38929742a69462344c7c34116b0b8cde5 Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Wed, 14 Jan 2015 11:51:50 -0700 Subject: [PATCH 05/16] overhaul the rest of the build process includes cleaning of npm registry based installs and a new debug build --- .didntcomefromthenpmregistry | 0 .npmignore | 1 + install.js | 269 ------------------ lifecycleScripts/checkPrepared.js | 57 ++++ lifecycleScripts/clean.js | 138 +++++++++ lifecycleScripts/install.js | 104 +++++++ lifecycleScripts/prepareForBuild.js | 61 ++++ .../retrieveExternalDependencies.js | 98 +++++++ package.json | 6 +- 9 files changed, 463 insertions(+), 271 deletions(-) create mode 100644 .didntcomefromthenpmregistry delete mode 100644 install.js create mode 100644 lifecycleScripts/checkPrepared.js create mode 100644 lifecycleScripts/clean.js create mode 100644 lifecycleScripts/install.js create mode 100644 lifecycleScripts/prepareForBuild.js create mode 100644 lifecycleScripts/retrieveExternalDependencies.js diff --git a/.didntcomefromthenpmregistry b/.didntcomefromthenpmregistry new file mode 100644 index 000000000..e69de29bb diff --git a/.npmignore b/.npmignore index 681059b64..50b42bb8c 100644 --- a/.npmignore +++ b/.npmignore @@ -12,6 +12,7 @@ .jshintrc .travis.yml .appveyor.yml +.didntcomefromthenpmregistry *.vcxproj *.filters diff --git a/install.js b/install.js deleted file mode 100644 index d270f9de8..000000000 --- a/install.js +++ /dev/null @@ -1,269 +0,0 @@ -var os = require("os"); -var path = require("path"); -var zlib = require("zlib"); -var tar; -var request; - -var Promise = require("nodegit-promise"); -var promisify = require("promisify-node"); -var fse = promisify(require("fs-extra")); -var findParentDir = promisify(require('find-parent-dir')); - -var exec = promisify(function(command, opts, callback) { - return require("child_process").exec(command, opts, callback); -}); - - -var NODE_VERSION = Number(process.version.match(/^v(\d+\.\d+)/)[1]); - -// If the build only flag is set. -var buildOnly = process.env.BUILD_ONLY; -var nodeWebkit = false; - -// This will take in an object and find any matching keys in the environment -// to use as overrides. -// -// ENV variables: -// -// PKG: Location of `package.json` sans `.json`. -// LIBGIT2: Location of libgit2 source. -// BUILD: Location of nodegit build directory. -function envOverride(obj) { - // Look through all keys. - return Object.keys(obj).reduce(function(obj, key) { - var normalize = key.toUpperCase(); - - // Check for process environment existence. - if (normalize in process.env) { - obj[key] = process.env[normalize]; - } - - return obj; - }, obj); -} - -// Convert to the correct system path. -function systemPath(parts) { - return parts.join(path.sep); -} - -// Will be used near the end to configure `node-gyp`. -var pythonPath = ""; - -var local = path.join.bind(path, __dirname); - -// Common reusable paths that can be overwritten by environment variables. -var paths = envOverride({ - pkg: local("package"), - libgit2: local("vendor/libgit2/"), - libssh2: local("vendor/libssh2/"), - http_parser: local("vendor/http_parser/"), - release: local("build/Release/"), -}); - -// Load the package.json. -var pkg = require(paths.pkg); - -if (NODE_VERSION === 0.1) { - pkg.http_parser = pkg.http_parser["0.10"]; -} - -// ensureDir doesn't promisify correctly so right now just use the callback -fse.ensureDir(path.resolve(__dirname, paths.release), function(err) { - if (err) { - console.log(err); - } - else { - detectNodeWebkit.call(null, __dirname) - .then(fetch) - .then(finish, compile); - } -}); - -function fetch() { - console.info("[nodegit] Fetching binary from S3."); - - if (nodeWebkit) { - throw new Error("Must build for node-webkit"); - } - - if (buildOnly) { - throw new Error("BUILD_ONLY is set to true, no fetching allowed."); - } - - // Using the node-pre-gyp module, attempt to fetch a compatible build. - return exec("node-pre-gyp install"); -} - -function compile(err) { - if (buildOnly || nodeWebkit) { - console.info("[nodegit] " + err.message); - } - else { - console.info("[nodegit] Failed to install prebuilt, attempting compile."); - } - - tar = require("tar"); - request = require("request"); - - console.info("[nodegit] Installing all devDependencies"); - return exec("npm install --ignore-scripts --dont-prepublish") - .then(function() { - console.info("[nodegit] Determining source dependencies."); - return Promise.all([ - python(), - getVendorLib("libgit2", "https://github.com/libgit2/libgit2/tarball/" + pkg.libgit2.sha), - getVendorLib("libssh2", pkg.libssh2.url), - getVendorLib("http_parser", pkg.http_parser.url), - guardGenerated() - ]); - }) - .then(buildNative) - .then(finish, fail); -} - -function python() { - var pathFinderCommand = process.platform === "win32" ? "where" : "which"; - - return exec(pathFinderCommand + " python2") - .then(function(which){ - return which; - }, function(err) { - return null; - }) - .then(function(path) { - return path || exec(pathFinderCommand + " python"); - }) - .then(function(path) { - return path; - }, function(err) { - return null; - }) - .then(function(path) { - if (!path) { - throw new Error("Python is required to build libgit2."); - } - return path.trim(); - }, function(err) { - throw new Error("Error finding python."); - }) - .then(function(path) { - pythonPath = path; - return exec(path + " -V 2>&1"); - }) - .then(function(version) { - if (version.trim().indexOf("Python 3") === 0) { - throw new Error("Incorrect version of Python, gyp requires < 3."); - } - }); -} - -function getVendorLib(name, url) { - var version = pkg[name].sha || pkg[name].version; - console.info("[nodegit] Detecting vendor/" + name + "."); - if (fse.existsSync(paths[name] + version)) { - console.info("[nodegit] vendor/" + name + " already exists."); - return Promise.resolve(); - } - else { - console.info("[nodegit] Removing outdated vendor/" + name + "."); - return fse.remove(paths[name]) - .then(function() { - return new Promise(function (resolve, reject) { - - console.info("[nodegit] Fetching vendor/" + name + "."); - - var extract = tar.Extract({ - path: paths[name], - strip: true - }); - - request.get(url).pipe(zlib.createUnzip()).pipe(extract) - .on("error", reject) - .on("end", resolve); - }); - }).then(function() { - return fse.writeFile(paths[name] + version, ""); - }).then(function() { - if ((name == "libssh2") && (process.platform !== "win32")) { - return exec(paths[name] + "configure", {cwd: paths[name]}); - } - }); - } -} - -function guardGenerated() { - return Promise.all([ - fse.stat(path.resolve(__dirname, "src/")), - fse.stat(path.resolve(__dirname, "include/")) - ]).then(function() { - return Promise.resolve(); - }, function() { - console.info("[nodegit] C++ files not found, generating now."); - return exec("node generate"); - }); -} - -function buildNative() { - return exec("cd " + __dirname).then(function() { - if (nodeWebkit) { - console.info("[nodegit] Building native node-webkit module."); - } - else { - console.info("[nodegit] Building native node module."); - } - - var builder = nodeWebkit ? "nw-gyp" : "node-gyp"; - - var cmd = path.resolve(".", "node_modules", ".bin", builder) - + " clean configure " - + (nodeWebkit ? "--target=\"" + nodeWebkit + "\"": "") - + " build --python \"" + pythonPath + "\"" - - var opts = { - cwd: __dirname, - maxBuffer: Number.MAX_VALUE - }; - return exec(cmd, opts); - }) -} - -function detectNodeWebkit(directory) { - if (directory) { - var pkg = require(path.resolve(directory, "package.json")); - - nodeWebkit = pkg.engines && pkg.engines["node-webkit"]; - - return findParentDir(path.resolve(directory, ".."), "package.json") - .then(detectNodeWebkit); - } - else { - return Promise.resolve(); - } -} - -function finish() { - console.info("[nodegit] Completed installation successfully."); - if (!buildOnly) { - console.info("[nodegit] Cleaning up"); - return Promise.all([ - fse.remove(path.resolve(__dirname, "src")), - fse.remove(path.resolve(__dirname, "include")), - fse.remove(path.resolve(__dirname, "generate/output")), - fse.remove(path.resolve(__dirname, paths.libgit2)), - fse.remove(path.resolve(__dirname, paths.libssh2)), - fse.remove(path.resolve(__dirname, paths.http_parser)) - // exec("npm prune --production") - ]).done(); - } - else { - return Promise.resolve().done(); - } -} - -function fail(message) { - console.info("[nodegit] Failed to build and install nodegit."); - console.info(message.message); - - return Promise.resolve().done(); -} diff --git a/lifecycleScripts/checkPrepared.js b/lifecycleScripts/checkPrepared.js new file mode 100644 index 000000000..c616f77a9 --- /dev/null +++ b/lifecycleScripts/checkPrepared.js @@ -0,0 +1,57 @@ +var Promise = require("nodegit-promise"); +var path = require("path"); +var fs = require("fs"); +var rooted = path.join.bind(path, __dirname, ".."); +var pkg = require(rooted("package")); + +module.exports.checkAll = function checkAll() { + return Promise.all([ + checkVendor("libgit2"), + checkVendor("libssh2"), + checkVendor("http_parser"), + + checkExists("lib/nodegit.js"), + checkExists("lib/enums.js"), + checkExists("src"), + checkExists("include") + ]).then(function(checks) { + return checks.reduce(function(soFar, currentCheck) { + return soFar && currentCheck; + }, true); + }); +}; + +function checkExists(name) { + return new Promise(function(resolve, reject) { + fs.exists(rooted(name), function(exists) { + resolve(exists); + }); + }); +} +module.exports.checkExists = checkExists; + +function checkVendor(name, skipVersion) { + var version = skipVersion ? "" : (pkg[name].sha || pkg[name].version); + var vendorPath = "vendor/" + name + "/" + version; + return checkExists(vendorPath); +} +module.exports.checkVendor = checkVendor + +function checkGenerated() { + return Promise.all([ + checkExists("lib/nodegit.js"), + checkExists("lib/enums.js"), + checkExists("src"), + checkExists("include") + ]).then(function(checks) { + return checks.reduce(function(soFar, currentCheck) { + return soFar && currentCheck; + }, true); + }); +} +module.exports.checkGenerated = checkGenerated; + +// Called on the command line +if (require.main === module) { + module.exports.checkAll(); +} diff --git a/lifecycleScripts/clean.js b/lifecycleScripts/clean.js new file mode 100644 index 000000000..333cdb6ea --- /dev/null +++ b/lifecycleScripts/clean.js @@ -0,0 +1,138 @@ +var fse = require("fs-extra"); +var path = require("path"); +var cp = require("child_process"); +var npm = require("npm"); +var Promise = require("nodegit-promise"); + +var rooted = path.join.bind(path, __dirname, ".."); +if (!fse.existsSync(rooted(".didntcomefromthenpmregistry"))) { + return; +} + +npm.load({ + "production": true +}, function() { + + var filesToDelete = [ + "build/Makefile", + "build/binding.Makefile", + "build/config.gypi", + "build/gyp-mac-tool", + "build/nodegit.target.mk", + "build/vendor", + + "build/Release/git2.a", + "build/Release/http_parser.a", + "build/Release/linker.lock", + "build/Release/obj.target", + "build/Release/openssl.a", + "build/Release/ssh2.a", + "build/Release/zlib.a", + + "build/Debug/git2.a", + "build/Debug/http_parser.a", + "build/Debug/linker.lock", + "build/Debug/obj.target", + "build/Debug/openssl.a", + "build/Debug/ssh2.a", + "build/Debug/zlib.a", + + "example", + "generate", + "include", + "lifecycleScripts", + "src", + "test", + "vendor", + + ".astylerc", + ".editorconfig", + ".gitingore", + ".gitmodules", + ".jshintrc", + ".npmignore", + ".travis.yml", + "appveyor.yml", + "binding.gyp", + "TESTING.md" + ]; + + var modulesToPrune = [ + "find-parent-dir", + "for-node-webkit", + "fs-extra", + "node-pre-gyp", + "npm" + ]; + + console.info("[nodegit] Cleaning up after ourselves."); + + Promise.all([ + cleanFiles(), + pruneDevDependencies(), + pruneOtherDependencies() + ]).then( + function success() { + console.info("[nodegit] Done cleaning, enjoy!"); + }, + function failure() { + console.error("[nodegit] Couldn't finish cleaning."); + } + ); + + function cleanFiles() { + console.info("[nodegit] Deleting unneeded files."); + return new Promise(function(resolve, reject) { + var failures = filesToDelete.some(function(deletable) { + try { + fse.removeSync(rooted(deletable)); + return false + } + catch (e) { + console.info("[nodegit] Error deleting files. Errored on " + rooted(deletable)) + "."; + console.error(e); + + reject(e); + return true; + } + }); + + if (!failures) { + console.info("[nodegit] Finished deleting files."); + resolve(); + } + }); + } + + function pruneDevDependencies() { + console.info("[nodegit] Pruning devdependencies."); + return new Promise(function (resolve, reject) { + npm.commands.prune(function(err) { + if (err) { + console.error("[nodegit] Failed pruning devdependencies."); + reject(err); + } + else { + console.info("[nodegit] Successfully pruned devdependencies."); + resolve(); + } + }); + }); + } + + function pruneOtherDependencies() { + console.info("[nodegit] Cleaning unneeded dependencies."); + return new Promise(function (resolve, reject) { + npm.commands.uninstall(modulesToPrune, function(err) { + if (err) { + console.drror("[nodegit] Failed cleaning unneeded dependencies."); + reject(err); + } + else { + console.info("[nodegit] Successfully cleaned unneeded dependencies."); + resolve(); + } + }); + }); + } +}); diff --git a/lifecycleScripts/install.js b/lifecycleScripts/install.js new file mode 100644 index 000000000..b90bb9819 --- /dev/null +++ b/lifecycleScripts/install.js @@ -0,0 +1,104 @@ +var Promise = require("nodegit-promise"); +var promisify = require("promisify-node"); +var path = require("path"); +var fs = require("fs"); + +var local = path.join.bind(path, __dirname); +var pkg = require(local("../package")); +var cp = require("child_process"); + +var checkPrepared = require(local("checkPrepared")); +var forNodeWebkit = require("for-node-webkit"); +var prepareForBuild = require(local("prepareForBuild")); + +var exec = promisify(function(command, opts, callback) { + return require("child_process").exec(command, opts, callback); +}); + + +forNodeWebkit(local("..")) + .then(function(results) { + return results.nwVersion; + }) + .then(function(nodeWebkitVersion) { + if (nodeWebkitVersion) { + console.info("[nodegit] Must build for node-webkit"); + return checkAndBuild(nodeWebkitVersion); + } + if (!fs.existsSync(local("../.didntcomefromthenpmregistry"))) { + checkAndBuild(); + } + if (process.env.BUILD_DEBUG) { + console.info("[nodegit] Doing a debug build, no fetching allowed."); + return checkAndBuild(); + } + if (process.env.BUILD_ONLY) { + console.info("[nodegit] BUILD_ONLY is set to true, no fetching allowed."); + return checkAndBuild(); + } + console.info("[nodegit] Fetching binary from S3."); + return exec("node-pre-gyp build") + .then( + function() { + console.info("[nodegit] Completed installation successfully."); + return Promise.done(); + }, + function() { + console.info("[nodegit] Failed to install prebuilt binary, building manually."); + return checkAndBuild(); + } + ); + }) + + +function checkAndBuild(nwVersion) { + console.info("[nodegit] Making sure dependencies are available and native code is generated"); + + return checkPrepared.checkAll() + .then(function(allGood) { + if (allGood) { + return build(nwVersion); + } + else { + console.info("[nodegit] Something is missing, retrieving dependencies and regenerating code"); + return prepareForBuild() + .then(function() { + return build(nwVersion); + }); + } + }); +} + +function build(nwVersion) { + console.info("[nodegit] Everything is ready to go, attempting compilation"); + if (nwVersion) { + console.info("[nodegit] Building native node-webkit module."); + } + else { + console.info("[nodegit] Building native node module."); + } + + var opts = { + cwd: local(".."), + maxBuffer: Number.MAX_VALUE + }; + + var builder = nwVersion ? "nw-gyp" : "node-gyp"; + var target = (nwVersion ? "--target=\"" + nwVersion + "\"": ""); + var debug = (process.env.BUILD_DEBUG ? " --debug" : ""); + var cmd = path.resolve(".", "node_modules", ".bin", builder) + + " clean configure" + + debug + + target + + " build"; + + return exec(cmd, opts) + .then(function() { + console.info("[nodegit] Compilation complete."); + console.info("[nodegit] Completed installation successfully."); + }, + function(err, stderr) { + console.error(err); + console.error(stderr); + }); +} diff --git a/lifecycleScripts/prepareForBuild.js b/lifecycleScripts/prepareForBuild.js new file mode 100644 index 000000000..35224b2f4 --- /dev/null +++ b/lifecycleScripts/prepareForBuild.js @@ -0,0 +1,61 @@ +var Promise = require("nodegit-promise"); +var cp = require("child_process"); +var path = require("path"); + +var local = path.join.bind(path, __dirname); + +var check = require(local("checkPrepared")).checkGenerated; +var retrieve = require(local("retrieveExternalDependencies")); +var generate = require(local("../generate")); + +module.exports = function prepareForBuild() { + + return new Promise(function(resolve, reject) { + cp.exec("npm install --ignore-scripts", function(err, stdout, stderr) { + if (err) { + console.error(stderr); + reject(err, stderr); + } + else { + resolve(); + console.info(stdout); + } + }) + }).then(function() { + return Promise.all([ + retrieve(), + doGenerate() + ]); + }); +}; + +function doGenerate() { + console.info("[nodegit] Detecting generated code."); + return check().then(function(allThere) { + if (allThere) { + console.info("[nodegit] Generated code is intact."); + return Promise.resolve(); + } + else { + console.info("[nodegit] Generated code is missing or incomplete, regenerating now."); + + return new Promise(function(resolve, reject) { + try { + generate(); + console.info("[nodegit] Code regenerated."); + resolve(); + } + catch (e) { + console.info("[nodegit] Error generating code."); + console.info(e); + //console.info(stderr); + reject(e); + } + }) + } + }); +} +// Called on the command line +if (require.main === module) { + module.exports(); +} diff --git a/lifecycleScripts/retrieveExternalDependencies.js b/lifecycleScripts/retrieveExternalDependencies.js new file mode 100644 index 000000000..54fb0fc40 --- /dev/null +++ b/lifecycleScripts/retrieveExternalDependencies.js @@ -0,0 +1,98 @@ +var Promise = require("nodegit-promise"); +var promisify = require("promisify-node"); +var fse = promisify("fs-extra"); +var zlib = require("zlib"); +var cp = require("child_process"); +var path = require("path"); + +var local = path.join.bind(path, __dirname); +var rooted = path.join.bind(path, __dirname, ".."); + +var check = require(local("checkPrepared")).checkVendor; +var pkg = require(rooted("package")); +var tar; +var request; + +module.exports = function retrieveExternalDependencies() { + tar = require("tar"); + request = require("request"); + return Promise.all([ + getVendorLib("libgit2", "https://github.com/libgit2/libgit2/tarball/" + pkg.libgit2.sha), + getVendorLib("libssh2", pkg.libssh2.url), + getVendorLib("http_parser", pkg.http_parser.url) + ]) +}; + + +function getVendorLib(name, url) { + var vendorPath = "vendor/" + name + "/"; + var version = pkg[name].sha || pkg[name].version; + + console.info("[nodegit] Detecting " + vendorPath + "."); + return check(name) + .then(function(exists) { + if (exists) { + console.info("[nodegit] " + vendorPath + " already exists."); + return Promise.resolve(); + } + else { + return check(name, true) + .then(function(exists) { + if (exists) { + console.info("[nodegit] Removing outdated " + vendorPath + "."); + return fse.remove(rooted(vendorPath)); + } + else { + console.info("[nodegit] " + vendorPath + " not found."); + return Promise.resolve(); + } + }) + .then(function() { + return new Promise(function (resolve, reject) { + console.info("[nodegit] Retrieving " + vendorPath + "."); + + var extract = tar.Extract({ + path: rooted("vendor/" + name + "/"), + strip: true + }); + + request.get(url) + .pipe(zlib.createUnzip()) + .pipe(extract) + .on("error", reject) + .on("end", resolve); + }); + + }) + .then(function() { + return fse.writeFile(rooted(vendorPath + version), ""); + }) + .then(function() { + if ((name == "libssh2") && (process.platform !== "win32")) { + return new Promise(function(resolve, reject) { + cp.exec(rooted(vendorPath) + "configure", {cwd: rooted(vendorPath)}, function(err, stdout, stderr) { + if (err) { + reject(err, stderr); + } + else { + resolve(stdout); + } + }) + }); + } + else { + return Promise.resolve(); + } + }) + .then(function() { + console.info("[nodegit] Successfully updated " + vendorPath + "."); + }); + } + }); + +} + +// Called on the command line +if (require.main === module) { + module.exports(); +} diff --git a/package.json b/package.json index d8d44e018..2d119358d 100644 --- a/package.json +++ b/package.json @@ -96,8 +96,10 @@ "generateNativeCode": "node generate/scripts/generateNativeCode", "generateMissingTests": "node generate/scripts/generateMissingTests", "publish": "node-pre-gyp package && node-pre-gyp publish", - "install": "node install", + "install": "node lifecycleScripts/install", "recompile": "BUILD_ONLY=true npm install", - "rebuild": "BUILD_ONLY=true node generate && node-gyp configure build" + "rebuild": "BUILD_ONLY=true node generate && node-gyp configure build", + "buildDebug": "node generate && BUILD_DEBUG=true npm install", + "prepublish": "node lifecycleScripts/prepareForBuild.js" } } From 4d9877ceafbbc1aa578ea37732b17465d2f77a93 Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Wed, 14 Jan 2015 11:58:08 -0700 Subject: [PATCH 06/16] add clean to postinstall --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 2d119358d..5ef29a1c0 100644 --- a/package.json +++ b/package.json @@ -97,6 +97,7 @@ "generateMissingTests": "node generate/scripts/generateMissingTests", "publish": "node-pre-gyp package && node-pre-gyp publish", "install": "node lifecycleScripts/install", + "postinstall": "node lifecycleScripts/clean", "recompile": "BUILD_ONLY=true npm install", "rebuild": "BUILD_ONLY=true node generate && node-gyp configure build", "buildDebug": "node generate && BUILD_DEBUG=true npm install", From 6c9da49d589e08c7c0e1abe55d58a4bfa0a6f55e Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Wed, 14 Jan 2015 12:01:01 -0700 Subject: [PATCH 07/16] remove unneeded dep --- lifecycleScripts/clean.js | 1 - package.json | 1 - 2 files changed, 2 deletions(-) diff --git a/lifecycleScripts/clean.js b/lifecycleScripts/clean.js index 333cdb6ea..6608841b1 100644 --- a/lifecycleScripts/clean.js +++ b/lifecycleScripts/clean.js @@ -58,7 +58,6 @@ npm.load({ ]; var modulesToPrune = [ - "find-parent-dir", "for-node-webkit", "fs-extra", "node-pre-gyp", diff --git a/package.json b/package.json index 5ef29a1c0..b3b18440c 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,6 @@ "node-pre-gyp" ], "dependencies": { - "find-parent-dir": "^0.3.0", "for-node-webkit": "0.0.2", "fs-extra": "~0.14.0", "node-pre-gyp": "~0.6.1", From 92f56afcba483e69464235cf44125044aabe27f7 Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Wed, 14 Jan 2015 12:09:55 -0700 Subject: [PATCH 08/16] check for npm registry was backwards --- lifecycleScripts/clean.js | 2 +- lifecycleScripts/install.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lifecycleScripts/clean.js b/lifecycleScripts/clean.js index 6608841b1..f971d4013 100644 --- a/lifecycleScripts/clean.js +++ b/lifecycleScripts/clean.js @@ -5,7 +5,7 @@ var npm = require("npm"); var Promise = require("nodegit-promise"); var rooted = path.join.bind(path, __dirname, ".."); -if (!fse.existsSync(rooted(".didntcomefromthenpmregistry"))) { +if (fse.existsSync(rooted(".didntcomefromthenpmregistry"))) { return; } diff --git a/lifecycleScripts/install.js b/lifecycleScripts/install.js index b90bb9819..ec964f361 100644 --- a/lifecycleScripts/install.js +++ b/lifecycleScripts/install.js @@ -25,7 +25,7 @@ forNodeWebkit(local("..")) console.info("[nodegit] Must build for node-webkit"); return checkAndBuild(nodeWebkitVersion); } - if (!fs.existsSync(local("../.didntcomefromthenpmregistry"))) { + if (fs.existsSync(local("../.didntcomefromthenpmregistry"))) { checkAndBuild(); } if (process.env.BUILD_DEBUG) { From 2e9cf11924dd03221200627ba2720277b67fff65 Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Wed, 14 Jan 2015 12:21:45 -0700 Subject: [PATCH 09/16] non-registry builds could trigger building twice --- lifecycleScripts/install.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lifecycleScripts/install.js b/lifecycleScripts/install.js index ec964f361..592d20575 100644 --- a/lifecycleScripts/install.js +++ b/lifecycleScripts/install.js @@ -26,7 +26,7 @@ forNodeWebkit(local("..")) return checkAndBuild(nodeWebkitVersion); } if (fs.existsSync(local("../.didntcomefromthenpmregistry"))) { - checkAndBuild(); + return checkAndBuild(); } if (process.env.BUILD_DEBUG) { console.info("[nodegit] Doing a debug build, no fetching allowed."); From 4ee7db7402d5f7452a0ea597c0272a405d743427 Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Wed, 14 Jan 2015 13:48:40 -0700 Subject: [PATCH 10/16] debug info --- lifecycleScripts/clean.js | 1 + lifecycleScripts/retrieveExternalDependencies.js | 3 +++ 2 files changed, 4 insertions(+) diff --git a/lifecycleScripts/clean.js b/lifecycleScripts/clean.js index f971d4013..19079be30 100644 --- a/lifecycleScripts/clean.js +++ b/lifecycleScripts/clean.js @@ -6,6 +6,7 @@ var Promise = require("nodegit-promise"); var rooted = path.join.bind(path, __dirname, ".."); if (fse.existsSync(rooted(".didntcomefromthenpmregistry"))) { + console.error("[nodegit] We only clean when downloaded from the npm registry. Skipping clean."); return; } diff --git a/lifecycleScripts/retrieveExternalDependencies.js b/lifecycleScripts/retrieveExternalDependencies.js index 54fb0fc40..6d36b326d 100644 --- a/lifecycleScripts/retrieveExternalDependencies.js +++ b/lifecycleScripts/retrieveExternalDependencies.js @@ -70,8 +70,11 @@ function getVendorLib(name, url) { .then(function() { if ((name == "libssh2") && (process.platform !== "win32")) { return new Promise(function(resolve, reject) { + console.info("[nodegit] Configuring libssh2."); cp.exec(rooted(vendorPath) + "configure", {cwd: rooted(vendorPath)}, function(err, stdout, stderr) { if (err) { + console.error(err); + console.error(stderr); reject(err, stderr); } else { From 4bc52ed9a155be50e9ed4eb20ac304bfeb38084f Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Fri, 16 Jan 2015 09:50:59 -0700 Subject: [PATCH 11/16] only fetch vendor once --- lifecycleScripts/install.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lifecycleScripts/install.js b/lifecycleScripts/install.js index 592d20575..5d46d524d 100644 --- a/lifecycleScripts/install.js +++ b/lifecycleScripts/install.js @@ -57,15 +57,15 @@ function checkAndBuild(nwVersion) { return checkPrepared.checkAll() .then(function(allGood) { if (allGood) { - return build(nwVersion); + return Promise.resolve(); } else { console.info("[nodegit] Something is missing, retrieving dependencies and regenerating code"); - return prepareForBuild() - .then(function() { - return build(nwVersion); - }); + return prepareForBuild(); } + }) + .then(function() { + return build(nwVersion); }); } From e9b7026f3c1b22012450f28a09964ec876889da8 Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Fri, 16 Jan 2015 14:32:31 -0700 Subject: [PATCH 12/16] fix http_parser in v10 --- lifecycleScripts/checkPrepared.js | 12 +++++++++++- lifecycleScripts/install.js | 6 ++---- lifecycleScripts/retrieveExternalDependencies.js | 9 ++++++++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/lifecycleScripts/checkPrepared.js b/lifecycleScripts/checkPrepared.js index c616f77a9..144652891 100644 --- a/lifecycleScripts/checkPrepared.js +++ b/lifecycleScripts/checkPrepared.js @@ -4,6 +4,8 @@ var fs = require("fs"); var rooted = path.join.bind(path, __dirname, ".."); var pkg = require(rooted("package")); +var NODE_VERSION = Number(process.version.match(/^v(\d+\.\d+)/)[1]); + module.exports.checkAll = function checkAll() { return Promise.all([ checkVendor("libgit2"), @@ -31,7 +33,15 @@ function checkExists(name) { module.exports.checkExists = checkExists; function checkVendor(name, skipVersion) { - var version = skipVersion ? "" : (pkg[name].sha || pkg[name].version); + var version = ""; + if (!skipVersion) { + var vendorPackage = pkg[name]; + if (NODE_VERSION === 0.1 && vendorPackage["0.10"]) { + vendorPackage = vendorPackage["0.10"]; + } + version = vendorPackage.sha || vendorPackage.version; + } + var vendorPath = "vendor/" + name + "/" + version; return checkExists(vendorPath); } diff --git a/lifecycleScripts/install.js b/lifecycleScripts/install.js index 5d46d524d..6db33d571 100644 --- a/lifecycleScripts/install.js +++ b/lifecycleScripts/install.js @@ -15,8 +15,7 @@ var exec = promisify(function(command, opts, callback) { return require("child_process").exec(command, opts, callback); }); - -forNodeWebkit(local("..")) +return forNodeWebkit(local("..")) .then(function(results) { return results.nwVersion; }) @@ -41,14 +40,13 @@ forNodeWebkit(local("..")) .then( function() { console.info("[nodegit] Completed installation successfully."); - return Promise.done(); }, function() { console.info("[nodegit] Failed to install prebuilt binary, building manually."); return checkAndBuild(); } ); - }) + }); function checkAndBuild(nwVersion) { diff --git a/lifecycleScripts/retrieveExternalDependencies.js b/lifecycleScripts/retrieveExternalDependencies.js index 6d36b326d..a1ac79459 100644 --- a/lifecycleScripts/retrieveExternalDependencies.js +++ b/lifecycleScripts/retrieveExternalDependencies.js @@ -13,6 +13,8 @@ var pkg = require(rooted("package")); var tar; var request; +var NODE_VERSION = Number(process.version.match(/^v(\d+\.\d+)/)[1]); + module.exports = function retrieveExternalDependencies() { tar = require("tar"); request = require("request"); @@ -26,7 +28,12 @@ module.exports = function retrieveExternalDependencies() { function getVendorLib(name, url) { var vendorPath = "vendor/" + name + "/"; - var version = pkg[name].sha || pkg[name].version; + var vendorPackage = pkg[name]; + if (NODE_VERSION === 0.1 && vendorPackage["0.10"]) { + vendorPackage = vendorPackage["0.10"]; + } + + var version = vendorPackage.sha || vendorPackage.version; console.info("[nodegit] Detecting " + vendorPath + "."); return check(name) From 65a48c983cf945d2cc0a6320784bbbc4e06cfe17 Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Fri, 16 Jan 2015 14:44:14 -0700 Subject: [PATCH 13/16] debug info --- lifecycleScripts/retrieveExternalDependencies.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lifecycleScripts/retrieveExternalDependencies.js b/lifecycleScripts/retrieveExternalDependencies.js index a1ac79459..4d212dbe2 100644 --- a/lifecycleScripts/retrieveExternalDependencies.js +++ b/lifecycleScripts/retrieveExternalDependencies.js @@ -35,11 +35,11 @@ function getVendorLib(name, url) { var version = vendorPackage.sha || vendorPackage.version; - console.info("[nodegit] Detecting " + vendorPath + "."); + console.info("[nodegit] Detecting " + vendorPath + version + "."); return check(name) .then(function(exists) { if (exists) { - console.info("[nodegit] " + vendorPath + " already exists."); + console.info("[nodegit] " + vendorPath + version + " already exists."); return Promise.resolve(); } else { @@ -95,7 +95,7 @@ function getVendorLib(name, url) { } }) .then(function() { - console.info("[nodegit] Successfully updated " + vendorPath + "."); + console.info("[nodegit] Successfully updated " + vendorPath + version + "."); }); } }); From 14e46fecadda9025a37538a65df6df43469e06c7 Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Fri, 16 Jan 2015 15:10:07 -0700 Subject: [PATCH 14/16] fix the ACTUAL version of the http_parser --- lifecycleScripts/retrieveExternalDependencies.js | 10 +++++----- package.json | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lifecycleScripts/retrieveExternalDependencies.js b/lifecycleScripts/retrieveExternalDependencies.js index 4d212dbe2..b36a8b794 100644 --- a/lifecycleScripts/retrieveExternalDependencies.js +++ b/lifecycleScripts/retrieveExternalDependencies.js @@ -19,14 +19,14 @@ module.exports = function retrieveExternalDependencies() { tar = require("tar"); request = require("request"); return Promise.all([ - getVendorLib("libgit2", "https://github.com/libgit2/libgit2/tarball/" + pkg.libgit2.sha), - getVendorLib("libssh2", pkg.libssh2.url), - getVendorLib("http_parser", pkg.http_parser.url) + getVendorLib("libgit2"), + getVendorLib("libssh2"), + getVendorLib("http_parser") ]) }; -function getVendorLib(name, url) { +function getVendorLib(name) { var vendorPath = "vendor/" + name + "/"; var vendorPackage = pkg[name]; if (NODE_VERSION === 0.1 && vendorPackage["0.10"]) { @@ -63,7 +63,7 @@ function getVendorLib(name, url) { strip: true }); - request.get(url) + request.get(vendorPackage.url) .pipe(zlib.createUnzip()) .pipe(extract) .on("error", reject) diff --git a/package.json b/package.json index b3b18440c..78f293dd6 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "description": "Node.js libgit2 asynchronous native bindings", "version": "0.2.4", "libgit2": { + "url": "https://github.com/libgit2/libgit2/tarball/4af08d9f69f151f6362df51d7d7f41527e2af05c", "sha": "4af08d9f69f151f6362df51d7d7f41527e2af05c", "version": "0.21.2" }, From 9dce619b237ee25687dc6c5493c8cb5ff5ee610e Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Mon, 19 Jan 2015 11:12:21 -0700 Subject: [PATCH 15/16] start linting lifecycleScripts --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 78f293dd6..204f21325 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "host": "https://s3.amazonaws.com/nodegit/nodegit/" }, "scripts": { - "lint": "jshint lib test/tests examples", + "lint": "jshint lib test/tests examples lifecycleScripts", "cov": "node test", "mocha": "mocha test/runner test/tests", "mochaDebug": "mocha --debug-brk test/runner test/tests", From cad078e205b8fd3ae8e1559bd4a4509e34a9bf35 Mon Sep 17 00:00:00 2001 From: Maximiliano Korp Date: Mon, 19 Jan 2015 11:19:27 -0700 Subject: [PATCH 16/16] fix linting in lifecyclescripts --- lifecycleScripts/checkPrepared.js | 2 +- lifecycleScripts/clean.js | 9 ++++--- lifecycleScripts/install.js | 21 ++++++++------- lifecycleScripts/prepareForBuild.js | 7 ++--- .../retrieveExternalDependencies.js | 27 +++++++++++-------- 5 files changed, 37 insertions(+), 29 deletions(-) diff --git a/lifecycleScripts/checkPrepared.js b/lifecycleScripts/checkPrepared.js index 144652891..ffb1a5c28 100644 --- a/lifecycleScripts/checkPrepared.js +++ b/lifecycleScripts/checkPrepared.js @@ -45,7 +45,7 @@ function checkVendor(name, skipVersion) { var vendorPath = "vendor/" + name + "/" + version; return checkExists(vendorPath); } -module.exports.checkVendor = checkVendor +module.exports.checkVendor = checkVendor; function checkGenerated() { return Promise.all([ diff --git a/lifecycleScripts/clean.js b/lifecycleScripts/clean.js index 19079be30..d3a21c001 100644 --- a/lifecycleScripts/clean.js +++ b/lifecycleScripts/clean.js @@ -1,12 +1,12 @@ var fse = require("fs-extra"); var path = require("path"); -var cp = require("child_process"); var npm = require("npm"); var Promise = require("nodegit-promise"); var rooted = path.join.bind(path, __dirname, ".."); if (fse.existsSync(rooted(".didntcomefromthenpmregistry"))) { - console.error("[nodegit] We only clean when downloaded from the npm registry. Skipping clean."); + console.error("[nodegit] We only clean when downloaded from the npm " + + "registry. Skipping clean."); return; } @@ -86,10 +86,11 @@ npm.load({ var failures = filesToDelete.some(function(deletable) { try { fse.removeSync(rooted(deletable)); - return false + return false; } catch (e) { - console.info("[nodegit] Error deleting files. Errored on " + rooted(deletable)) + "."; + console.info("[nodegit] Error deleting files. Errored on " + + rooted(deletable) + "."); console.error(e); reject(e); diff --git a/lifecycleScripts/install.js b/lifecycleScripts/install.js index 6db33d571..c5451b3c6 100644 --- a/lifecycleScripts/install.js +++ b/lifecycleScripts/install.js @@ -4,8 +4,6 @@ var path = require("path"); var fs = require("fs"); var local = path.join.bind(path, __dirname); -var pkg = require(local("../package")); -var cp = require("child_process"); var checkPrepared = require(local("checkPrepared")); var forNodeWebkit = require("for-node-webkit"); @@ -42,7 +40,8 @@ return forNodeWebkit(local("..")) console.info("[nodegit] Completed installation successfully."); }, function() { - console.info("[nodegit] Failed to install prebuilt binary, building manually."); + console.info("[nodegit] Failed to install prebuilt binary, " + + "building manually."); return checkAndBuild(); } ); @@ -50,7 +49,8 @@ return forNodeWebkit(local("..")) function checkAndBuild(nwVersion) { - console.info("[nodegit] Making sure dependencies are available and native code is generated"); + console.info("[nodegit] Making sure dependencies are available and native " + + "code is generated"); return checkPrepared.checkAll() .then(function(allGood) { @@ -58,7 +58,8 @@ function checkAndBuild(nwVersion) { return Promise.resolve(); } else { - console.info("[nodegit] Something is missing, retrieving dependencies and regenerating code"); + console.info("[nodegit] Something is missing, retrieving " + + "dependencies and regenerating code"); return prepareForBuild(); } }) @@ -84,11 +85,11 @@ function build(nwVersion) { var builder = nwVersion ? "nw-gyp" : "node-gyp"; var target = (nwVersion ? "--target=\"" + nwVersion + "\"": ""); var debug = (process.env.BUILD_DEBUG ? " --debug" : ""); - var cmd = path.resolve(".", "node_modules", ".bin", builder) - + " clean configure" - + debug - + target - + " build"; + var cmd = path.resolve(".", "node_modules", ".bin", builder) + + " clean configure" + + debug + + target + + " build"; return exec(cmd, opts) .then(function() { diff --git a/lifecycleScripts/prepareForBuild.js b/lifecycleScripts/prepareForBuild.js index 35224b2f4..e32653157 100644 --- a/lifecycleScripts/prepareForBuild.js +++ b/lifecycleScripts/prepareForBuild.js @@ -20,7 +20,7 @@ module.exports = function prepareForBuild() { resolve(); console.info(stdout); } - }) + }); }).then(function() { return Promise.all([ retrieve(), @@ -37,7 +37,8 @@ function doGenerate() { return Promise.resolve(); } else { - console.info("[nodegit] Generated code is missing or incomplete, regenerating now."); + console.info("[nodegit] Generated code is missing or incomplete, " + + "regenerating now."); return new Promise(function(resolve, reject) { try { @@ -51,7 +52,7 @@ function doGenerate() { //console.info(stderr); reject(e); } - }) + }); } }); } diff --git a/lifecycleScripts/retrieveExternalDependencies.js b/lifecycleScripts/retrieveExternalDependencies.js index b36a8b794..30bbf4e98 100644 --- a/lifecycleScripts/retrieveExternalDependencies.js +++ b/lifecycleScripts/retrieveExternalDependencies.js @@ -22,7 +22,7 @@ module.exports = function retrieveExternalDependencies() { getVendorLib("libgit2"), getVendorLib("libssh2"), getVendorLib("http_parser") - ]) + ]); }; @@ -78,16 +78,20 @@ function getVendorLib(name) { if ((name == "libssh2") && (process.platform !== "win32")) { return new Promise(function(resolve, reject) { console.info("[nodegit] Configuring libssh2."); - cp.exec(rooted(vendorPath) + "configure", {cwd: rooted(vendorPath)}, function(err, stdout, stderr) { - if (err) { - console.error(err); - console.error(stderr); - reject(err, stderr); + cp.exec( + rooted(vendorPath) + "configure", + {cwd: rooted(vendorPath)}, + function(err, stdout, stderr) { + if (err) { + console.error(err); + console.error(stderr); + reject(err, stderr); + } + else { + resolve(stdout); + } } - else { - resolve(stdout); - } - }) + ); }); } else { @@ -95,7 +99,8 @@ function getVendorLib(name) { } }) .then(function() { - console.info("[nodegit] Successfully updated " + vendorPath + version + "."); + console.info("[nodegit] Successfully updated " + vendorPath + + version + "."); }); } });