UNPKG

sharegit

Version:
74 lines (68 loc) 2.51 kB
/** * Create remote git origin. * @function sharegit * @param {object} [options] - Optional settings. * @param {string} [options.origin=_detectOrigin()] - Name of origin on git. By default, name is resolved form package.json. * @param {function} callback - Callback when done. */ "use strict"; const async = require('async'), argx = require('argx'), execcli = require('execcli'), _isGitRepo = require('./_is_git_repo'), _remoteExists = require('./_remote_exists'), _detectOrigin = require('./_detect_origin'); /** @lends sharegit */ function sharegit(options, callback) { let args = argx(arguments); callback = args.pop('function') || argx.noop; options = args.pop('object') || {}; let originUrl = options.origin || _detectOrigin(); if (!originUrl) { callback(new Error('Failed to find origin url.')); return; } _isGitRepo((isGit) => { async.series([ (callback) => { if (isGit) { callback(null); return; } async.series([ (callback) => { execcli('git', ['init'], callback); }, (callback) => { execcli('git', ['add', '.'], callback); }, (callback) => { execcli('git', ['commit', '-m', 'first commit'], callback); } ], callback); }, (callback) => { async.waterfall([ (callback) => { _remoteExists(callback); }, (exists, callback) => { if (exists) { callback(new Error('Remote already exists: ' + originUrl)); return; } async.series([ function addOrigin(callback) { execcli('git', ['remote', 'add', 'origin', originUrl], callback); }, function pushToOrigin(callback) { execcli('git', ['push', '-u', 'origin', 'master'], callback); } ], callback); } ], callback); } ], callback); }); } module.exports = sharegit;