unbag
Version:
一个专门用来开发npm工具的包
137 lines (136 loc) • 3.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.commit = exports.ReleaseCommitConfigDefault = void 0;
var _log = require("../../utils/log.cjs");
var _index = require("../../utils/message/index.cjs");
var _execa = require("execa");
const ReleaseCommitConfigDefault = exports.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 = (0, _log.useLog)({
finalUserConfig
});
const message = (0, _index.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 (0, _execa.$)`git add .`;
} else {
await (0, _execa.$)`git add ${[...addFiles]}`;
}
await (0, _execa.$)`git commit -m ${finalCommitMsg}`;
log.info(message.releaseCommitSuccess());
};
exports.commit = commit;