diff --git a/Makefile b/Makefile index 8349efb2f4..8a133cfa51 100644 --- a/Makefile +++ b/Makefile @@ -55,5 +55,6 @@ publish: bootstrap: npm install node scripts/bootstrap.js + make build cd packages/babel-runtime; \ node scripts/build-dist.js diff --git a/package.json b/package.json index 40480c4f58..de660fa723 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,9 @@ "mkdirp": "^0.5.1", "mocha": "2.2.0", "output-file-sync": "^1.1.1", + "pad": "^1.0.0", "path-exists": "^1.0.0", + "progress": "^1.1.8", "readline-sync": "^1.2.19", "rimraf": "^2.4.3", "semver": "^5.0.0", diff --git a/packages/babel-runtime/scripts/build-dist.js b/packages/babel-runtime/scripts/build-dist.js index 32070c7e54..c07a62fe7b 100644 --- a/packages/babel-runtime/scripts/build-dist.js +++ b/packages/babel-runtime/scripts/build-dist.js @@ -47,7 +47,7 @@ function defaultify(name) { function writeRootFile(filename, content) { filename = relative(filename); - console.log(filename); + //console.log(filename); outputFile(filename, content); } diff --git a/scripts/bootstrap.js b/scripts/bootstrap.js index 51cf09b944..cadd88c002 100755 --- a/scripts/bootstrap.js +++ b/scripts/bootstrap.js @@ -1,11 +1,13 @@ require("shelljs/global"); -var mkdirp = require("mkdirp"); -var rimraf = require("rimraf"); -var child = require("child_process"); -var async = require("async"); -var path = require("path"); -var fs = require("fs"); +var ProgressBar = require("progress"); +var mkdirp = require("mkdirp"); +var rimraf = require("rimraf"); +var child = require("child_process"); +var async = require("async"); +var path = require("path"); +var pad = require("pad"); +var fs = require("fs"); var CURRENT_VERSION = fs.readFileSync(__dirname + "/../VERSION", "utf8").trim(); @@ -15,6 +17,7 @@ try { } catch (err) {} // get packages +var longestNameLength = 0; var packages = []; ls("packages/*").forEach(function (loc) { var name = path.basename(loc); @@ -23,6 +26,10 @@ ls("packages/*").forEach(function (loc) { var pkgLoc = __dirname + "/../packages/" + name + "/package.json"; if (!fs.existsSync(pkgLoc)) return; + if (name.length > longestNameLength) { + longestNameLength = name.length; + } + var pkg = require(pkgLoc); packages.push({ folder: name, @@ -30,10 +37,23 @@ ls("packages/*").forEach(function (loc) { name: pkg.name }); }); +longestNameLength = Math.min(longestNameLength, 50); + +var completed = false; + +var bar = new ProgressBar(":packagename ╢:bar╟", { + total: packages.length, + complete: "█", + incomplete: "░", + clear: true, + + // terminal columns - package name length - additional characters length + width: process.stdout.columns - longestNameLength - 3 +}); async.parallelLimit(packages.map(function (root) { return function (done) { - console.log(root.name); + //console.log(root.name); var tasks = []; var nodeModulesLoc = process.cwd() + "/packages/" + root.folder + "/node_modules"; @@ -55,7 +75,7 @@ async.parallelLimit(packages.map(function (root) { var linkSrc = process.cwd() + "/packages/" + sub.folder; var linkDest = nodeModulesLoc + "/" + sub.name; - console.log("Linking", linkSrc, "to", linkDest); + //console.log("Linking", linkSrc, "to", linkDest); rimraf(linkDest, function (err) { if (err) return done(err); @@ -83,21 +103,30 @@ async.parallelLimit(packages.map(function (root) { if (err != null) { done(stderr); } else { - stdout = stdout.trim(); - if (stdout) console.log(stdout); + //stdout = stdout.trim(); + //if (stdout) console.log(stdout); done(); } }); }); + tasks.push(function (done) { + if (!completed) bar.tick({ + packagename: pad(root.name.slice(0, longestNameLength), longestNameLength) + }); + done(); + }); + async.series(tasks, done); }; }), 4, function (err) { + // don't display the ticker if we hit an error and we still have workers + completed = true; + if (err) { console.error(err); process.exit(1); } else { - exec("make build"); process.exit(); } });