@nuofe/ndk-commit-tool
Version:
Commit tool for Nuo FE.
90 lines (77 loc) • 2.57 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ndkLogger = _interopRequireDefault(require("@nuofe/ndk-logger"));
var _inquirer = _interopRequireDefault(require("inquirer"));
const {
prompt,
Separator
} = _inquirer.default;
const debug = _ndkLogger.default.debug('ndk-commit-tool:message:generate');
const COMMIT_TYPES = {
feat: '添加新功能(需要升级版本号 y 位)',
break: '变更功能(需要升级版本号 x 位)',
fix: '修复缺陷(需要升级版本号 z 位)',
docs: '增加或修改文档',
style: '调整代码格式',
refactor: '重构代码(不会对现有功能产生影响)',
perf: '优化性能(不会对现有功能产生影响)',
test: '增加或修改测试',
chore: '调整构建过程或辅助工具'
};
const getCommitType = async () => {
const choices = Object.entries(COMMIT_TYPES).map(([key, value]) => ({
name: `${key}: ${value}`,
value: key
}));
const {
commitType
} = await prompt({
type: 'list',
name: 'commitType',
message: '请选择提交类型:',
choices: choices.concat(new Separator())
});
return commitType;
};
const getCommitMessage = async () => {
const {
commitMessage
} = await prompt({
type: 'input',
name: 'commitMessage',
message: '请输入5个字符以上的提交说明:',
validate: value => !value || value.trim().length < 5 ? '提交说明不能少于5个字!' : true
});
return commitMessage ? commitMessage.trim() : '';
};
const getIssues = async () => {
const {
issues
} = await prompt({
type: 'input',
name: 'issues',
message: '请输入涉及的 issues (多个用逗号分隔,如: #123, #456 ):',
filter: value => value ? value.split(',').map(item => item.trim()).join(', ') : '',
validate: value => {
if (value) {
const mistake = value.split(',').filter(item => !/^#\d+$/.test(item.trim()));
return mistake && mistake.length > 0 ? '输入的内容不正确!' : true;
}
return true;
}
});
return issues ? issues.trim() : '';
};
var _default = async () => {
const commitType = await getCommitType();
const commitMessage = await getCommitMessage();
const issues = await getIssues();
const message = `${commitType}: ${commitMessage}${issues ? ` ${issues}` : ''}`;
debug('message: %s', message);
return message;
};
exports.default = _default;