unbag
Version:
一个专门用来开发npm工具的包
92 lines • 1.94 kB
JavaScript
import { useLog } from "./../../utils/log.mjs";
import { useMessage } from "./../../utils/message/index.mjs";
import { $ } from "execa";
import { useTagPrefix } from "./utils.mjs";
const ReleaseTagConfigDefault = {
genPrefix: ({
finalUserConfig
}) => {
const {
release: {
scope
}
} = finalUserConfig;
if (scope?.name) {
return `${scope.name}@`;
}
return "v";
},
messageFormat: ({
finalUserConfig,
changelogRes,
bumpRes
}) => {
const {
release
} = finalUserConfig;
const {
scope
} = release;
return `release${scope?.name ? `(${scope.name})` : ``}: ${bumpRes?.version}`;
}
};
const tag = async params => {
const {
finalUserConfig,
bumpRes,
changelogRes
} = params;
const log = useLog({
finalUserConfig
});
const message = useMessage({
locale: finalUserConfig.locale
});
log.info(message.release.tag.processing());
const {
release: {
dry,
tag: {
force,
messageFormat,
disable
}
}
} = finalUserConfig;
const prefix = await useTagPrefix({
finalUserConfig
});
log.info(message.release.tag.prefix({
prefix
}));
const tagName = `${prefix}${bumpRes.version}`;
log.info(message.release.tag.name({
name: tagName
}));
const tagMessage = await messageFormat({
finalUserConfig,
changelogRes,
bumpRes
});
log.info(message.release.tag.message({
message: tagMessage
}));
let _disable = disable;
if (dry) {
_disable = true;
log.warn(message.release.dry.tag.disable());
}
if (_disable) {
log.warn(message.releaseTagDisable());
return;
}
if (force) {
log.warn(message.release.tag.force());
}
await $`git tag -a ${tagName} ${force ? ["-f"] : []} -m ${tagMessage}`;
log.info(message.releaseTagAddSuccess({
tagMessage,
tagName
}));
};
export { ReleaseTagConfigDefault, tag };