tcr-cli
Version:
A TCR (Test Commit Revert) command line utility for making it easier to develop through tcr
36 lines (30 loc) • 1.14 kB
JavaScript
const JsDiff = require('diff');
const stripAnsi = require('strip-ansi');
const { getFileContents } = require('../file');
const { getCurrentTestFile, getPreviousTestFile } = require('../common');
const byNotExcludedMessages = (excludeRegexs) => (part) => {
return excludeRegexs.filter((regex) => part.match(regex)).length === 0;
};
const getPartsFrom = (diff) => {
const result = [];
diff.forEach((part) => {
if (part.added) {
result.push(...stripAnsi(part.value).split('\n'));
}
});
return result;
};
const getCommitMessagePartsFromDiff = (options) => {
const currentFile = getCurrentTestFile(options);
const previousFile = getPreviousTestFile(options);
const diff = JsDiff.diffLines(
getFileContents(previousFile),
getFileContents(currentFile),
{ ignoreWhitespace: true, newlineIsToken: false });
return getPartsFrom(diff);
};
const getCommitMessageFromDiff = (options) => {
const parts = getCommitMessagePartsFromDiff(options);
return parts.filter(byNotExcludedMessages(options.excludeMessageCommit)).join('\n');
};
module.exports.getCommitMessageFromDiff = getCommitMessageFromDiff;