@ismartify/cli
Advanced tools
+11
-11
@@ -9,7 +9,2 @@ #!/usr/bin/env node | ||
| import { cwd } from "process"; | ||
| var defaultConfig = { | ||
| apiKey: "your_api_key_here", | ||
| apiBaseURL: "https://api.chatanywhere.tech/v1", | ||
| defaultModel: "gpt-4o-mini" | ||
| }; | ||
| async function loadConfig() { | ||
@@ -21,4 +16,4 @@ const jiti = createJiti(cwd()); | ||
| } catch (error) { | ||
| console.log("\u4F7F\u7528\u9ED8\u8BA4\u914D\u7F6E"); | ||
| return defaultConfig; | ||
| console.log("\u672A\u627E\u5230\u914D\u7F6E\u6587\u4EF6\uFF0C\u4F7F\u7528\u7A7A\u914D\u7F6E"); | ||
| return {}; | ||
| } | ||
@@ -59,3 +54,3 @@ } | ||
| choices: [ | ||
| { name: "\u73AF\u5883\u8BBE\u7F6E", value: "setup" }, | ||
| { name: "\u663E\u793A\u73AF\u5883\u8BBE\u7F6E", value: "setup" }, | ||
| { name: "\u8FD0\u884C\u811A\u672C", value: "run" }, | ||
@@ -68,3 +63,4 @@ { name: "\u9000\u51FA", value: "exit" } | ||
| case "setup": | ||
| console.log("\u6B63\u5728\u8BBE\u7F6E\u73AF\u5883..."); | ||
| console.log("\n\u5F53\u524D\u73AF\u5883\u8BBE\u7F6E:"); | ||
| console.log(JSON.stringify(config, null, 2)); | ||
| break; | ||
@@ -91,4 +87,8 @@ case "run": | ||
| `); | ||
| await script.setup(); | ||
| await script.main(); | ||
| if (script.setup) { | ||
| await script.setup(config); | ||
| } | ||
| if (script.main) { | ||
| await script.main(config); | ||
| } | ||
| break; | ||
@@ -95,0 +95,0 @@ case "exit": |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport inquirer from 'inquirer';\nimport { createJiti } from 'jiti';\nimport { glob } from 'glob';\nimport { join } from 'path';\nimport { cwd } from 'process';\n\ninterface Config {\n apiKey: string;\n apiBaseURL: string;\n defaultModel: string;\n}\n\ninterface ScriptContext {\n name: string;\n version: string;\n config: Config;\n}\n\ninterface ScriptModule {\n title: string;\n description: string;\n setup?: (context: ScriptContext) => Promise<void>;\n main: (context: ScriptContext) => Promise<void>;\n}\n\nconst defaultConfig: Config = {\n apiKey: \"your_api_key_here\",\n apiBaseURL: \"https://api.chatanywhere.tech/v1\",\n defaultModel: \"gpt-4o-mini\"\n};\n\nasync function loadConfig(): Promise<Config> {\n const jiti = createJiti(cwd());\n try {\n const config = await jiti.import('./ismartify.config.js', { default: true }) as Config;\n return config;\n } catch (error) {\n console.log('使用默认配置');\n return defaultConfig;\n }\n}\n\nasync function loadScripts(scriptsDir: string) {\n const jiti = createJiti(import.meta.url);\n const files = await glob('**/*.ts', { cwd: scriptsDir });\n \n const scripts = [];\n for (const file of files) {\n try {\n const script = await jiti.import(join(scriptsDir, file), { default: true });\n if (script instanceof Map) {\n scripts.push({\n name: file.replace('.ts', ''),\n title: script.get('title') || file.replace('.ts', ''),\n description: script.get('description') || '',\n setup: script.get('setup') || (() => {}),\n main: script.get('main') || (() => {})\n });\n }\n } catch (error) {\n console.error(`无法加载脚本 ${file}:`, error);\n }\n }\n return scripts;\n}\n\nasync function main() {\n const config = await loadConfig();\n const scripts = await loadScripts(join(cwd(), 'scripts'));\n\n const { action } = await inquirer.prompt([\n {\n type: 'list',\n name: 'action',\n message: '请选择操作:',\n choices: [\n { name: '环境设置', value: 'setup' },\n { name: '运行脚本', value: 'run' },\n { name: '退出', value: 'exit' }\n ]\n }\n ]);\n\n switch (action) {\n case 'setup':\n console.log('正在设置环境...');\n break;\n case 'run':\n if (scripts.length === 0) {\n console.log('没有找到可用的脚本');\n break;\n }\n const { script } = await inquirer.prompt([\n {\n type: 'list',\n name: 'script',\n message: '请选择要运行的脚本:',\n choices: scripts.map(s => ({ \n name: `${s.title} - ${s.description}`, \n value: s \n }))\n }\n ]);\n\n console.log(`\\n正在运行: ${script.title}`);\n console.log(`描述: ${script.description}\\n`);\n\n // 先运行 setup\n await script.setup();\n // 再运行 main\n await script.main();\n break;\n case 'exit':\n console.log('感谢使用,再见!');\n process.exit(0);\n break;\n }\n}\n\nmain().catch((err) => {\n console.error('发生错误:', err);\n process.exit(1);\n});\n"],"mappings":";;;AAEA,OAAO,cAAc;AACrB,SAAS,kBAAkB;AAC3B,SAAS,YAAY;AACrB,SAAS,YAAY;AACrB,SAAS,WAAW;AAqBpB,IAAM,gBAAwB;AAAA,EAC5B,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,cAAc;AAChB;AAEA,eAAe,aAA8B;AAC3C,QAAM,OAAO,WAAW,IAAI,CAAC;AAC7B,MAAI;AACF,UAAM,SAAS,MAAM,KAAK,OAAO,yBAAyB,EAAE,SAAS,KAAK,CAAC;AAC3E,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,IAAI,sCAAQ;AACpB,WAAO;AAAA,EACT;AACF;AAEA,eAAe,YAAY,YAAoB;AAC7C,QAAM,OAAO,WAAW,YAAY,GAAG;AACvC,QAAM,QAAQ,MAAM,KAAK,WAAW,EAAE,KAAK,WAAW,CAAC;AAEvD,QAAM,UAAU,CAAC;AACjB,aAAW,QAAQ,OAAO;AACxB,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,OAAO,KAAK,YAAY,IAAI,GAAG,EAAE,SAAS,KAAK,CAAC;AAC1E,UAAI,kBAAkB,KAAK;AACzB,gBAAQ,KAAK;AAAA,UACX,MAAM,KAAK,QAAQ,OAAO,EAAE;AAAA,UAC5B,OAAO,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,OAAO,EAAE;AAAA,UACpD,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,UAC1C,OAAO,OAAO,IAAI,OAAO,MAAM,MAAM;AAAA,UAAC;AAAA,UACtC,MAAM,OAAO,IAAI,MAAM,MAAM,MAAM;AAAA,UAAC;AAAA,QACtC,CAAC;AAAA,MACH;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,wCAAU,IAAI,KAAK,KAAK;AAAA,IACxC;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAe,OAAO;AACpB,QAAM,SAAS,MAAM,WAAW;AAChC,QAAM,UAAU,MAAM,YAAY,KAAK,IAAI,GAAG,SAAS,CAAC;AAExD,QAAM,EAAE,OAAO,IAAI,MAAM,SAAS,OAAO;AAAA,IACvC;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,QACP,EAAE,MAAM,4BAAQ,OAAO,QAAQ;AAAA,QAC/B,EAAE,MAAM,4BAAQ,OAAO,MAAM;AAAA,QAC7B,EAAE,MAAM,gBAAM,OAAO,OAAO;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,CAAC;AAED,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,cAAQ,IAAI,yCAAW;AACvB;AAAA,IACF,KAAK;AACH,UAAI,QAAQ,WAAW,GAAG;AACxB,gBAAQ,IAAI,wDAAW;AACvB;AAAA,MACF;AACA,YAAM,EAAE,OAAO,IAAI,MAAM,SAAS,OAAO;AAAA,QACvC;AAAA,UACE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS,QAAQ,IAAI,QAAM;AAAA,YACzB,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,WAAW;AAAA,YACnC,OAAO;AAAA,UACT,EAAE;AAAA,QACJ;AAAA,MACF,CAAC;AAED,cAAQ,IAAI;AAAA,4BAAW,OAAO,KAAK,EAAE;AACrC,cAAQ,IAAI,iBAAO,OAAO,WAAW;AAAA,CAAI;AAGzC,YAAM,OAAO,MAAM;AAEnB,YAAM,OAAO,KAAK;AAClB;AAAA,IACF,KAAK;AACH,cAAQ,IAAI,kDAAU;AACtB,cAAQ,KAAK,CAAC;AACd;AAAA,EACJ;AACF;AAEA,KAAK,EAAE,MAAM,CAAC,QAAQ;AACpB,UAAQ,MAAM,kCAAS,GAAG;AAC1B,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]} | ||
| {"version":3,"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport inquirer from 'inquirer';\nimport { createJiti } from 'jiti';\nimport { glob } from 'glob';\nimport { join } from 'path';\nimport { cwd } from 'process';\n\ninterface Config {\n [key: string]: any;\n}\n\ninterface ScriptContext {\n name: string;\n version: string;\n config: Config;\n}\n\ninterface ScriptModule {\n title: string;\n description: string;\n setup?: (context: ScriptContext) => Promise<void>;\n main: (context: ScriptContext) => Promise<void>;\n}\n\nasync function loadConfig(): Promise<Config> {\n const jiti = createJiti(cwd());\n try {\n const config = await jiti.import('./ismartify.config.js', { default: true }) as Config;\n return config;\n } catch (error) {\n console.log('未找到配置文件,使用空配置');\n return {};\n }\n}\n\nasync function loadScripts(scriptsDir: string) {\n const jiti = createJiti(import.meta.url);\n const files = await glob('**/*.ts', { cwd: scriptsDir });\n \n const scripts = [];\n for (const file of files) {\n try {\n const script = await jiti.import(join(scriptsDir, file), { default: true });\n if (script instanceof Map) {\n scripts.push({\n name: file.replace('.ts', ''),\n title: script.get('title') || file.replace('.ts', ''),\n description: script.get('description') || '',\n setup: script.get('setup') || (() => {}),\n main: script.get('main') || (() => {})\n });\n }\n } catch (error) {\n console.error(`无法加载脚本 ${file}:`, error);\n }\n }\n return scripts;\n}\n\nasync function main() {\n const config = await loadConfig();\n const scripts = await loadScripts(join(cwd(), 'scripts'));\n\n const { action } = await inquirer.prompt([\n {\n type: 'list',\n name: 'action',\n message: '请选择操作:',\n choices: [\n { name: '显示环境设置', value: 'setup' },\n { name: '运行脚本', value: 'run' },\n { name: '退出', value: 'exit' }\n ]\n }\n ]);\n\n switch (action) {\n case 'setup':\n console.log('\\n当前环境设置:');\n console.log(JSON.stringify(config, null, 2));\n break;\n case 'run':\n if (scripts.length === 0) {\n console.log('没有找到可用的脚本');\n break;\n }\n const { script } = await inquirer.prompt([\n {\n type: 'list',\n name: 'script',\n message: '请选择要运行的脚本:',\n choices: scripts.map(s => ({ \n name: `${s.title} - ${s.description}`, \n value: s \n }))\n }\n ]);\n\n console.log(`\\n正在运行: ${script.title}`);\n console.log(`描述: ${script.description}\\n`);\n\n // 先运行 setup(如果有)\n if (script.setup) {\n await script.setup(config);\n }\n // 再运行 main\n if (script.main) {\n await script.main(config);\n }\n break;\n case 'exit':\n console.log('感谢使用,再见!');\n process.exit(0);\n break;\n }\n}\n\nmain().catch((err) => {\n console.error('发生错误:', err);\n process.exit(1);\n});\n"],"mappings":"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","names":[]} |
+18
-18
| { | ||
| "name": "@ismartify/cli", | ||
| "version": "1.0.13", | ||
| "version": "1.0.14", | ||
| "description": "iSmartify CLI 工具", | ||
@@ -10,28 +10,28 @@ "type": "module", | ||
| "files": [ | ||
| "dist" | ||
| "dist" | ||
| ], | ||
| "scripts": { | ||
| "dev": "cross-env NODE_ENV=development tsup --watch", | ||
| "build": "cross-env NODE_ENV=production tsup", | ||
| "start": "cross-env NODE_ENV=production node dist/index.js", | ||
| "list": "cross-env NODE_ENV=development tsx src/index.ts" | ||
| "dev": "cross-env NODE_ENV=development tsup --watch", | ||
| "build": "cross-env NODE_ENV=production tsup", | ||
| "start": "cross-env NODE_ENV=production node dist/index.js", | ||
| "list": "cross-env NODE_ENV=development tsx src/index.ts" | ||
| }, | ||
| "keywords": [ | ||
| "cli" | ||
| "cli" | ||
| ], | ||
| "license": "ISC", | ||
| "dependencies": { | ||
| "cross-env": "^7.0.3", | ||
| "inquirer": "^12.4.3", | ||
| "tsx": "^4.7.1", | ||
| "jiti": "^2.4.2", | ||
| "glob": "^10.3.10" | ||
| "cross-env": "^7.0.3", | ||
| "glob": "^10.3.10", | ||
| "inquirer": "^12.4.3", | ||
| "jiti": "^2.4.2", | ||
| "tsx": "^4.7.1" | ||
| }, | ||
| "devDependencies": { | ||
| "@types/inquirer": "^9.0.7", | ||
| "@types/node": "^22.13.10", | ||
| "tsup": "^8.4.0", | ||
| "typescript": "^5.8.2", | ||
| "unimport": "^4.1.2" | ||
| "@types/inquirer": "^9.0.7", | ||
| "@types/node": "^22.13.10", | ||
| "tsup": "^8.4.0", | ||
| "typescript": "^5.8.2", | ||
| "unimport": "^4.1.2" | ||
| } | ||
| } | ||
| } |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
20840
0.16%1
-50%