UNPKG

mercurial-bower-resolver

Version:
111 lines (91 loc) 2.69 kB
'use strict'; // Constants: Object.defineProperty(exports, '__esModule', { value: true }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // Dependencies: var _child_process = require('child_process'); var _child_process2 = _interopRequireDefault(_child_process); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); var _tmp = require('tmp'); var _tmp2 = _interopRequireDefault(_tmp); var ALPHA_NUMERIC_REVISION_REGEX = /^[a-f0-9]{4,40}$/; var BRANCHES = 'branches'; var CLONE = 'clone'; var HG = 'hg'; var HG_REGEX = /^hg\+/i; var NUMERIC_REVISION_REGEX = /^\d+$/; var REVISION_FLAG = '-r'; var TAGS = 'tags'; var TRAILING_SLASHES = /\/+$/; var UPDATE = 'up';exports['default'] = { clone: clone, branches: branches, tags: tags, update: update }; function clone(source, directory) { directory = directory || _tmp2['default'].dirSync(); return run({ command: CLONE, args: [cleanSource(source), directory.name] }).then(function () { return directory; }); } function branches(directoryName) { return run({ command: BRANCHES, cwd: directoryName }); } function tags(directoryName) { return run({ command: TAGS, cwd: directoryName }); } function update(endpoint, directoryName) { var target = endpoint.target; var flags = []; if (NUMERIC_REVISION_REGEX.test(target) || ALPHA_NUMERIC_REVISION_REGEX.test(target)) { flags.push(REVISION_FLAG); } return run({ command: UPDATE, args: flags.concat([endpoint.target]), cwd: directoryName }); } function cleanSource(source) { return source // Change hg+ssh or hg+http or hg+https to ssh, http(s) respectively: .replace(HG_REGEX, '') // Remove trailing slashes: .replace(TRAILING_SLASHES, ''); } function run(options) { var args = options.args || []; var command = options.command; var cwd = options.cwd || process.cwd(); return new _bluebird2['default'](function (resolve, reject) { var hg = _child_process2['default'].spawn(HG, [command].concat(args), { cwd: cwd }); var stdout = ''; var stderr = ''; hg.stdout.on('data', function (data) { return stdout += data.toString(); }); hg.stderr.on('data', function (data) { return stderr += data.toString(); }); hg.on('exit', function () { return resolve(stdout); }); hg.on('error', function () { return reject(stderr); }); }); } module.exports = exports['default'];