@66rpg/cgmaker-create 0.1.15 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/dist/index.js +14 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,8 +7,13 @@ npx @66rpg/cgmaker-create@latest <template_id> [目录] [data_id]
|
|
|
7
7
|
npx @66rpg/cgmaker-create@latest <template_id> [目录] --data-id <data_id>
|
|
8
8
|
npx @66rpg/cgmaker-create@latest <template_id> [目录] --skill-platform cursor
|
|
9
9
|
npx @66rpg/cgmaker-create@latest <template_id> [目录] --skill-all
|
|
10
|
+
npx @66rpg/cgmaker-create@latest --agent --json <template_id> my-game --skill-platform cursor
|
|
10
11
|
```
|
|
11
12
|
|
|
12
13
|
只要字符串 `template_id`(可 `@version_name`),不要 `owner/slug`。
|
|
13
14
|
|
|
14
|
-
未传 `data_id`
|
|
15
|
+
未传 `data_id` 且在交互终端里时,会列出该模板版本可下载的资源包,选序号或 `data_id`(`0` 表示不下载资源)。已传第三参数 / `--data-id` 则跳过列表。无 TTY(脚本)时沿用该版本默认绑定包。未指定 `--skill-platform` / `--skill-all` 时:交互会询问扇出到哪个 Agent(回车无效,跳过须输入 `s`),脚本默认不扇出。`--agent` 下缺目录或 skill 会退出 11,按信封问用户。已有工程补扇:`npx cgmaker skill --platform cursor` 或 `--all`。
|
|
16
|
+
|
|
17
|
+
TTY 若检测到新版本会询问是否更新。Agent 退出码 10;同意后用信封里的 `data.apply`(空目录改用 `@latest` 重跑)。`--skip-update` 跳过询问。
|
|
18
|
+
|
|
19
|
+
暂无云端种子时用 `--from-dir`。`--from-dir` 写出的 origin 为 `local`,不能 `publish-template`。
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import d from"node:fs";import p from"node:path";import oe from"node:readline";import{fileURLToPath as ce}from"node:url";import{spawnSync as ae}from"node:child_process";import{spawnSync as Y}from"node:child_process";var M={_comment:"cgmaker-create \u7528\u6237\u53EF\u89C1\u6587\u6848\u3002\u5360\u4F4D\u7B26 {name}\u3002",help:{body:{code:"",text:`cgmaker-create \u2014 \u4ECE\u6258\u7BA1\u6A21\u677F\u521B\u5EFA\u5E26\u5B8C\u6574\u6E90\u7801\u7684\u6E38\u620F\u5DE5\u7A0B
|
|
2
2
|
|
|
3
3
|
\u7528\u6CD5:
|
|
4
4
|
npx @66rpg/cgmaker-create@latest <template_id> [\u76EE\u5F55] [data_id]
|
|
@@ -9,13 +9,19 @@ import c from"node:fs";import o from"node:path";import b from"node:readline";imp
|
|
|
9
9
|
|
|
10
10
|
template_id \u662F\u5E73\u53F0\u5B57\u7B26\u4E32 id\uFF08\u5B57\u6BCD\u6570\u5B57\uFF09\uFF0C\u53EF\u5E26 @version_name\u3002\u4E0D\u8981\u7528 owner/slug\u3002
|
|
11
11
|
data_id \u4E3A\u8BE5\u6A21\u677F\u4E0B\u7684\u8D44\u6E90\u5305 id\uFF1BTTY \u4E0B\u672A\u4F20\u65F6\u4F1A\u5217\u51FA\u53EF\u4E0B\u8F7D\u7248\u672C\u4F9B\u9009\u62E9\u3002\u4E5F\u53EF\u7528 --data-id\u3002
|
|
12
|
-
\u672A\u6307\u5B9A skill \u65F6\uFF1A\u4EA4\u4E92\u7EC8\u7AEF\u4F1A\u8BE2\u95EE\u6247\u51FA\u5230\u54EA\u4E2A Agent\uFF08\u56DE\u8F66\u65E0\u6548\uFF0C\u8DF3\u8FC7\u987B\u8F93\u5165 s\uFF1B\u4E4B\u540E\u53EF\u5728\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C cgmaker skill\uFF09\uFF1B\u811A\u672C\u73AF\u5883\u9ED8\u8BA4\u4E0D\u6247\u51FA\u3002
|
|
12
|
+
\u672A\u6307\u5B9A skill \u65F6\uFF1A\u4EA4\u4E92\u7EC8\u7AEF\u4F1A\u8BE2\u95EE\u6247\u51FA\u5230\u54EA\u4E2A Agent\uFF08\u56DE\u8F66\u65E0\u6548\uFF0C\u8DF3\u8FC7\u987B\u8F93\u5165 s\uFF1B\u4E4B\u540E\u53EF\u5728\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C cgmaker skill\uFF09\uFF1B\u811A\u672C\u73AF\u5883\u9ED8\u8BA4\u4E0D\u6247\u51FA\u3002Agent \u8BF7\u52A0 --agent --json\uFF1A\u7F3A\u53C2/\u65B0\u7248\u672C\u4F1A\u505C\u4E0B\u8BA9\u5BF9\u8BDD\u8BE2\u95EE\u7528\u6237\u3002
|
|
13
13
|
--skill-platform \u53EA\u6247\u51FA\u5230\u8BE5\u5E73\u53F0\uFF08\u5982 cursor\uFF09\uFF1B--skill-all \u6247\u51FA\u5230\u5168\u90E8\u5E73\u53F0\u3002\u5DF2\u6709\u5DE5\u7A0B\u8865\u6247\u7528 npx cgmaker skill --platform cursor \u6216 --all\u3002
|
|
14
|
-
\u6682\u65E0\u4E91\u7AEF\u6A21\u677F\u79CD\u5B50\u65F6\uFF0C\u7528 --from-dir \
|
|
15
|
-
`,comment:"\u6574\u6BB5 --help"}},err:{from_dir_need_path:{code:"",text:"--from-dir \u9700\u8981\u6A21\u677F\u76EE\u5F55\u8DEF\u5F84",comment:"\u53C2\u6570\u9519\u8BEF"},data_id_need:{code:"",text:"--data-id \u9700\u8981\u8D44\u6E90\u5305 id",comment:"\u53C2\u6570\u9519\u8BEF"},skill_platform_need:{code:"",text:"--skill-platform \u9700\u8981\u5E73\u53F0\u540D\uFF08\u5982 cursor\uFF09",comment:"\u53C2\u6570\u9519\u8BEF"},skill_conflict:{code:"",text:"--skill-platform \u4E0E --skill-all \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528",comment:"\u53C2\u6570\u9519\u8BEF"},cleared:{code:"",text:"\u5DF2\u6E05\u7A7A {dir}",comment:"\u5931\u8D25\u56DE\u6EDA"},clear_failed:{code:"",text:"\u65E0\u6CD5\u6E05\u7A7A {dir}: {e}",comment:"\u5931\u8D25\u56DE\u6EDA"},owner_slug:{code:"",text:"\u4E0D\u8981\u7528 owner/slug\u3002\u8BF7\u4F7F\u7528\u5E73\u53F0 template_id\uFF08\u5B57\u6BCD\u6570\u5B57\uFF09\uFF0C\u4F8B\u5982 k8n2x4m7q1w5",comment:"\u53C2\u6570\u9519\u8BEF"},data_id_from_dir:{code:"",text:"--data-id \u4E0D\u80FD\u4E0E --from-dir \u540C\u65F6\u4F7F\u7528",comment:"\u53C2\u6570\u9519\u8BEF"},invalid_data_id:{code:"",text:"\u65E0\u6548\u7684 data_id: {id}",comment:"\u53C2\u6570\u9519\u8BEF"},from_dir_not_template:{code:"",text:"--from-dir \u4E0D\u662F\u6A21\u677F\u76EE\u5F55: {dir}",comment:"\u53C2\u6570\u9519\u8BEF"},need_dest_no_tty:{code:"",text:"\u65E0 TTY \u65F6\u5FC5\u987B\u6307\u5B9A\u5DE5\u7A0B\u76EE\u5F55\u3002",comment:"\u53C2\u6570\u9519\u8BEF"},dest_exists:{code:"",text:"\u76EE\u5F55\u5DF2\u5B58\u5728\u4E14\u975E\u7A7A\uFF0C\u4E0D\u53EF\u521B\u5EFA: {dir}",comment:"\u53C2\u6570\u9519\u8BEF"},npm_install:{code:"",text:"npm install \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},bin_missing:{code:"",text:"\u627E\u4E0D\u5230 {js}",comment:"\u843D\u5730\u5931\u8D25"},run_js:{code:"",text:"\u65E0\u6CD5\u8FD0\u884C {js}: {e}",comment:"\u843D\u5730\u5931\u8D25"},init_failed:{code:"",text:"cgmaker init \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},npm_install_again:{code:"",text:"init \u540E npm install \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},run_npm:{code:"",text:"\u65E0\u6CD5\u8FD0\u884C {cmd}: {e}",comment:"npm \u542F\u52A8\u5931\u8D25"}},prompt:{dest_dir:{code:"",text:"\u5DE5\u7A0B\u76EE\u5F55",comment:"\u8BE2\u95EE\u843D\u5730\u76EE\u5F55"},ask:{code:"",text:"{question} ({fallback}): ",comment:"readline \u63D0\u95EE\u683C\u5F0F"}},ok:{written:{code:"",text:"\u5DF2\u5199\u5165\u5DE5\u7A0B {dir}",comment:"\u843D\u5730\u6210\u529F"},installed:{code:"",text:"\u5DF2\u5B89\u88C5 @66rpg/cgmaker \u5E76\u6267\u884C cgmaker init\u3002",comment:"\u843D\u5730\u6210\u529F"},local_origin:{code:"",text:"\u672C\u5730 --from-dir \u7684 origin.template_id \u4E3A local\uFF0C\u4E0D\u80FD\u76F4\u63A5 publish-template \u5230\u5E73\u53F0\u3002",comment:"\u672C\u5730\u6A21\u677F\u63D0\u9192"},next:{code:"",text:"\u63A5\u7740: cd \u8BE5\u76EE\u5F55 && npm run dev",comment:"\u843D\u5730\u6210\u529F\u4E0B\u4E00\u6B65"}}};function
|
|
16
|
-
`),
|
|
14
|
+
\u6682\u65E0\u4E91\u7AEF\u6A21\u677F\u79CD\u5B50\u65F6\uFF0C\u7528 --from-dir\u3002\u53D1\u73B0\u65B0\u7248\uFF1ATTY \u4F1A\u95EE\u662F\u5426\u66F4\u65B0\uFF1BAgent \u9000\u51FA\u7801 10\uFF0C\u540C\u610F\u540E --apply-update\uFF0C\u62D2\u7EDD --skip-update\u3002
|
|
15
|
+
`,comment:"\u6574\u6BB5 --help"}},err:{from_dir_need_path:{code:"",text:"--from-dir \u9700\u8981\u6A21\u677F\u76EE\u5F55\u8DEF\u5F84",comment:"\u53C2\u6570\u9519\u8BEF"},data_id_need:{code:"",text:"--data-id \u9700\u8981\u8D44\u6E90\u5305 id",comment:"\u53C2\u6570\u9519\u8BEF"},skill_platform_need:{code:"",text:"--skill-platform \u9700\u8981\u5E73\u53F0\u540D\uFF08\u5982 cursor\uFF09",comment:"\u53C2\u6570\u9519\u8BEF"},skill_conflict:{code:"",text:"--skill-platform \u4E0E --skill-all \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528",comment:"\u53C2\u6570\u9519\u8BEF"},cleared:{code:"",text:"\u5DF2\u6E05\u7A7A {dir}",comment:"\u5931\u8D25\u56DE\u6EDA"},clear_failed:{code:"",text:"\u65E0\u6CD5\u6E05\u7A7A {dir}: {e}",comment:"\u5931\u8D25\u56DE\u6EDA"},owner_slug:{code:"",text:"\u4E0D\u8981\u7528 owner/slug\u3002\u8BF7\u4F7F\u7528\u5E73\u53F0 template_id\uFF08\u5B57\u6BCD\u6570\u5B57\uFF09\uFF0C\u4F8B\u5982 k8n2x4m7q1w5",comment:"\u53C2\u6570\u9519\u8BEF"},data_id_from_dir:{code:"",text:"--data-id \u4E0D\u80FD\u4E0E --from-dir \u540C\u65F6\u4F7F\u7528",comment:"\u53C2\u6570\u9519\u8BEF"},invalid_data_id:{code:"",text:"\u65E0\u6548\u7684 data_id: {id}",comment:"\u53C2\u6570\u9519\u8BEF"},from_dir_not_template:{code:"",text:"--from-dir \u4E0D\u662F\u6A21\u677F\u76EE\u5F55: {dir}",comment:"\u53C2\u6570\u9519\u8BEF"},need_dest_no_tty:{code:"",text:"\u65E0 TTY \u65F6\u5FC5\u987B\u6307\u5B9A\u5DE5\u7A0B\u76EE\u5F55\u3002",comment:"\u53C2\u6570\u9519\u8BEF"},dest_exists:{code:"",text:"\u76EE\u5F55\u5DF2\u5B58\u5728\u4E14\u975E\u7A7A\uFF0C\u4E0D\u53EF\u521B\u5EFA: {dir}",comment:"\u53C2\u6570\u9519\u8BEF"},npm_install:{code:"",text:"npm install \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},bin_missing:{code:"",text:"\u627E\u4E0D\u5230 {js}",comment:"\u843D\u5730\u5931\u8D25"},run_js:{code:"",text:"\u65E0\u6CD5\u8FD0\u884C {js}: {e}",comment:"\u843D\u5730\u5931\u8D25"},init_failed:{code:"",text:"cgmaker init \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},npm_install_again:{code:"",text:"init \u540E npm install \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},run_npm:{code:"",text:"\u65E0\u6CD5\u8FD0\u884C {cmd}: {e}",comment:"npm \u542F\u52A8\u5931\u8D25"},need_input:{code:"11",text:"\u7F3A\u5C11\u9700\u8981\u5411\u7528\u6237\u786E\u8BA4\u7684\u53C2\u6570\u3002\u8BF7\u8BE2\u95EE\u7528\u6237\u540E\uFF0C\u628A\u7B54\u6848\u53D8\u6210\u547D\u4EE4\u884C\u65D7\u6807\u518D\u91CD\u8DD1\u3002",comment:"Agent \u9000\u51FA\u7801 11"},update_available:{code:"10",text:"\u68C0\u6D4B\u5230 cgmaker \u65B0\u7248\u672C\uFF0C\u63A8\u8350\u66F4\u65B0\u3002\u8BF7\u8BE2\u95EE\u7528\u6237\u662F\u5426\u73B0\u5728\u66F4\u65B0\u3002",comment:"Agent \u9000\u51FA\u7801 10"},update_use_latest:{code:"",text:"\u5F53\u524D\u76EE\u5F55\u6CA1\u6709 package.json\uFF0C\u65E0\u6CD5\u5199\u5165\u5DE5\u7A0B\u4F9D\u8D56\u3002\u8BF7\u6539\u7528 npx @66rpg/cgmaker-create@latest \u518D\u6267\u884C\u3002",comment:"create --apply-update \u65E0\u5DE5\u7A0B"},update_failed:{code:"",text:"\u66F4\u65B0\u5931\u8D25\uFF0C\u5DF2\u8DF3\u8FC7\uFF0C\u7EE7\u7EED\u6267\u884C\u539F\u547D\u4EE4\u3002",comment:"npm install \u5931\u8D25"}},prompt:{dest_dir:{code:"",text:"\u5DE5\u7A0B\u76EE\u5F55",comment:"\u8BE2\u95EE\u843D\u5730\u76EE\u5F55"},skill:{code:"",text:"\u628A\u5E73\u53F0 skill \u6247\u51FA\u5230\u54EA\u4E2A Agent\uFF1F\uFF08\u63A8\u8350 cursor\uFF09",comment:"Agent / TTY \u9009\u5E73\u53F0"},ask:{code:"",text:"{question} ({fallback}): ",comment:"readline \u63D0\u95EE\u683C\u5F0F"},update_ask:{code:"",text:"\u68C0\u6D4B\u5230\u65B0\u7248\u672C\uFF0C\u63A8\u8350\u66F4\u65B0\uFF0C\u662F\u5426\u73B0\u5728\u66F4\u65B0\uFF1F\uFF08\u56DE\u8F66=\u662F\uFF0Cn=\u5426\uFF09",comment:"TTY \u66F4\u65B0\u786E\u8BA4"}},ok:{written:{code:"",text:"\u5DF2\u5199\u5165\u5DE5\u7A0B {dir}",comment:"\u843D\u5730\u6210\u529F"},installed:{code:"",text:"\u5DF2\u5B89\u88C5 @66rpg/cgmaker \u5E76\u6267\u884C cgmaker init\u3002",comment:"\u843D\u5730\u6210\u529F"},local_origin:{code:"",text:"\u672C\u5730 --from-dir \u7684 origin.template_id \u4E3A local\uFF0C\u4E0D\u80FD\u76F4\u63A5 publish-template \u5230\u5E73\u53F0\u3002",comment:"\u672C\u5730\u6A21\u677F\u63D0\u9192"},next:{code:"",text:"\u63A5\u7740: cd \u8BE5\u76EE\u5F55 && npm run dev",comment:"\u843D\u5730\u6210\u529F\u4E0B\u4E00\u6B65"},update_installing:{code:"",text:"\u6B63\u5728\u628A cgmaker \u76F8\u5173\u5305\u66F4\u65B0\u5230\u6700\u65B0\u2026",comment:"npm install \u524D"},update_done:{code:"",text:"\u5DF2\u66F4\u65B0\u3002\u5F53\u524D\u8FDB\u7A0B\u4ECD\u662F\u65E7\u4EE3\u7801\uFF0C\u8BF7\u91CD\u65B0\u6267\u884C\u521A\u624D\u7684\u547D\u4EE4\u3002",comment:"\u66F4\u65B0\u6210\u529F\u540E\u9000\u51FA"}}};function W(){let e={...M};return delete e._comment,e}var L=W();function o(e,t,r){let n=L[e]?.[t];if(!n?.text)throw new Error(`missing create message ${e}.${t}`);let s=n.text;if(r)for(let[i,u]of Object.entries(r))s=s.split(`{${i}}`).join(String(u));return s}function G(){return process.platform==="win32"?"npm.cmd":"npm"}function v(e,t={}){let r=process.platform==="win32",n=Y(G(),e,{windowsHide:r,...t,shell:r});if(n.error)throw new Error(o("err","run_npm",{cmd:G(),e:n.error.message}));return n}import S from"node:fs";import q from"node:os";import y from"node:path";import H from"node:readline";import{fileURLToPath as V}from"node:url";var U=["@66rpg/cgmaker","@66rpg/cgmaker-create","@66rpg/cgmaker-win32-x64"],z=1440*60*1e3;function Z(e,t){let r=e.split(".").map(i=>Number.parseInt(i,10)||0),n=t.split(".").map(i=>Number.parseInt(i,10)||0),s=Math.max(r.length,n.length);for(let i=0;i<s;i++){let u=r[i]??0,_=n[i]??0;if(u>_)return!0;if(u<_)return!1}return!1}function C(e=q.homedir()){return y.join(e,".cgmaker","update-check.json")}function Q(e=C()){try{let t=JSON.parse(S.readFileSync(e,"utf8"));return!t||typeof t.checkedAt!="number"||typeof t.latest!="object"?null:t}catch{return null}}function b(e,t=C()){S.mkdirSync(y.dirname(t),{recursive:!0}),S.writeFileSync(t,`${JSON.stringify(e,null,2)}
|
|
16
|
+
`)}function X(){return y.resolve(y.dirname(V(import.meta.url)),"..")}function ee(e,t=process.cwd()){if(e==="@66rpg/cgmaker-create")try{let r=JSON.parse(S.readFileSync(y.join(X(),"package.json"),"utf8"));if(r.version)return r.version}catch{}try{return JSON.parse(S.readFileSync(y.join(t,"node_modules",e,"package.json"),"utf8")).version||null}catch{return null}}function O(e,t=process.cwd(),r={}){let n=[];for(let s of U){let i=e[s];if(!i||r[s]===i)continue;let u=ee(s,t);u&&Z(i,u)&&n.push({name:s,current:u,latest:i})}return n}function te(e=process.cwd()){let t={};for(let r of U)try{let n=v(["view",r,"version"],{cwd:e,encoding:"utf8",timeout:2e3}),s=(n.stdout??"").toString().trim().split(`
|
|
17
|
+
`)[0]?.trim();n.status===0&&s&&(t[r]=s)}catch{}return t}function ne(){return process.env.CI==="true"||process.env.CGMAKER_NO_INTERACTIVE==="1"||process.env.CGMAKER_SKIP_UPDATE==="1"}function re(){return process.platform==="win32"?["@66rpg/cgmaker-win32-x64"]:[]}function se(e){process.stdout.write(`${JSON.stringify({success:!1,code:10,command:"update-available",message:o("err","update_available"),data:{packages:e,apply:"npx @66rpg/cgmaker-create@latest --apply-update",skip:"npx @66rpg/cgmaker-create@latest --skip-update <\u539F\u547D\u4EE4\u4E0E\u53C2\u6570>"}},null,2)}
|
|
18
|
+
`)}function ie(e,t){let r=H.createInterface({input:process.stdin,output:process.stdout});return new Promise(n=>{r.question(`${e} [${t}]: `,s=>{r.close(),n(s.trim()||t)})})}async function K(e){if(ne())return"continue";let t=e.cwd??process.cwd(),r=e.now??Date.now(),n=e.ppid??process.ppid,s=e.cacheFile??C(),i=Q(s)??{checkedAt:0,latest:{}};if(r-i.checkedAt>=z){let l={};try{l=e.fetch?e.fetch():te(t)}catch{l={}}i={...i,checkedAt:r,latest:{...i.latest,...l}},b(i,s)}if(e.apply)return $(i.latest,t);if(e.skip){let l={...i.declined};for(let f of O(i.latest,t))l[f.name]=f.latest;return b({...i,declined:l,promptedPpid:n},s),"continue"}let u=O(i.latest,t,i.declined??{});if(u.length===0)return"continue";if(e.agent)return se(u),"agent-block";if(!e.tty||i.promptedPpid===n)return"continue";let _=u.map(l=>`${l.name} ${l.current} \u2192 ${l.latest}`).join(`
|
|
19
|
+
`),h=await ie(`${o("prompt","update_ask")}
|
|
20
|
+
${_}`,"Y");if(b({...i,promptedPpid:n},s),/^(n|no|否)$/i.test(h)){let l={...i.declined};for(let f of u)l[f.name]=f.latest;return b({...i,declined:l,promptedPpid:n},s),"continue"}return $(i.latest,t)}function $(e,t){let r=y.join(t,"package.json");if(!S.existsSync(r))return console.error(o("err","update_use_latest")),"updated-exit";let n=[];for(let s of["@66rpg/cgmaker","@66rpg/cgmaker-create",...re()]){let i=e[s];n.push(i?`${s}@${i}`:`${s}@latest`)}console.error(o("ok","update_installing"));try{if(v(["install","-D",...n],{cwd:t,stdio:"inherit"}).status!==0)return console.error(o("err","update_failed")),"continue"}catch{return console.error(o("err","update_failed")),"continue"}return console.error(o("ok","update_done")),"updated-exit"}function R(){return o("help","body")}function le(){return p.resolve(p.dirname(ce(import.meta.url)),"..")}function D(e=process.cwd()){let t=e;for(;;){let r=p.join(t,"templates"),n=p.join(t,"package.json");if(d.existsSync(r)&&d.existsSync(n))try{if(JSON.parse(d.readFileSync(n,"utf8")).workspaces?.some(u=>u.includes("templates")))return t}catch{}let s=p.dirname(t);if(s===t)return null;t=s}}function pe(){return JSON.parse(d.readFileSync(p.join(le(),"package.json"),"utf8"))}function J(){let e=D();if(e){let t=p.join(e,"packages/cgmaker");if(d.existsSync(t))return`file:${t.replace(/\\/g,"/")}`}return`^${pe().version}`}function F(e){let t=e.split("@")[0]??e;return((t.includes("/")?t.split("/").pop():t)||"game").replace(/^tmpl_/,"tmpl-")}function de(e){return/^[a-zA-Z0-9]+$/.test(e)}function ue(e){let t=e.filter(g=>g!=="--"),r,n,s,i=!1,u=!1,_=!1,h=!1,l=!1,f=[];for(let g=0;g<t.length;g++){let c=t[g];if(c==="--from-dir"){let a=t[++g];if(!a||a.startsWith("-"))throw new Error(o("err","from_dir_need_path"));r=a;continue}if(c.startsWith("--from-dir=")){if(r=c.slice(11),!r)throw new Error(o("err","from_dir_need_path"));continue}if(c==="--data-id"||c==="--data-ver-id"){let a=t[++g];if(!a||a.startsWith("-"))throw new Error(o("err","data_id_need"));n=a;continue}if(c.startsWith("--data-id=")){if(n=c.slice(10),!n)throw new Error(o("err","data_id_need"));continue}if(c.startsWith("--data-ver-id=")){if(n=c.slice(14),!n)throw new Error(o("err","data_id_need"));continue}if(c==="--skill-all"){i=!0;continue}if(c==="--skill-skip"||c==="--skip-skill"){u=!0;continue}if(c==="--agent"){_=!0;continue}if(c==="--apply-update"){h=!0;continue}if(c==="--skip-update"){l=!0;continue}if(c!=="--json"){if(c==="--skill-platform"){let a=t[++g];if(!a||a.startsWith("-"))throw new Error(o("err","skill_platform_need"));s=a;continue}if(c.startsWith("--skill-platform=")){if(s=c.slice(17),!s)throw new Error(o("err","skill_platform_need"));continue}f.push(c)}}if(i&&s)throw new Error(o("err","skill_conflict"));if(u&&(i||s))throw new Error(o("err","skill_conflict"));return{rest:f,fromDir:r,dataId:n,skillPlatform:s,skillAll:i,skillSkip:u,agent:_,applyUpdate:h,skipUpdateFlag:l}}function me(e,t){process.stdout.write(`${JSON.stringify({success:!1,code:11,command:"need-input",message:e,data:{questions:t}},null,2)}
|
|
21
|
+
`)}function fe(e){return process.env.CI==="true"||process.env.CGMAKER_NO_INTERACTIVE==="1"?!1:e||process.env.CGMAKER_AGENT==="1"}function N(e,t){try{if(!d.existsSync(e))return;if(!t)d.rmSync(e,{recursive:!0,force:!0});else for(let r of d.readdirSync(e))d.rmSync(p.join(e,r),{recursive:!0,force:!0});console.error(o("err","cleared",{dir:e}))}catch(r){console.error(o("err","clear_failed",{dir:e,e:r instanceof Error?r.message:String(r)}))}}function ge(e,t){let r=oe.createInterface({input:process.stdin,output:process.stdout});return new Promise(n=>{r.question(o("prompt","ask",{question:e,fallback:t}),s=>{r.close(),n(s.trim()||t)})})}function T(){return!!(process.stdin.isTTY&&process.stdout.isTTY)}function _e(e,t){d.mkdirSync(e,{recursive:!0});let r={name:t,private:!0,type:"module",engines:{node:">=20"},devDependencies:{"@66rpg/cgmaker":J()}};d.writeFileSync(p.join(e,"package.json"),`${JSON.stringify(r,null,2)}
|
|
22
|
+
`),d.writeFileSync(p.join(e,".gitignore"),`node_modules/
|
|
17
23
|
dist/
|
|
18
24
|
.DS_Store
|
|
19
|
-
`);let r
|
|
20
|
-
`)}function
|
|
21
|
-
`)}function
|
|
25
|
+
`);let n=r.devDependencies["@66rpg/cgmaker"],s=process.env.CGMAKER_NPM_SCOPE_REGISTRY?.trim();s&&typeof n=="string"&&!n.startsWith("file:")&&d.writeFileSync(p.join(e,".npmrc"),`@66rpg:registry=${s}
|
|
26
|
+
`)}function ke(e,t){let r=p.join(e,"package.json"),n=JSON.parse(d.readFileSync(r,"utf8"));n.name=t,n.devDependencies=n.devDependencies??{},n.devDependencies["@66rpg/cgmaker"]||(n.devDependencies["@66rpg/cgmaker"]=J()),d.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
27
|
+
`)}function xe(){return process.platform==="win32"?"cgmaker.exe":"cgmaker"}function he(){let e=process.platform,t=process.arch;return e==="darwin"&&t==="arm64"?["aarch64-apple-darwin"]:e==="darwin"&&t==="x64"?["x86_64-apple-darwin"]:e==="win32"&&t==="x64"?["x86_64-pc-windows-gnu","x86_64-pc-windows-msvc"]:e==="linux"&&t==="x64"?["x86_64-unknown-linux-gnu","x86_64-unknown-linux-musl"]:e==="linux"&&t==="arm64"?["aarch64-unknown-linux-gnu","aarch64-unknown-linux-musl"]:[]}function we(e){let t=xe(),r=[];for(let n of["release","debug"]){for(let s of he())r.push(p.join(e,s,n,t));r.push(p.join(e,n,t))}return r}function ye(){if(process.env.CG_MAKER_CLI_BIN&&d.existsSync(process.env.CG_MAKER_CLI_BIN))return process.env.CG_MAKER_CLI_BIN;if(process.env.CGMAKER_BIN&&d.existsSync(process.env.CGMAKER_BIN))return process.env.CGMAKER_BIN;let e=[];process.env.CARGO_TARGET_DIR&&e.push(process.env.CARGO_TARGET_DIR);let t=D();t&&e.push(p.join(t,"target"));for(let r of e)for(let n of we(r))if(d.existsSync(n))return n}async function ve(){let{rest:e,fromDir:t,dataId:r,skillPlatform:n,skillAll:s,skillSkip:i,agent:u,applyUpdate:_,skipUpdateFlag:h}=ue(process.argv.slice(2));if(e.includes("-h")||e.includes("--help")){process.stdout.write(R());return}let l=fe(u);if(l&&(process.env.CGMAKER_AGENT="1"),_||h||e.length>0){let m=await K({apply:_,skip:h,agent:l,tty:T()});m==="updated-exit"&&process.exit(0),m==="agent-block"&&process.exit(10)}e.length===0&&(process.stdout.write(R()),process.exit(1));let f=e[0],g=e[1],c=r??e[2];if(e.length>3&&(process.stderr.write(R()),process.exit(1)),(!f||f.startsWith("-"))&&(process.stderr.write(R()),process.exit(1)),f.includes("/")&&(console.error(o("err","owner_slug")),process.exit(1)),g?.startsWith("-")&&(process.stderr.write(R()),process.exit(1)),t&&c&&(console.error(o("err","data_id_from_dir")),process.exit(1)),c&&c!=="0"&&!de(c)&&(console.error(o("err","invalid_data_id",{id:c})),process.exit(1)),l&&!T()){let m=[];g||m.push({id:"create.dest",kind:"text",question:o("prompt","dest_dir"),recommended:!0,default:F(f)}),!n&&!s&&!i&&m.push({id:"create.skill",kind:"select",question:o("prompt","skill"),recommended:!0,options:[{value:"cursor",label:"cursor",flag:"--skill-platform cursor"},{value:"__all__",label:"all",flag:"--skill-all"},{value:"skip",label:"skip",flag:"--skill-skip",optional:!0}]}),m.some(k=>k.optional!==!0)&&(me(o("err","need_input"),m),process.exit(11))}if(t){let m=p.resolve(t);d.existsSync(p.join(m,"package.json"))||(console.error(o("err","from_dir_not_template",{dir:m})),process.exit(1))}if(!g){let m=F(f);T()||(console.error(o("err","need_dest_no_tty")),process.stderr.write(R()),process.exit(1)),g=await ge(o("prompt","dest_dir"),m)}let a=p.resolve(g),j=d.existsSync(a);j&&d.readdirSync(a).length&&(console.error(o("err","dest_exists",{dir:a})),process.exit(1));let A=(m,k=1)=>{N(a,j),console.error(m),process.exit(k)};try{_e(a,p.basename(a));let m=v(["install"],{cwd:a,stdio:"inherit"});m.status!==0&&A(o("err","npm_install"),m.status??1);let k=p.join(a,"node_modules/@66rpg/cgmaker/bin/cgmaker.js");d.existsSync(k)||A(o("err","bin_missing",{js:k}));let w=[k,"init",f];t&&w.push("--from-dir",p.resolve(t)),c&&w.push("--data-id",c),s&&w.push("--all"),n&&w.push("--platform",n),i&&w.push("--skip-skill"),l&&w.push("--agent","--json");let I=ye(),E={...process.env};I&&(E.CGMAKER_BIN=I),l&&(E.CGMAKER_AGENT="1"),E.CGMAKER_SKIP_UPDATE="1";let x=ae(process.execPath,w,{cwd:a,stdio:"inherit",windowsHide:!0,env:E});x.error&&A(o("err","run_js",{js:k,e:x.error.message})),(x.status===10||x.status===11||x.status===12)&&(N(a,j),process.exit(x.status)),x.status!==0&&A(o("err","init_failed"),x.status??1),ke(a,p.basename(a));let P=v(["install"],{cwd:a,stdio:"inherit"});P.status!==0&&A(o("err","npm_install_again"),P.status??1)}catch(m){throw N(a,j),m}console.log(o("ok","written",{dir:a})),console.log(o("ok","installed")),t&&console.log(o("ok","local_origin")),console.log(o("ok","next"))}ve().catch(e=>{console.error(e instanceof Error?e.message:e),process.exit(1)});
|