| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | "format cjs";var wrap = require('word-wrap');var map = require('lodash.map');var longest = require('longest');var rightPad = require('right-pad');// This can be any kind of SystemJS compatible module.// We use Commonjs here, but ES6 or AMD would do just// fine.module.exports = function (options) {  var types = options.types;  var length = longest(Object.keys(types)).length + 1;  var choices = map(types, function (type, key) {    return {      name: rightPad(key + ':', length) + ' ' + type.description,      value: key    };  });  return {    // When a user runs `git cz`, prompter will    // be executed. We pass you cz, which currently    // is just an instance of inquirer.js. Using    // this you can ask questions and get answers.    //    // The commit callback should be executed when    // you're ready to send back a commit template    // to git.    //    // By default, we'll de-indent your commit    // template and will keep empty lines.    prompter: function(cz, commit) {      console.log('\nLine 1 will be cropped at 100 characters. All other lines will be wrapped after 100 characters.\n');      // Let's ask some questions of the user      // so that we can populate our commit      // template.      //      // See inquirer.js docs for specifics.      // You can also opt to use another input      // collection library if you prefer.      cz.prompt([        {          type: 'list',          name: 'type',          message: 'Select the type of change that you\'re committing:',          choices: choices        }, {          type: 'input',          name: 'scope',          message: 'Denote the scope of this change ($location, $browser, $compile, etc.):\n'        }, {          type: 'input',          name: 'subject',          message: 'Write a short, imperative tense description of the change:\n'        }, {          type: 'input',          name: 'body',          message: 'Provide a longer description of the change:\n'        }, {          type: 'input',          name: 'footer',          message: 'List any breaking changes or issues closed by this change:\n'        }      ]).then(function(answers) {        var maxLineWidth = 100;        var wrapOptions = {          trim: true,          newline: '\n',          indent:'',          width: maxLineWidth        };        // parentheses are only needed when a scope is present        var scope = answers.scope.trim();        scope = scope ? '(' + answers.scope.trim() + ')' : '';        // Hard limit this line        var head = (answers.type + scope + ': ' + answers.subject.trim()).slice(0, maxLineWidth);        // Wrap these lines at 100 characters        var body = wrap(answers.body, wrapOptions);        var footer = wrap(answers.footer, wrapOptions);        commit(head + '\n\n' + body + '\n\n' + footer);      });    }  };};
 |