UNPKG

@speedy-js/mono

Version:

Monorepo development & continuous integration tooling.

104 lines 3.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCommitHashAuthorMap = exports.getCommitAuthorFromHash = exports.getCommitAuthorFromCommitHash = exports.createChangelogCommit = exports.generateChangelog = void 0; /** * Module dependencies */ const shared_1 = require("../shared"); /** * Create changelog * * @param {Boolean} isFirst first release or not. * @returns {Promise<void>} */ async function generateChangelog(cwd, isFirst = false) { await (0, shared_1.execa)(require.resolve('conventional-changelog-cli/cli.js', { paths: [process.cwd(), ...module.paths], }), ['-p', 'angular', '-i', 'CHANGELOG.md', '-s', '-r', isFirst ? '0' : '2'], { stdio: 'inherit', }); } exports.generateChangelog = generateChangelog; /** * Create a commit for changelog via a specific version. * * @param {String} version * @returns {Promise<void>} */ async function createChangelogCommit(cwd, version) { await (0, shared_1.execa)('git', ['add', '-A'], { stdio: 'inherit' }); await (0, shared_1.execa)('git', ['commit', '-m', `chore(all): ${version} changelog`], { stdio: 'inherit', }); } exports.createChangelogCommit = createChangelogCommit; /** * Get commit author from commit hash * * @param cwd * @param hash * @returns */ function getCommitAuthorFromCommitHash(cwd, hash) { const rest = shared_1.execa.sync('git', ['--no-pager', 'show', '-s', '--pretty=%an', hash], { cwd }); return rest.stdout; } exports.getCommitAuthorFromCommitHash = getCommitAuthorFromCommitHash; /** * Get commit author from commit hash * * @param cwd * @param hash * @returns */ function getCommitAuthorFromHash(cwd, hash) { try { const rest = shared_1.execa.sync('git', ['--no-pager', 'show', '-s', '--pretty=%an,%ae', hash], { cwd }); const [name, email] = rest.stdout.split(','); const emailName = email.slice(0, email.indexOf('@')); return { name, email, emailName, }; } catch (e) { return { name: 'N/A', email: 'N/A', emailName: 'N/A', }; } } exports.getCommitAuthorFromHash = getCommitAuthorFromHash; /** * Get commit author from commit hash * * @param cwd * @param hash * @returns */ function getCommitHashAuthorMap(cwd) { try { const rest = shared_1.execa.sync('git', ['--no-pager', 'log', '--pretty=%h,%an,%ae'], { cwd }); const FALLBACK = 'N/A'; const result = rest.stdout .split('\n') .reduce((memo, current) => { const [hash, name, email] = current.split(','); const emailName = email && email.slice(0, email.indexOf('@')); memo[hash.slice(0, 7)] = { name: name || FALLBACK, email: email || FALLBACK, emailName: emailName || FALLBACK, }; return memo; }, {}); return result; } catch (e) { return {}; } } exports.getCommitHashAuthorMap = getCommitHashAuthorMap; //# sourceMappingURL=helpers.js.map