code-genius
Version:
CodeGenius's command line tools
4 lines (3 loc) • 11.9 kB
JavaScript
;const m=require("node:fs"),p=require("node:path"),r=require("node:process"),node_url=require("node:url"),c$1=require("execa"),kolorist=require("kolorist"),s=require("enquirer"),i=require("simple-update-notifier"),y=require("ajv"),r$1=require("fs-extra");function _interopDefaultCompat(e){return e&&typeof e=="object"&&"default"in e?e.default:e}const m__default=_interopDefaultCompat(m),p__default=_interopDefaultCompat(p),r__default=_interopDefaultCompat(r),c__default=_interopDefaultCompat(c$1),s__default=_interopDefaultCompat(s),i__default=_interopDefaultCompat(i),y__default=_interopDefaultCompat(y),r__default$1=_interopDefaultCompat(r$1),eslintGlob=["./src"],ACTIVATION=process.env.CG_DEBUG==="activation",gitCommitTypes=[{emoji:"\u{1F389}",code:"feat",description:"\u589E\u52A0\u65B0\u529F\u80FD/\u7279\u6027"},{emoji:"\u{1F41B}",code:"fix",description:"\u4FEE\u590Dbug"},{emoji:"\u{1F4DA}",code:"docs",description:"\u66F4\u65B0\u6587\u6863"},{emoji:"\u{1F680}",code:"perf",description:"\u6027\u80FD\u4F18\u5316"},{emoji:"\u2728",code:"refactor",description:"\u91CD\u6784\u4EE3\u7801"},{emoji:"\u{1F3A8}",code:"style",description:"\u8C03\u6574\u4EE3\u7801\u683C\u5F0F/\u6837\u5F0F"},{emoji:"\u{1F6A7}",code:"build",description:"\u6784\u5EFA\u76F8\u5173\u7684\u4FEE\u6539"},{emoji:"\u{1F527}",code:"chore",description:"\u6742\u9879/\u7410\u788E\u4EFB\u52A1\u7684\u4FEE\u6539"},{emoji:"\u{1F485}",code:"ci",description:"\u6301\u7EED\u96C6\u6210\u76F8\u5173\u7684\u4FEE\u6539"},{emoji:"\u2705",code:"test",description:"\u6DFB\u52A0/\u4FEE\u6539\u6D4B\u8BD5"}],gitCommitScopes=[{name:"app",description:"\u5E94\u7528\u6574\u4F53"},{name:"core",description:"\u6838\u5FC3\u6A21\u5757"},{name:"feature",description:"\u5177\u4F53\u529F\u80FD\u6A21\u5757"},{name:"docs",description:"\u6587\u6863"},{name:"test",description:"\u6D4B\u8BD5\u76F8\u5173"},{name:"config",description:"\u914D\u7F6E\u6587\u4EF6"},{name:"build",description:"\u6784\u5EFA\u8FC7\u7A0B"},{name:"ui",description:"\u7528\u6237\u754C\u9762"}],defaultCommands=[{display:"version",command:"--version",description:"\u67E5\u770B\u7248\u672C\u53F7"},{display:"help",command:"--help",description:"\u67E5\u770B\u5E2E\u52A9\u4FE1\u606F"}],DEFAULT_CONFIG_FILES=["codeg.config.js","codeg.config.mjs"],loggerInfo=e=>{ACTIVATION&&console.log(kolorist.blue("[CODEG INFO HINT]:"),e)},loggerWarring=e=>{ACTIVATION&&console.log(kolorist.yellow("[CODEG WARRING HINT]:"),e)},loggerSuccess=e=>{ACTIVATION&&console.log(kolorist.green("[CODEG SUCCESS HINT]:"),e)},loggerError=e=>{ACTIVATION&&console.log(kolorist.red("[CODEG ERROR HINT]:"),e)},printInfo=e=>{console.log(kolorist.blue("[CODEG INFO HINT]:"),e)},printWarring=e=>{console.log(kolorist.yellow("[CODEG WARRING HINT]:"),e)},printSuccess=e=>{console.log(kolorist.green("[CODEG SUCCESS HINT]:"),e)},printError=e=>{console.log(kolorist.red("[CODEG ERROR HINT]:"),e)},name="code-genius",version="0.4.36",description="CodeGenius's command line tools",author={name:"OSpoon",email:"zxin088@gmail.com",url:"https://github.com/OSpoon"},license="MIT",homepage="https://github.com/FE-CodeGenius/CodeGenius#readme",repository={type:"git",url:"git+https://github.com/FE-CodeGenius/CodeGenius.git"},bugs={url:"https://github.com/FE-CodeGenius/CodeGenius/issues"},publishConfig={registry:"https://registry.npmjs.org"},exports$1={".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},main="dist/index.cjs",module$1="dist/index.mjs",types="dist/index.d.ts",bin={cg:"./bin/codeGenius.mjs",codeg:"./bin/codeGenius.mjs","code-genius":"./bin/codeGenius.mjs"},files=["bin","dist"],engines={node:">=14.17"},scripts={prepare:"npx codeg hooks",build:"unbuild",stub:"unbuild --stub",release:"dotenv release-it --ci"},keywords=["CodeGenius","codeGenius","Genius","genius","CLI","cli"],devDependencies={"@release-it/conventional-changelog":"^7.0.1","@types/eslint":"^8.44.3","@types/execa":"^2.0.0","@types/fs-extra":"^11.0.2","@types/node":"^20.6.2","@types/rimraf":"^4.0.5","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0","code-genius":".","cross-env":"^7.0.3","dotenv-cli":"^7.3.0","eslint-plugin-simple-import-sort":"^10.0.0",esno:"^0.17.0","release-it":"^16.1.5","simple-git-hooks":"^2.9.0",typescript:"^5.1.6",unbuild:"^2.0.0-rc.0"},dependencies={"@codegenius/clear-plugin":"^0.0.7","@codegenius/create-plugin":"^0.0.3","@codegenius/depcheck-plugin":"^0.0.3","@codegenius/format-plugin":"^0.0.4","@codegenius/git-user-plugin":"^0.0.3","@codegenius/hooks-plugin":"^0.1.1","@codegenius/impsort-plugin":"^0.0.4","@codegenius/lighthouse-plugin":"^0.0.2","@codegenius/quantity-plugin":"^0.0.2","@codegenius/registry-plugin":"^0.0.3","@codegenius/template-plugin":"^0.0.3","@codegenius/verify-plugin":"^0.0.2",ajv:"^8.12.0",cac:"^6.7.14",enquirer:"^2.4.1",eslint:"^8.50.0",execa:"^5.1.1","fs-extra":"^11.1.1",kolorist:"^1.8.0","simple-update-notifier":"^2.0.0"},c={name,version,description,author,license,homepage,repository,bugs,publishConfig,exports:exports$1,main,module:module$1,types,bin,files,engines,scripts,keywords,devDependencies,dependencies,"simple-git-hooks":{"pre-commit":"npx esno scripts/lint-script.ts","commit-msg":"npx codeg verify"}},root=async e=>{i__default({pkg:c});const t=e.map(({display:u,command:n,description:a})=>{const l=`${u||n}`.padEnd(15);return{name:n,message:`${l}${a}`}}),o=await s__default.prompt([{name:"command",type:"select",message:"\u8BF7\u9009\u62E9\u5F85\u6267\u884C\u7684 CodeG \u547D\u4EE4",choices:t}]);await execCommand("codeg",o.command.split(" "),{stdio:"inherit"})};function d(e){return{name:"rootInstaller",setup:t=>{t.command("[root]","\u542F\u52A8 CodeGenius \u547D\u4EE4\u884C\u9009\u9879\u6A21\u5F0F ").alias("start").alias("dev").action(async()=>{await root(e)})}}}const execCommand=async(e,t,o)=>(await c__default(e,t,o))?.stdout?.trim()||"";function handleError(e){e&&printError(e.message),r__default.exit(1)}const defineConfig=e=>e;async function loadConfigModule(){let e;for(const t of DEFAULT_CONFIG_FILES){const o=p__default.resolve(r__default.cwd(),t);if(m__default.existsSync(o)){e=o;break}}return e?(await import(node_url.pathToFileURL(e).href)).default:void 0}async function setup(e,t){const o=await loadConfigModule(),u=[],n=t.map(a=>a(o?.commands));for(const a of n.concat(o?.plugins||[]))a.command&&a.describe&&u.push({display:a.name||a.command,command:a.command,description:a.describe}),a.setup(e);d(u.concat(defaultCommands)).setup(e)}const eslintFix=async e=>{ACTIVATION&&loggerInfo(`eslintFix \u53C2\u6570\u4FE1\u606F:
${e}`);try{await execCommand("npx",["eslint","--fix",...e],{stdio:"inherit"}),printInfo("\u4EE3\u7801\u5DF2\u901A\u8FC7 eslint \u6821\u9A8C")}catch(t){printError("\u4EE3\u7801\u672A\u901A\u8FC7 eslint \u6821\u9A8C"),loggerError(t),process.exit(1)}};function x(e){const{fix:t}=e||{};return{name:"fix",describe:"\u8FD0\u884C eslint \u9759\u6001\u626B\u63CF\u548C\u4FEE\u590D\u4EE3\u7801\u4E2D\u5B58\u5728\u7684\u95EE\u9898",command:"fix",setup:o=>{o.command("fix","\u8FD0\u884C eslint \u9759\u6001\u626B\u63CF\u548C\u4FEE\u590D\u4EE3\u7801\u4E2D\u5B58\u5728\u7684\u95EE\u9898").option("-p, --pattern <pattern>","\u8BBE\u7F6E\u5339\u914D\u89C4\u5219").action(async u=>{let n=t?.paths||eslintGlob;const{pattern:a}=u;a&&(n=typeof a=="string"?[a]:a),await eslintFix(n)})}}}const $={type:"object",properties:{type:{type:"string"},scope:{type:"string"},description:{type:"string"}},required:["type","scope","description"]},h=async(e,t)=>{const o=e.map(({emoji:a,code:l,description:g})=>{const E=`${l}:`.padEnd(20);return{name:`${a} ${l}`,message:`${a}${E}${g}`}}),u=t.map(({name:a,description:l})=>{const g=`${a}:`.padEnd(20);return{name:a,message:`${g.padEnd(20)} ${l}`}}),n=await s__default.prompt([{name:"type",type:"select",message:"\u8BF7\u9009\u62E9\u63D0\u4EA4\u7C7B\u578B",choices:o},{name:"scope",type:"select",message:"\u8BF7\u9009\u62E9\u63D0\u4EA4\u8303\u56F4",choices:u},{name:"description",type:"text",message:"\u8BF7\u8F93\u5165\u63D0\u4EA4\u63CF\u8FF0",required:!0},{name:"emoji",type:"confirm",message:"\u8981\u5728\u63D0\u4EA4\u4FE1\u606F\u4E2D\u663E\u793A\u5185\u7F6E\u7684 emoji \u8868\u60C5\u5417?"}]);return{type:n.emoji?n.type:n.type.split(" ")[1],scope:n.scope,description:n.description}},gitCommit=async(e,t,o)=>{ACTIVATION&&loggerInfo(`gitCommit \u53C2\u6570\u4FE1\u606F:
${JSON.stringify({type:e,scope:t,description:o})}`);const u=new y__default().compile($);if(!u({type:e,scope:t,description:o})&&u.errors&&u.errors?.length>0)throw new Error(u.errors[0].message);await execCommand("git",["commit","-m",`${e}(${t}): ${o}`],{stdio:"inherit"})};function w(e){const{commit:t}=e||{};return{name:"commit",describe:"\u751F\u6210 angualr \u89C4\u8303\u7684\u63D0\u4EA4\u4FE1\u606F",command:"commit --ask",setup:o=>{o.command("commit","\u751F\u6210 angualr \u89C4\u8303\u7684\u63D0\u4EA4\u4FE1\u606F").option("-t, --type <type>","\u6DFB\u52A0\u4FEE\u6539\u7C7B\u578B").option("-s, --scope <scope>","\u586B\u5199\u4FEE\u6539\u8303\u56F4").option("-d, --description <description>","\u586B\u5199\u4FEE\u6539\u63CF\u8FF0").option("-a, --ask","\u542F\u7528\u8BE2\u95EE\u6A21\u5F0F").action(async u=>{const{type:n,scope:a,description:l,ask:g}=u,E=t?.gitCommitTypes||gitCommitTypes,C=t?.gitCommitScopes||gitCommitScopes;if(g){const F=await h(E,C);await gitCommit(F.type,F.scope,F.description)}else await gitCommit(n,a,l)})}}}function genScriptConfig(e){return Object.keys(e).map(t=>({command:e[t],display:t,description:"description the function of this cmd command"}))}function syncScripts(e,t){const o=[...t];for(const u of e){const n=o.find(a=>a.command===u.command);n?n.display!==u.display&&(n.display=u.display):o.push(u)}return o.filter(u=>e.find(n=>n.command===u.command))}const generateScripts=async()=>{const e=await r__default$1.readJSONSync(p__default.join(process.cwd(),"package.json"));let t=genScriptConfig(e.scripts);const o=p__default.join(process.cwd(),"scripts.config.json");if(m__default.existsSync(o)){const{scripts:u}=await r__default$1.readJSONSync(o);t=syncScripts(t,u)}await r__default$1.outputFileSync(o,JSON.stringify({scripts:t},null,2)),printInfo("\u4EE3\u7406\u811A\u672C scripts.config.json \u5DF2\u5B8C\u6210\u540C\u6B65")};async function scriptRun(){const{scripts:e}=r__default$1.readJsonSync(p__default.join(process.cwd(),"scripts.config.json")),t=e.map(u=>{const n=`${u.display}`.padEnd(15);return{name:u.command,message:`${n} ${u.description}`}}),o=await s__default.prompt([{name:"script",type:"select",message:"\u8BF7\u9009\u62E9\u9879\u76EE\u8FD0\u884C\u811A\u672C",choices:t}]);if(o.script){const u=o.script.split("&&").map(n=>n.trim());for(const n of u)if(n.startsWith("npx")){const a=n.split(" ")[0],l=n.split(" ").slice(1);await execCommand(a,l,{stdio:"inherit"})}else await execCommand("npx",n.split(" "),{stdio:"inherit"})}}function f(){return{name:"script",describe:"\u4EE3\u7406\u8FD0\u884C package.scripts \u811A\u672C",command:"script",setup:e=>{e.command("script","\u4EE3\u7406\u8FD0\u884C package.scripts \u811A\u672C").action(async()=>{await generateScripts(),await scriptRun()})}}}const plugins=[w,x,f];exports.ACTIVATION=ACTIVATION,exports.DEFAULT_CONFIG_FILES=DEFAULT_CONFIG_FILES,exports.c=c,exports.defaultCommands=defaultCommands,exports.defineConfig=defineConfig,exports.eslintFix=eslintFix,exports.eslintGlob=eslintGlob,exports.execCommand=execCommand,exports.gitCommit=gitCommit,exports.gitCommitScopes=gitCommitScopes,exports.gitCommitTypes=gitCommitTypes,exports.handleError=handleError,exports.loadConfigModule=loadConfigModule,exports.loggerError=loggerError,exports.loggerInfo=loggerInfo,exports.loggerSuccess=loggerSuccess,exports.loggerWarring=loggerWarring,exports.plugins=plugins,exports.printError=printError,exports.printInfo=printInfo,exports.printSuccess=printSuccess,exports.printWarring=printWarring,exports.setup=setup;