unbag
Version:
一个专门用来开发npm工具的包
71 lines • 2.05 kB
JavaScript
import { useGit } from "./../../utils/git.mjs";
import { useMessage } from "./../../utils/message/index.mjs";
import { createRequire } from "node:module";
import { usePath } from "./../../utils/path.mjs";
import { loadCommitLintConfig } from "./config.mjs";
import inquirer from "inquirer";
import { useLog } from "./../../utils/log.mjs";
const require2 = createRequire(import.meta.url);
const useCommitizenCommit = async params => {
const {
finalUserConfig
} = params;
const path = usePath();
const log = useLog({
finalUserConfig
});
const commitizenPath = require2.resolve("commitizen");
log.debug({
commitizenPath
});
const commitizenCommitJsFile = path.resolve(commitizenPath, "../commitizen");
const process = require2(commitizenCommitJsFile);
return process.commit;
};
const gitCz = async params => {
const {
finalUserConfig
} = params;
const czCommit = await useCommitizenCommit({
finalUserConfig
});
const path = usePath();
const log = useLog({
finalUserConfig
});
const czCommitlintPath = require2.resolve("@commitlint/cz-commitlint");
const processJsFile = path.resolve(czCommitlintPath, "../lib/Process.js");
const process = (await import(processJsFile)).default;
const lintConfig = await loadCommitLintConfig({
finalUserConfig
});
const prompter = (inquirerIns, commit) => {
process(lintConfig.rules, lintConfig.prompt, inquirerIns).then(commit);
};
log.debug({
lintConfig
});
const message = useMessage({
locale: finalUserConfig.locale
});
const git = useGit();
const gitRootPath = await git.gitRootPathGet();
const stageFiles = await git.stageFilesGet();
log.debug({
stageFiles,
gitRootPath
});
if (stageFiles.length <= 0) {
throw new Error(message.commit.branch.stageFiles.empty());
}
czCommit(inquirer, gitRootPath, prompter, {
disableAppendPaths: true,
emitData: true,
quiet: finalUserConfig.log.disabled
}, function (error) {
if (error) {
throw error;
}
});
};
export { gitCz };