@speedy-js/mono
Version:
Monorepo development & continuous integration tooling.
104 lines • 3.13 kB
JavaScript
;
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