UNPKG

1.64 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3/* eslint-disable global-require */
4// Inspired by: https://github.com/commitizen/cz-conventional-changelog and https://github.com/commitizen/cz-cli
5
6const editor = require('editor');
7const temp = require('temp').track();
8const fs = require('fs');
9const log = require('./lib/logger');
10const buildCommit = require('./lib/build-commit');
11const readConfigFile = require('./lib/read-config-file');
12
13module.exports = {
14 prompter(cz, commit) {
15 const config = readConfigFile();
16 config.subjectLimit = config.subjectLimit || 100;
17 log.info('All lines except first will be wrapped after 100 characters.');
18
19 const questions = require('./lib/questions').getQuestions(config, cz);
20
21 cz.prompt(questions).then((answers) => {
22 if (answers.confirmCommit === 'edit') {
23 temp.open(null, (err, info) => {
24 /* istanbul ignore else */
25 if (!err) {
26 fs.writeSync(info.fd, buildCommit(answers, config));
27 fs.close(info.fd, () => {
28 editor(info.path, (code) => {
29 if (code === 0) {
30 const commitStr = fs.readFileSync(info.path, {
31 encoding: 'utf8',
32 });
33 commit(commitStr);
34 } else {
35 log.info(`Editor returned non zero value. Commit message was:\n${buildCommit(answers, config)}`);
36 }
37 });
38 });
39 }
40 });
41 } else if (answers.confirmCommit === 'yes') {
42 commit(buildCommit(answers, config));
43 } else {
44 log.info('Commit has been canceled.');
45 }
46 });
47 },
48};