UNPKG

unbag

Version:

一个专门用来开发npm工具的包

131 lines 3.08 kB
import { useLog } from "../../utils/log.mjs"; import { useMessage } from "../../utils/message/index.mjs"; import { $ } from "execa"; const ReleaseCommitConfigDefault = { addAll: false, messageFormat: async ({ finalUserConfig, bumpRes }) => { const { release } = finalUserConfig; const { scope } = release; return `release${scope?.name ? `(${scope.name})` : ``}: ${bumpRes?.version}`; }, filesCollect: async ({ finalUserConfig, bumpRes, changelogRes }) => { const { release } = finalUserConfig; const { bump: { versionFileWriteDisable, versionFilePathResolve }, changelog: { fileWriteDisable: changelogFileWriteDisable, filePathResolve: changelogFilePathResolve } } = release; const files = []; if (!versionFileWriteDisable) { if (bumpRes.oldVersion !== bumpRes.version) { const pkgFileAbsolutePath = await versionFilePathResolve({ finalUserConfig }); files.push(pkgFileAbsolutePath); } } if (!changelogFileWriteDisable) { if (changelogRes.body) { const changelogFileAbsolutePath = await changelogFilePathResolve({ finalUserConfig }); files.push(changelogFileAbsolutePath); } } return files; } }; const commit = async params => { const { finalUserConfig, bumpRes, changelogRes } = params; const log = useLog({ finalUserConfig }); const message = useMessage({ locale: finalUserConfig.locale }); log.info(message.release.commit.processing()); const { release: { dry, commit: { disable, message: commitMessage, messageFormat, filesCollect, addAll } } } = finalUserConfig; let addFiles = []; if (addAll) { log.info(message.release.commit.willCommitAll()); } else { log.info(message.release.commit.fileCollecting()); addFiles = await filesCollect({ finalUserConfig, bumpRes, changelogRes }); if (addFiles.length <= 0) { log.warn(message.release.commit.commitFilesEmpty()); return; } log.info(message.release.commit.commitFilesInfo({ files: [...addFiles] })); } const finalCommitMsg = commitMessage || (await messageFormat({ finalUserConfig, bumpRes, changelogRes, commitFiles: { ...addFiles }, addAll })); if (!finalCommitMsg) { throw new Error(message.release.commit.messageUndefined()); } log.info(message.release.commit.messageInfo({ message: finalCommitMsg })); let _disable = disable; if (dry) { _disable = true; log.warn(message.release.dry.commit.disable()); } if (_disable) { log.warn(message.release.commit.disable()); return; } if (addAll) { await $`git add .`; } else { await $`git add ${[...addFiles]}`; } await $`git commit -m ${finalCommitMsg}`; log.info(message.releaseCommitSuccess()); }; export { ReleaseCommitConfigDefault, commit };