UNPKG

npm-git-library-version

Version:

Script for validating, versioning and tagging an npm release

94 lines (82 loc) 2.81 kB
var addFiles, commitChanges, detach, exec, readPackage, reattach, reset, revertCommit, syncVersion, verifyChanges; verifyChanges = require('./steps/verify-changes'); readPackage = require('./steps/read-package'); syncVersion = require('./steps/sync-version'); commitChanges = require('./steps/commit-changes'); revertCommit = require('./steps/revert-commit'); reset = require('./steps/reset'); detach = require('./steps/detach'); reattach = require('./steps/reattach'); addFiles = require('./steps/add-files'); exec = require('./util/exec'); module.exports = function(argv) { var pkg; pkg = null; argv.files = argv._.slice(1); return Promise.resolve().then(function() { if (!argv.ignoreChanges) { return verifyChanges(argv.ignoreBower); } }).then(function() { return readPackage().then(function(json) { pkg = json; if (argv.files.length === 0 && (pkg.files != null)) { return argv.files = pkg.files.slice(); } }); }).then(function() { return Promise.resolve().then(function() { if (!argv.dontSync) { return syncVersion(pkg.version, argv.ignoreBower); } }).then(function() { if (!argv.dontCommitVersionChanges) { return commitChanges(pkg.version, argv.ignoreBower); } }).then(function() { return Promise.resolve().then(function() { return detach(); }).then(function() { return Promise.resolve().then(function() { if (pkg.scripts.build != null) { return exec('npm run-script build').then(function() { return addFiles(argv.files); }).then(function() { return exec('git clean -fd'); }); } }).then(function() { return exec('npm test'); }).then(function() { if (pkg.scripts.build == null) { return addFiles(argv.files).then(function() { return exec('git clean -fd'); }); } }).then(function() { return exec('git commit -m "distribution files"'); }).then(function() { return exec("git tag -a \"v" + pkg.version + "\" -m \"v" + pkg.version + " for distribution\""); }); }).then(function() { return reattach(argv.branch); }, function(err) { return reattach(argv.branch).then(function() { throw err; }); }); })["catch"](function(err) { if (!argv.dontCommitVersionChanges) { return revertCommit().then(function() { throw err; }); } else { throw err; } }); })["catch"](function(err) { return reset().then(function() { throw err; }); }); };