UNPKG

@commitlint/read

Version:

Read commit messages from a specified range or last edit

53 lines 1.93 kB
import minimist from 'minimist'; import { getHistoryCommits } from './get-history-commits.js'; import { getEditCommit } from './get-edit-commit.js'; import { x } from 'tinyexec'; // Get commit messages export default async function getCommitMessages(settings) { const { cwd, fromLastTag, to, last, edit, gitLogArgs } = settings; let from = settings.from; if (edit) { return getEditCommit(cwd, edit); } if (last) { const gitCommandResult = await x('git', ['log', '-1', '--pretty=format:%B'], { nodeOptions: { cwd } }); let output = gitCommandResult.stdout.trim(); // strip output of extra quotation marks ("") if (output[0] == '"' && output[output.length - 1] == '"') output = output.slice(1, -1); return [output]; } if (!from && fromLastTag) { const output = await x('git', [ 'describe', '--abbrev=40', '--always', '--first-parent', '--long', '--tags', ], { nodeOptions: { cwd } }); const stdout = output.stdout.trim(); if (stdout.length === 40) { // Hash only means no last tag. Use that as the from ref which // results in a no-op. from = stdout; } else { // Description will be in the format: <tag>-<count>-g<hash> // Example: v3.2.0-11-g9057371a52adaae5180d93fe4d0bb808d874b9fb // Minus zero based (1), dash (1), "g" prefix (1), hash (40) = -43 const tagSlice = stdout.lastIndexOf('-', stdout.length - 43); from = stdout.slice(0, tagSlice); } } let gitOptions = { from, to }; if (gitLogArgs) { gitOptions = { ...minimist(gitLogArgs.split(' ')), from, to, }; } return getHistoryCommits(gitOptions, { cwd }); } //# sourceMappingURL=read.js.map