'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
// istanbul ignore next
function _interopRequireWildcard(obj) { Eif (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
// istanbul ignore next
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _configLoader = require('./configLoader');
var configLoader = _interopRequireWildcard(_configLoader);
var _commonUtil = require('../common/util');
var _adapter = require('./adapter');
var adapter = _interopRequireWildcard(_adapter);
var addPathToAdapterConfig = adapter.addPathToAdapterConfig;
var generateNpmInstallAdapterCommand = adapter.generateNpmInstallAdapterCommand;
var getNpmInstallStringMappings = adapter.getNpmInstallStringMappings;
exports['default'] = init;
var CLI_PATH = _path2['default'].normalize(__dirname + '/../../');
/**
* CZ INIT
*
* Init is generally responsible for initializing an adapter in
* a user's project. The goal is to be able to run
* `commitizen init` and be prompted for certain fields which
* will help you install the proper adapter for your project.
*
* Init does not actually create the adapter (it defers to adapter
* for this). Instead, it is specifically designed to help gather
* and validate the information needed to install the adapter
* properly without interfering with a previous adapter config.
*/
/**
* The defaults for init
*/
var defaultInitOptions = {
save: false,
saveDev: true,
saveExact: false,
force: false
};
/**
* Runs npm install for the adapter then modifies the config.commitizen as needed
*/
function init(sh, repoPath, adapterNpmName) {
var _ref = arguments.length <= 3 || arguments[3] === undefined ? defaultInitOptions : arguments[3];
var _ref$save = _ref.save;
var save = _ref$save === undefined ? false : _ref$save;
var _ref$saveDev = _ref.saveDev;
var saveDev = _ref$saveDev === undefined ? true : _ref$saveDev;
var _ref$saveExact = _ref.saveExact;
var saveExact = _ref$saveExact === undefined ? false : _ref$saveExact;
var _ref$force = _ref.force;
var force = _ref$force === undefined ? false : _ref$force;
// Don't let things move forward if required args are missing
checkRequiredArguments(sh, repoPath, adapterNpmName);
// Move to the correct directory so we can run commands
sh.cd(repoPath);
// Load the current adapter config
var adapterConfig = loadAdapterConfig();
// Get the npm string mappings based on the arguments provided
var stringMappings = getNpmInstallStringMappings(save, saveDev, saveExact, force);
// Generate a string that represents the npm install command
var installAdapterCommand = generateNpmInstallAdapterCommand(stringMappings, adapterNpmName);
// Check for previously installed adapters
if (adapterConfig && adapterConfig.path && adapterConfig.path.length > 0) {
// console.log(`
// Previous adapter detected!
// `);
if (!force) {
// console.log(`
// Previous adapter detected!
// `);
throw 'A previous adapter is already configured. Use --force to override';
} else {
// Override it
try {
(0, _commonUtil.executeShellCommand)(sh, repoPath, installAdapterCommand);
addPathToAdapterConfig(sh, CLI_PATH, repoPath, adapterNpmName);
} catch (e) {
console.error(e);
}
}
} else {
// console.log(`
// No previous adapter was detected
// `);
try {
(0, _commonUtil.executeShellCommand)(sh, repoPath, installAdapterCommand);
addPathToAdapterConfig(sh, CLI_PATH, repoPath, adapterNpmName);
} catch (e) {
console.error(e);
}
}
}
/**
* Checks to make sure that the required arguments are passed
* Throws an exception if any are not.
*/
function checkRequiredArguments(sh, path, adapterNpmName) {
Iif (!sh) {
throw "You must pass an instance of shelljs when running init.";
}
Iif (!path) {
throw "Path is required when running init.";
}
Iif (!adapterNpmName) {
throw "The adapter's npm name is required when running init.";
}
}
/**
* CONFIG
* Loads and returns the adapter config at key config.commitizen, if it exists
*/
function loadAdapterConfig() {
var config = configLoader.load();
if (config) {
return config;
} else {
return;
}
}
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3RyYXZpcy9idWlsZC9jb21taXRpemVuL2N6LWNsaS9zcmMvY29tbWl0aXplbi9pbml0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7b0JBQWlCLE1BQU07Ozs7NEJBQ08sZ0JBQWdCOztJQUFsQyxZQUFZOzswQkFDVSxnQkFBZ0I7O3VCQUN6QixXQUFXOztJQUF4QixPQUFPOztJQUdqQixzQkFBc0IsR0FHcEIsT0FBTyxDQUhULHNCQUFzQjtJQUN0QixnQ0FBZ0MsR0FFOUIsT0FBTyxDQUZULGdDQUFnQztJQUNoQywyQkFBMkIsR0FDekIsT0FBTyxDQURULDJCQUEyQjtxQkFHZCxJQUFJOztBQUVuQixJQUFNLFFBQVEsR0FBRyxrQkFBSyxTQUFTLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJ2RCxJQUFNLGtCQUFrQixHQUFHO0FBQ3pCLE1BQUksRUFBRSxLQUFLO0FBQ1gsU0FBTyxFQUFFLElBQUk7QUFDYixXQUFTLEVBQUUsS0FBSztBQUNoQixPQUFLLEVBQUUsS0FBSztDQUNiLENBQUM7Ozs7O0FBS0YsU0FBUyxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBS2xCO21FQUFwQixrQkFBa0I7O3VCQUpwQixJQUFJO01BQUosSUFBSSw2QkFBRyxLQUFLOzBCQUNaLE9BQU87TUFBUCxPQUFPLGdDQUFHLElBQUk7NEJBQ2QsU0FBUztNQUFULFNBQVMsa0NBQUcsS0FBSzt3QkFDakIsS0FBSztNQUFMLEtBQUssOEJBQUcsS0FBSzs7O0FBSWIsd0JBQXNCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQzs7O0FBR3JELElBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7OztBQUdoQixNQUFJLGFBQWEsR0FBRyxpQkFBaUIsRUFBRSxDQUFDOzs7QUFHeEMsTUFBSSxjQUFjLEdBQUcsMkJBQTJCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7OztBQUdsRixNQUFJLHFCQUFxQixHQUFHLGdDQUFnQyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQzs7O0FBRzdGLE1BQUcsYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFFOzs7Ozs7QUFNckUsUUFBRyxDQUFDLEtBQUssRUFBRTs7Ozs7O0FBTVQsWUFBTSxtRUFBbUUsQ0FBQztLQUMzRSxNQUFNOztBQUNMLFVBQUk7QUFDRiw2Q0FBb0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pELDhCQUFzQixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO09BQ2hFLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDVixlQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ2xCO0tBQ0Y7R0FFRixNQUFNOzs7Ozs7QUFNTCxRQUFJOztBQUVGLDJDQUFvQixFQUFFLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFDekQsNEJBQXNCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7S0FDaEUsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNWLGFBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbEI7R0FDRjtDQUNGOzs7Ozs7QUFNRCxTQUFTLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFO0FBQ3hELE1BQUcsQ0FBQyxFQUFFLEVBQUU7QUFDTixVQUFNLHlEQUF5RCxDQUFDO0dBQ2pFO0FBQ0QsTUFBRyxDQUFDLElBQUksRUFBRTtBQUNSLFVBQU0scUNBQXFDLENBQUM7R0FDN0M7QUFDRCxNQUFHLENBQUMsY0FBYyxFQUFFO0FBQ2xCLFVBQU0sdURBQXVELENBQUM7R0FDL0Q7Q0FDRjs7Ozs7O0FBTUQsU0FBUyxpQkFBaUIsR0FBRztBQUMzQixNQUFJLE1BQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDakMsTUFBRyxNQUFNLEVBQUU7QUFDVCxXQUFPLE1BQU0sQ0FBQztHQUNmLE1BQU07QUFDTCxXQUFPO0dBQ1I7Q0FDRiIsImZpbGUiOiIvaG9tZS90cmF2aXMvYnVpbGQvY29tbWl0aXplbi9jei1jbGkvc3JjL2NvbW1pdGl6ZW4vaW5pdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY29uZmlnTG9hZGVyIGZyb20gJy4vY29uZmlnTG9hZGVyJztcbmltcG9ydCB7ZXhlY3V0ZVNoZWxsQ29tbWFuZH0gZnJvbSAnLi4vY29tbW9uL3V0aWwnO1xuaW1wb3J0ICogYXMgYWRhcHRlciBmcm9tICcuL2FkYXB0ZXInO1xuXG5sZXQge1xuICBhZGRQYXRoVG9BZGFwdGVyQ29uZmlnLFxuICBnZW5lcmF0ZU5wbUluc3RhbGxBZGFwdGVyQ29tbWFuZCxcbiAgZ2V0TnBtSW5zdGFsbFN0cmluZ01hcHBpbmdzXG59ID0gYWRhcHRlcjtcblxuZXhwb3J0IGRlZmF1bHQgaW5pdDtcblxuY29uc3QgQ0xJX1BBVEggPSBwYXRoLm5vcm1hbGl6ZShfX2Rpcm5hbWUgKyAnLy4uLy4uLycpO1xuXG4vKipcbiAqIENaIElOSVRcbiAqIFxuICogSW5pdCBpcyBnZW5lcmFsbHkgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyBhbiBhZGFwdGVyIGluXG4gKiBhIHVzZXIncyBwcm9qZWN0LiBUaGUgZ29hbCBpcyB0byBiZSBhYmxlIHRvIHJ1biBcbiAqIGBjb21taXRpemVuIGluaXRgIGFuZCBiZSBwcm9tcHRlZCBmb3IgY2VydGFpbiBmaWVsZHMgd2hpY2hcbiAqIHdpbGwgaGVscCB5b3UgaW5zdGFsbCB0aGUgcHJvcGVyIGFkYXB0ZXIgZm9yIHlvdXIgcHJvamVjdC5cbiAqIFxuICogSW5pdCBkb2VzIG5vdCBhY3R1YWxseSBjcmVhdGUgdGhlIGFkYXB0ZXIgKGl0IGRlZmVycyB0byBhZGFwdGVyXG4gKiBmb3IgdGhpcykuIEluc3RlYWQsIGl0IGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBoZWxwIGdhdGhlclxuICogYW5kIHZhbGlkYXRlIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gaW5zdGFsbCB0aGUgYWRhcHRlclxuICogcHJvcGVybHkgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIGEgcHJldmlvdXMgYWRhcHRlciBjb25maWcuXG4gKi9cblxuLyoqXG4gKiBUaGUgZGVmYXVsdHMgZm9yIGluaXRcbiAqL1xuY29uc3QgZGVmYXVsdEluaXRPcHRpb25zID0ge1xuICBzYXZlOiBmYWxzZSxcbiAgc2F2ZURldjogdHJ1ZSxcbiAgc2F2ZUV4YWN0OiBmYWxzZSxcbiAgZm9yY2U6IGZhbHNlXG59O1xuXG4vKipcbiAqIFJ1bnMgbnBtIGluc3RhbGwgZm9yIHRoZSBhZGFwdGVyIHRoZW4gbW9kaWZpZXMgdGhlIGNvbmZpZy5jb21taXRpemVuIGFzIG5lZWRlZFxuICovXG5mdW5jdGlvbiBpbml0KHNoLCByZXBvUGF0aCwgYWRhcHRlck5wbU5hbWUsIHtcbiAgc2F2ZSA9IGZhbHNlLCBcbiAgc2F2ZURldiA9IHRydWUsIFxuICBzYXZlRXhhY3QgPSBmYWxzZSxcbiAgZm9yY2UgPSBmYWxzZVxufSA9IGRlZmF1bHRJbml0T3B0aW9ucykge1xuICBcbiAgLy8gRG9uJ3QgbGV0IHRoaW5ncyBtb3ZlIGZvcndhcmQgaWYgcmVxdWlyZWQgYXJncyBhcmUgbWlzc2luZ1xuICBjaGVja1JlcXVpcmVkQXJndW1lbnRzKHNoLCByZXBvUGF0aCwgYWRhcHRlck5wbU5hbWUpO1xuICBcbiAgLy8gTW92ZSB0byB0aGUgY29ycmVjdCBkaXJlY3Rvcnkgc28gd2UgY2FuIHJ1biBjb21tYW5kc1xuICBzaC5jZChyZXBvUGF0aCk7XG4gIFxuICAvLyBMb2FkIHRoZSBjdXJyZW50IGFkYXB0ZXIgY29uZmlnXG4gIGxldCBhZGFwdGVyQ29uZmlnID0gbG9hZEFkYXB0ZXJDb25maWcoKTtcbiAgXG4gIC8vIEdldCB0aGUgbnBtIHN0cmluZyBtYXBwaW5ncyBiYXNlZCBvbiB0aGUgYXJndW1lbnRzIHByb3ZpZGVkXG4gIGxldCBzdHJpbmdNYXBwaW5ncyA9IGdldE5wbUluc3RhbGxTdHJpbmdNYXBwaW5ncyhzYXZlLCBzYXZlRGV2LCBzYXZlRXhhY3QsIGZvcmNlKTtcbiAgICBcbiAgLy8gR2VuZXJhdGUgYSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBucG0gaW5zdGFsbCBjb21tYW5kXG4gIGxldCBpbnN0YWxsQWRhcHRlckNvbW1hbmQgPSBnZW5lcmF0ZU5wbUluc3RhbGxBZGFwdGVyQ29tbWFuZChzdHJpbmdNYXBwaW5ncywgYWRhcHRlck5wbU5hbWUpO1xuXG4gIC8vIENoZWNrIGZvciBwcmV2aW91c2x5IGluc3RhbGxlZCBhZGFwdGVyc1xuICBpZihhZGFwdGVyQ29uZmlnICYmIGFkYXB0ZXJDb25maWcucGF0aCAmJiBhZGFwdGVyQ29uZmlnLnBhdGgubGVuZ3RoPjApIHtcbiAgICBcbiAgICAvLyBjb25zb2xlLmxvZyhgXG4gICAgLy8gICBQcmV2aW91cyBhZGFwdGVyIGRldGVjdGVkISBcbiAgICAvLyBgKTtcbiAgICBcbiAgICBpZighZm9yY2UpIHsgXG4gICAgICBcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBcbiAgICAgIC8vICAgUHJldmlvdXMgYWRhcHRlciBkZXRlY3RlZCEgXG4gICAgICAvLyBgKTtcbiAgICAgIFxuICAgICAgdGhyb3cgJ0EgcHJldmlvdXMgYWRhcHRlciBpcyBhbHJlYWR5IGNvbmZpZ3VyZWQuIFVzZSAtLWZvcmNlIHRvIG92ZXJyaWRlJzsgIFxuICAgIH0gZWxzZSB7IC8vIE92ZXJyaWRlIGl0XG4gICAgICB0cnkge1xuICAgICAgICBleGVjdXRlU2hlbGxDb21tYW5kKHNoLCByZXBvUGF0aCwgaW5zdGFsbEFkYXB0ZXJDb21tYW5kKTtcbiAgICAgICAgYWRkUGF0aFRvQWRhcHRlckNvbmZpZyhzaCwgQ0xJX1BBVEgsIHJlcG9QYXRoLCBhZGFwdGVyTnBtTmFtZSk7IFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgfSBlbHNlIHtcbiAgICBcbiAgICAvLyBjb25zb2xlLmxvZyhgXG4gICAgLy8gICBObyBwcmV2aW91cyBhZGFwdGVyIHdhcyBkZXRlY3RlZCBcbiAgICAvLyBgKTsgXG5cbiAgICB0cnkge1xuICAgICAgXG4gICAgICBleGVjdXRlU2hlbGxDb21tYW5kKHNoLCByZXBvUGF0aCwgaW5zdGFsbEFkYXB0ZXJDb21tYW5kKTtcbiAgICAgIGFkZFBhdGhUb0FkYXB0ZXJDb25maWcoc2gsIENMSV9QQVRILCByZXBvUGF0aCwgYWRhcHRlck5wbU5hbWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZXF1aXJlZCBhcmd1bWVudHMgYXJlIHBhc3NlZFxuICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBhbnkgYXJlIG5vdC5cbiAqL1xuZnVuY3Rpb24gY2hlY2tSZXF1aXJlZEFyZ3VtZW50cyhzaCwgcGF0aCwgYWRhcHRlck5wbU5hbWUpIHtcbiAgaWYoIXNoKSB7XG4gICAgdGhyb3cgXCJZb3UgbXVzdCBwYXNzIGFuIGluc3RhbmNlIG9mIHNoZWxsanMgd2hlbiBydW5uaW5nIGluaXQuXCI7XG4gIH1cbiAgaWYoIXBhdGgpIHtcbiAgICB0aHJvdyBcIlBhdGggaXMgcmVxdWlyZWQgd2hlbiBydW5uaW5nIGluaXQuXCI7XG4gIH1cbiAgaWYoIWFkYXB0ZXJOcG1OYW1lKSB7XG4gICAgdGhyb3cgXCJUaGUgYWRhcHRlcidzIG5wbSBuYW1lIGlzIHJlcXVpcmVkIHdoZW4gcnVubmluZyBpbml0LlwiO1xuICB9XG59XG5cbi8qKlxuICogQ09ORklHXG4gKiBMb2FkcyBhbmQgcmV0dXJucyB0aGUgYWRhcHRlciBjb25maWcgYXQga2V5IGNvbmZpZy5jb21taXRpemVuLCBpZiBpdCBleGlzdHNcbiAqL1xuZnVuY3Rpb24gbG9hZEFkYXB0ZXJDb25maWcoKSB7XG4gIGxldCBjb25maWcgPSBjb25maWdMb2FkZXIubG9hZCgpO1xuICBpZihjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnOyBcbiAgfSBlbHNlIHtcbiAgICByZXR1cm47XG4gIH1cbn0iXX0= |