88 lines
3.1 KiB
JavaScript
88 lines
3.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.logTask = exports.parseLogOptions = void 0;
|
|
const parse_list_log_summary_1 = require("../parsers/parse-list-log-summary");
|
|
const utils_1 = require("../utils");
|
|
var excludeOptions;
|
|
(function (excludeOptions) {
|
|
excludeOptions[excludeOptions["--pretty"] = 0] = "--pretty";
|
|
excludeOptions[excludeOptions["max-count"] = 1] = "max-count";
|
|
excludeOptions[excludeOptions["maxCount"] = 2] = "maxCount";
|
|
excludeOptions[excludeOptions["n"] = 3] = "n";
|
|
excludeOptions[excludeOptions["file"] = 4] = "file";
|
|
excludeOptions[excludeOptions["format"] = 5] = "format";
|
|
excludeOptions[excludeOptions["from"] = 6] = "from";
|
|
excludeOptions[excludeOptions["to"] = 7] = "to";
|
|
excludeOptions[excludeOptions["splitter"] = 8] = "splitter";
|
|
excludeOptions[excludeOptions["symmetric"] = 9] = "symmetric";
|
|
excludeOptions[excludeOptions["multiLine"] = 10] = "multiLine";
|
|
excludeOptions[excludeOptions["strictDate"] = 11] = "strictDate";
|
|
})(excludeOptions || (excludeOptions = {}));
|
|
function prettyFormat(format, splitter) {
|
|
const fields = [];
|
|
const formatStr = [];
|
|
Object.keys(format).forEach((field) => {
|
|
fields.push(field);
|
|
formatStr.push(String(format[field]));
|
|
});
|
|
return [
|
|
fields, formatStr.join(splitter)
|
|
];
|
|
}
|
|
function userOptions(input) {
|
|
const output = Object.assign({}, input);
|
|
Object.keys(input).forEach(key => {
|
|
if (key in excludeOptions) {
|
|
delete output[key];
|
|
}
|
|
});
|
|
return output;
|
|
}
|
|
function parseLogOptions(opt = {}, customArgs = []) {
|
|
const splitter = opt.splitter || parse_list_log_summary_1.SPLITTER;
|
|
const format = opt.format || {
|
|
hash: '%H',
|
|
date: opt.strictDate === false ? '%ai' : '%aI',
|
|
message: '%s',
|
|
refs: '%D',
|
|
body: opt.multiLine ? '%B' : '%b',
|
|
author_name: '%aN',
|
|
author_email: '%ae'
|
|
};
|
|
const [fields, formatStr] = prettyFormat(format, splitter);
|
|
const suffix = [];
|
|
const command = [
|
|
`--pretty=format:${parse_list_log_summary_1.START_BOUNDARY}${formatStr}${parse_list_log_summary_1.COMMIT_BOUNDARY}`,
|
|
...customArgs,
|
|
];
|
|
const maxCount = opt.n || opt['max-count'] || opt.maxCount;
|
|
if (maxCount) {
|
|
command.push(`--max-count=${maxCount}`);
|
|
}
|
|
if (opt.from && opt.to) {
|
|
const rangeOperator = (opt.symmetric !== false) ? '...' : '..';
|
|
suffix.push(`${opt.from}${rangeOperator}${opt.to}`);
|
|
}
|
|
if (opt.file) {
|
|
suffix.push('--follow', opt.file);
|
|
}
|
|
utils_1.appendTaskOptions(userOptions(opt), command);
|
|
return {
|
|
fields,
|
|
splitter,
|
|
commands: [
|
|
...command,
|
|
...suffix,
|
|
],
|
|
};
|
|
}
|
|
exports.parseLogOptions = parseLogOptions;
|
|
function logTask(splitter, fields, customArgs) {
|
|
return {
|
|
commands: ['log', ...customArgs],
|
|
format: 'utf-8',
|
|
parser: parse_list_log_summary_1.createListLogSummaryParser(splitter, fields),
|
|
};
|
|
}
|
|
exports.logTask = logTask;
|
|
//# sourceMappingURL=log.js.map
|