cz-conventional-changelog-befe
Version:
cz adaptor for baidu BEFE
208 lines (184 loc) • 5.6 kB
JavaScript
;
var fs = require('fs');
var findUp = require('find-up');
var readPkgUp = require('read-pkg-up');
var tranz = require('tranz').default;
var tranzCommitIcafe = require('tranz-commit-icafe');
var Table = require('cli-table3');
var isPrimitive = require('is-primitive');
// const stripAnsi = require('strip-ansi')
var stringWidth = require('string-width');
var cliWidth = require('cli-width');
var tableConfig = {
chars: {
top: '',
'top-mid': '',
'top-left': '',
'top-right': '',
bottom: '',
'bottom-mid': '',
'bottom-left': '',
'bottom-right': '',
left: '',
'left-mid': '',
mid: '',
'mid-mid': '',
right: '',
'right-mid': '',
middle: ''
},
style: { 'padding-left': 0, 'padding-right': 0 }
};
function newTable(config) {
return new Table(Object.assign({}, tableConfig, config));
}
function rightPadTypes(tObj, tkeys, lang) {
var emptyString = getLanguage(lang) === 'zh' ? ' ' : ' ';
var table = newTable({ colWidths: [12] });
var list = tkeys.map(function (key) {
table.push([key + ':', tObj[key].description]);
return {
object: tObj[key],
value: key
};
});
var lines = table.toString().split('\n');
return list.map(function (d, i) {
return {
name: trimRight(sliceString(lines[i], cliWidth() - 4)),
value: d.value
};
});
}
var LANGUAGE_MAP = {
zh: 'zh_cn',
zh_cn: 'zh_cn',
en: 'en_us',
en_us: 'en_us'
};
function getGitRootPath() {
var gitPath = findUp.sync('.git');
if (gitPath && fs.statSync(gitPath).isDirectory()) {
return gitPath;
}
return gitPath;
}
// 给tiny-i18n map 参数
function getLanguage(language) {
var lang = (language + '').toLowerCase();
return LANGUAGE_MAP[lang] || 'zh_cn';
}
// 拿到 package.json 中的配置
function getPackageJsonConfigs(cwd) {
var _ref = readPkgUp.sync({ normalize: true, cwd: cwd }) || {},
_ref$pkg = _ref.pkg,
pkg = _ref$pkg === undefined ? {} : _ref$pkg;
return pkg;
}
function issuesFormat(spaceId, message) {
return tranz(message, [tranzCommitIcafe({ spaceId: spaceId, readPkg: false })]);
}
function getVal(val) {
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref2$keyName = _ref2.keyName,
keyName = _ref2$keyName === undefined ? 'name' : _ref2$keyName;
if (val && val.hasOwnProperty && val.hasOwnProperty(keyName)) {
val = val[keyName];
}
if (val == null) {
val = '';
}
if (isPrimitive(val) || Array.isArray(val) && val.every(isPrimitive)) {
return val;
}
if (Array.isArray(val)) {
val = val.map(function (v) {
return getVal(v, { keyName: keyName });
});
}
return val;
}
function simplifyData() {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref3$flattenKeys = _ref3.flattenKeys,
flattenKeys = _ref3$flattenKeys === undefined ? [] : _ref3$flattenKeys,
_ref3$rollbackKeys = _ref3.rollbackKeys,
rollbackKeys = _ref3$rollbackKeys === undefined ? [] : _ref3$rollbackKeys,
_ref3$defaultKeyName = _ref3.defaultKeyName,
defaultKeyName = _ref3$defaultKeyName === undefined ? 'name' : _ref3$defaultKeyName;
function find(array, value) {
return array.find(function (x) {
if (typeof x === 'string') {
return x === value;
}
return x && x.name === value;
});
}
var newData = {};
for (var key in data) {
if (data.hasOwnProperty(key)) {
var val = data[key];
var tmp = void 0;
if (tmp = find(flattenKeys, key)) {
(function () {
var keyName = tmp && tmp.valueKey ? tmp.valueKey : defaultKeyName;
if (Array.isArray(val)) {
val = val.map(function (v) {
return getVal(v, { keyName: keyName });
});
} else {
val = getVal(val, { keyName: keyName });
}
})();
}
if (tmp = find(rollbackKeys, key)) {
(function () {
var keyName = tmp && tmp.valueKey ? tmp.valueKey : defaultKeyName;
val.forEach(function (v) {
newData[v.propertyName] = getVal(v, { keyName: keyName });
});
})();
} else {
newData[key] = getVal(val, { keyName: defaultKeyName });
}
}
}
return newData;
}
function sliceString(string, maxLen) {
var _ref4 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
_ref4$deltaLen = _ref4.deltaLen,
deltaLen = _ref4$deltaLen === undefined ? 0 : _ref4$deltaLen;
// let string = string
var ellipsis = '…';
var ellipsisLen = stringWidth(ellipsis);
var isSliced = false;
while (deltaLen + stringWidth(string) > maxLen - (string.endsWith(ellipsis) ? 0 : ellipsisLen)) {
isSliced = true;
if (/\s$/.test(string)) {
string = trimRight(string);
} else {
string = string.slice(0, -1);
}
}
if (isSliced && !string.endsWith(ellipsis)) {
string = string + ellipsis;
}
return string; // .slice(0, maxLen)
}
function trimRight(str) {
return str.replace(/\s+$/, '');
}
module.exports = {
sliceString: sliceString,
trimRight: trimRight,
getPackageJsonConfigs: getPackageJsonConfigs,
rightPadTypes: rightPadTypes,
getLanguage: getLanguage,
getGitRootPath: getGitRootPath,
getVal: getVal,
simplifyData: simplifyData,
issuesFormat: issuesFormat,
newTable: newTable
};