sharegit
Version:
Share project to remote git repo.
74 lines (68 loc) • 2.51 kB
JavaScript
/**
* 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.
*/
;
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;