UNPKG

git-release-manager

Version:

A tool to generate release notes from git commit history

50 lines 2.01 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.listCommitsAsync = listCommitsAsync; exports.getGitLogAsJson = getGitLogAsJson; const regexHandlers_1 = require("./regexHandlers"); const simple_git_1 = __importDefault(require("simple-git")); const _1 = require("."); const cmd_1 = require("../../../utils/cmd"); async function listCommitsAsync(range, config) { const commits = await getGitLogAsJson(range); const commitMessageRegex = (0, regexHandlers_1.createCommitMessageRegex)(config.commitTypes); if (!commitMessageRegex) { return []; } const filteredCommits = commits.filter(commit => commitMessageRegex.test(commit.message)); const commitList = await Promise.all(filteredCommits.map(async (commit) => { const parsedCommit = await (0, _1.enrichCommit)(commit, config); const { stdout: filesOutput } = await (0, cmd_1.execWithErrorHandling)(`git log --pretty=format:"" --no-commit-id --name-only -r ${parsedCommit.raw.hash}`); const files = filesOutput.split('\n').filter(Boolean); return { ...parsedCommit, files, }; })); return commitList; } async function getGitLogAsJson(range = null) { const git = (0, simple_git_1.default)(); try { const log = range ? await git.log([range]) : await git.log(); const jsonArray = log.all.map(commit => ({ hash: commit.hash, shortHash: commit.hash.substring(0, 7), message: commit.message, body: commit.body, authorName: commit.author_name, authorEmail: commit.author_email, date: commit.date, })); return jsonArray; } catch (error) { console.error('Error fetching git log:', error); return []; } } //# sourceMappingURL=commitProcessor.js.map