UNPKG

1.8 kBJavaScriptView Raw
1/**
2 * Release a package.
3 * @memberof module:apeman-dev-commons-releasing/lib
4 * @function release
5 * @param {string[]} scripts - Scripts to run.
6 * @param {object} options - Optional settings.
7 * @param {function} callback - Callback when done.
8 */
9
10"use strict";
11
12var async = require('async'),
13 argx = require('argx'),
14 colorprint = require('colorprint'),
15 resolveScript = require('./resolve_script'),
16 ifSure = require('./if_sure'),
17 execcli = require('execcli');
18
19/** @lends release */
20function release(scripts, options, callback) {
21 release.ifSure(function () {
22 var args = argx(arguments);
23 callback = args.pop('function') || argx.noop;
24 options = args.pop('object') || {};
25 colorprint.notice('Start releasing...');
26 async.series([
27 function (callback) {
28 async.eachSeries(scripts, function (script, callback) {
29 script = script.split(/\s/g).map(function (word) {
30 return word.replace(/\\s/g, ' ');
31 });
32 script[0] = resolveScript(script[0]);
33 colorprint.info('$ ' + script.join(' '));
34 execcli.apply(execcli, script.concat({}).concat(options).concat(callback));
35 }, callback);
36 }
37 ], function (err) {
38 release.done(err, true);
39 callback(err)
40 });
41 });
42}
43release.ifSure = ifSure;
44release.resolveScript = resolveScript;
45release.done = function (err, exit) {
46 process.nextTick(function () {
47 if (err) {
48 colorprint.error(err);
49 } else {
50 colorprint.notice('...releasing done!');
51 }
52 if (exit) {
53 process.exit(err ? 1 : 0);
54 }
55 });
56};
57
58module.exports = release;
59
60