"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