zixulu 1.63.1 → 1.63.3
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/dist/index.js +2 -2
- package/dist/index.js.map +2 -2
- package/dist/utils/readZixuluSetting.d.ts +12 -7
- package/dist/utils/readZixuluSetting.js.map +2 -2
- package/dist/utils/syncEditorSetting.d.ts +14 -0
- package/dist/utils/syncEditorSetting.js +140 -0
- package/dist/utils/syncEditorSetting.js.map +7 -0
- package/package.json +10 -10
- package/src/index.ts +2 -2
- package/src/utils/readZixuluSetting.ts +12 -5
- package/src/utils/syncEditorSetting.ts +138 -0
- package/dist/utils/syncSnippets.d.ts +0 -1
- package/dist/utils/syncSnippets.js +0 -100
- package/dist/utils/syncSnippets.js.map +0 -7
- package/src/utils/syncSnippets.ts +0 -63
package/dist/index.js
CHANGED
|
@@ -81,7 +81,7 @@ var import_setBun = require("./utils/setBun");
|
|
|
81
81
|
var import_setDockerRegistry = require("./utils/setDockerRegistry");
|
|
82
82
|
var import_setEnv = require("./utils/setEnv");
|
|
83
83
|
var import_setGlobalConfig = require("./utils/setGlobalConfig");
|
|
84
|
-
var
|
|
84
|
+
var import_syncEditorSetting = require("./utils/syncEditorSetting");
|
|
85
85
|
var import_tailwindPatch = require("./utils/tailwindPatch");
|
|
86
86
|
var import_tar = require("./utils/tar");
|
|
87
87
|
var import_test = require("./utils/test");
|
|
@@ -194,7 +194,7 @@ program.command("test").description("这是一个测试命令,生产环境中
|
|
|
194
194
|
import_consola.default.warn("这是一个测试命令,生产环境中使用,非开发人员请勿使用!");
|
|
195
195
|
await (0, import_test.test)();
|
|
196
196
|
});
|
|
197
|
-
program.command("sync-
|
|
197
|
+
program.command("sync-editor").alias("se").description("同步编辑器配置").action(import_syncEditorSetting.syncEditorSetting);
|
|
198
198
|
program.command("server-to-action").alias("sta").description("将 server 文件夹下的文件转换为 action").action(import_serverToAction.serverToAction);
|
|
199
199
|
program.command("tar").description("压缩文件").argument("input", "输入文件夹").option("-o, --output <output>", "输出文件").action(async (input, { output }) => (0, import_tar.tar)({ input, output }));
|
|
200
200
|
program.command("set-env").description("设置环境变量").argument("key", "环境变量 key").argument("[value]", "环境变量 value").action(async (key, value) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["#!/usr/bin/env node\nimport { resolve } from \"path\"\nimport { Command } from \"commander\"\nimport consola from \"consola\"\nimport { emailReg } from \"deepsea-tools\"\nimport { setDefaultOptions } from \"soda-nodejs\"\n\nimport { CommitType } from \"@constant/index\"\n\nimport { addTailwind } from \"@src/utils/addTailwind\"\n\nimport { addAntd } from \"@utils/addAntd\"\nimport { addGitignore } from \"@utils/addGitignore\"\nimport { addFolderPathAlias, replacePathAlias } from \"@utils/addPathAlias\"\nimport { addPrettier } from \"@utils/addPrettier\"\nimport { addPrisma } from \"@utils/addPrisma\"\nimport { arrowToFunction } from \"@utils/arrowToFunction\"\nimport { betaVersion } from \"@utils/betaVersion\"\nimport { checkType } from \"@utils/checkType\"\nimport { code2Snippet } from \"@utils/code2Snippet\"\nimport { downloadLatestSoftware } from \"@utils/downloadLatestSoftware\"\nimport { downloadNpm } from \"@utils/downloadNpm\"\nimport { generatePrisma } from \"@utils/generatePrisma\"\nimport { initProject } from \"@utils/initProject\"\nimport { interfaceToType } from \"@utils/interfaceToType\"\nimport { killProcessByPort } from \"@utils/killProcessByPort\"\nimport { next } from \"@utils/next\"\nimport { pnpm } from \"@utils/pnpm\"\nimport { reinstall } from \"@utils/reinstall\"\nimport { removeComment } from \"@utils/removeComment\"\nimport { removeESLint } from \"@utils/removeESLint\"\nimport { removeFileOrFolderFromGit } from \"@utils/removeFileOrFolderFromGit\"\nimport { rollup } from \"@utils/rollup\"\nimport { rsbuild } from \"@utils/rsbuild\"\nimport { setFatherConfig } from \"@utils/setFatherConfig\"\nimport { setGitProxy } from \"@utils/setGitProxy\"\nimport { setRegistry } from \"@utils/setRegistry\"\nimport { setShellProxy } from \"@utils/setShellProxy\"\nimport { sortPackageJson } from \"@utils/sortPackageJson\"\nimport { syncVscode } from \"@utils/syncVscode\"\nimport { upgradeDependency } from \"@utils/upgradeDependency\"\nimport { vite } from \"@utils/vite\"\n\nimport { actionWithBackup } from \"./utils/actionWithBackup\"\nimport { addApi } from \"./utils/addApi\"\nimport { addStartScript } from \"./utils/addStartScript\"\nimport { addSyncPackageScript } from \"./utils/addSyncPackageScript\"\nimport { addZipDist } from \"./utils/addZipDist\"\nimport { createBrowserlistrc } from \"./utils/createBrowserlistrc\"\nimport { getCommitMessage } from \"./utils/getCommitMessage\"\nimport { getHeaders } from \"./utils/getHeaders\"\nimport { initNode } from \"./utils/initNode\"\nimport { installDocker } from \"./utils/installDocker\"\nimport { readPackageJsonSync } from \"./utils/readPackageJsonSync\"\nimport { removeLock } from \"./utils/removeLock\"\nimport { replaceAssets } from \"./utils/replaceAssets\"\nimport { CommitAuthor, replaceCommitAuthor } from \"./utils/replaceCommitAuthor\"\nimport { rslib } from \"./utils/rslib\"\nimport { serverToAction } from \"./utils/serverToAction\"\nimport { setBun } from \"./utils/setBun\"\nimport { setDockerRegistry } from \"./utils/setDockerRegistry\"\nimport { setEnv } from \"./utils/setEnv\"\nimport { setGlobalConfig } from \"./utils/setGlobalConfig\"\nimport { syncSnippets } from \"./utils/syncSnippets\"\nimport { tailwindPatch } from \"./utils/tailwindPatch\"\nimport { tar } from \"./utils/tar\"\nimport { test } from \"./utils/test\"\nimport { upgradeRsbuild } from \"./utils/upgradeRsbuild\"\nimport { upgradeTailwind } from \"./utils/upgradeTailwind\"\nimport { upgradeWorkspaceDependceny } from \"./utils/upgradeWorkspaceDependceny\"\nimport { winget } from \"./utils/winget\"\n\nsetDefaultOptions({\n shell: true,\n stdio: \"inherit\",\n})\n\nconst program = new Command()\n\nconst pkg = readPackageJsonSync(resolve(__dirname, \"../\"))\n\nprogram.name(\"格数科技\").version(pkg.version)\n\nprogram\n .command(\"eslint\")\n .description(\"删除 ESLint 相关配置\")\n .action(actionWithBackup(removeESLint, getCommitMessage(CommitType.feature, \"删除 ESLint 相关配置\")))\n\nprogram\n .command(\"prettier\")\n .description(\"添加 prettier 配置\")\n .action(actionWithBackup(addPrettier, getCommitMessage(CommitType.feature, \"添加 prettier 配置文件\")))\n\nprogram\n .command(\"vite\")\n .description(\"初始化 vite 配置\")\n .action(actionWithBackup(vite, getCommitMessage(CommitType.feature, \"初始化 vite 配置\")))\n\nprogram\n .command(\"rsbuild\")\n .description(\"初始化 rsbuild 配置\")\n .action(actionWithBackup(rsbuild, getCommitMessage(CommitType.feature, \"初始化 rsbuild 配置\")))\n\nprogram\n .command(\"next\")\n .description(\"初始化 next 配置\")\n .action(actionWithBackup(next, getCommitMessage(CommitType.feature, \"初始化 next 配置\")))\n\nprogram\n .command(\"tailwind\")\n .description(\"添加 tailwind 配置\")\n .action(actionWithBackup(addTailwind, getCommitMessage(CommitType.feature, \"添加 tailwind 配置\")))\n\nprogram\n .command(\"remove-comment\")\n .description(\"删除文件注释\")\n .argument(\"path\", \"文件路径\")\n .action(actionWithBackup(removeComment, getCommitMessage(CommitType.feature, \"删除文件注释\")))\n\nprogram\n .command(\"father\")\n .alias(\"fs\")\n .description(\"初始化 father 项目配置\")\n .action(actionWithBackup(setFatherConfig, getCommitMessage(CommitType.feature, \"初始化 father 项目配置\")))\n\nprogram\n .command(\"upgrade-dependency\")\n .alias(\"ud\")\n .description(\"升级项目依赖\")\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .action(async optios => {\n setGlobalConfig(optios)\n await actionWithBackup(() => upgradeDependency())()\n })\n\nprogram\n .command(\"upgrade-workspace-dependency\")\n .alias(\"uwd\")\n .description(\"升级工作区项目依赖\")\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .action(async options => {\n setGlobalConfig(options)\n await upgradeWorkspaceDependceny()\n })\n\nprogram.command(\"registry\").description(\"设置 npm registry\").action(setRegistry)\n\nprogram\n .command(\"sort-package-json\")\n .alias(\"spj\")\n .description(\"对 package.json 中的依赖进行排序\")\n .action(actionWithBackup(sortPackageJson, getCommitMessage(CommitType.feature, \"对 package.json 中的依赖进行排序\")))\n\nprogram\n .command(\"arrow-to-function\")\n .alias(\"a2f\")\n .description(\"将箭头函数组件转换为函数组件\")\n .action(actionWithBackup(arrowToFunction, getCommitMessage(CommitType.feature, \"将箭头函数组件转换为函数组件\")))\n\nprogram\n .command(\"interface-to-type\")\n .alias(\"i2t\")\n .description(\"将 interface 转换为 type\")\n .action(actionWithBackup(interfaceToType, getCommitMessage(CommitType.feature, \"将 interface 转换为 type\")))\n\nprogram.command(\"gitignore\").description(\"添加 .gitignore 配置\").action(actionWithBackup(addGitignore))\n\nprogram.command(\"git-proxy\").alias(\"gp\").description(\"设置 git 代理\").action(setGitProxy)\n\nprogram.command(\"shell-proxy\").alias(\"sp\").description(\"设置 Shell 代理\").action(setShellProxy)\n\nprogram.command(\"download-software\").alias(\"ds\").description(\"下载最新版软件\").action(downloadLatestSoftware)\n\nprogram.command(\"vscode\").alias(\"vsc\").description(\"同步 VS Code 配置\").action(syncVscode)\n\nprogram.command(\"kill-port\").description(\"根据端口号杀死进程\").argument(\"port\", \"端口号\").action(killProcessByPort)\n\nprogram.command(\"rm-git\").argument(\"path\", \"要移除的文件或文件夹\").action(removeFileOrFolderFromGit)\n\nprogram.command(\"npm-download\").alias(\"nd\").description(\"下载 npm 包\").argument(\"name\", \"包名\").action(downloadNpm)\n\nprogram\n .command(\"prisma\")\n .description(\"添加 prisma 配置\")\n .action(actionWithBackup(() => addPrisma(), getCommitMessage(CommitType.feature, \"添加 prisma 配置\")))\n\nprogram.command(\"prisma-generate\").alias(\"pg\").description(\"生成 prisma client\").action(generatePrisma)\n\nprogram\n .command(\"antd\")\n .description(\"添加 antd 配置\")\n .action(actionWithBackup(addAntd, getCommitMessage(CommitType.feature, \"添加 antd 配置\")))\n\nprogram\n .command(\"init\")\n .description(\"初始化项目\")\n .action(actionWithBackup(initProject, getCommitMessage(CommitType.feature, \"初始化项目\")))\n\nprogram.command(\"tsc\").description(\"类型检查\").action(checkType)\n\nprogram.command(\"beta-version\").alias(\"bv\").description(\"设置版本号\").action(betaVersion)\n\nprogram\n .command(\"reinstall\")\n .alias(\"ri\")\n .description(\"重新安装依赖\")\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\n .action(async options => {\n setGlobalConfig(options)\n reinstall()\n })\n\nprogram.command(\"snippet\").alias(\"sn\").description(\"生成 vscode snippet\").argument(\"path\", \"文件路径\").action(code2Snippet)\n\nprogram.command(\"add-alias\").alias(\"aa\").description(\"添加路径别名\").action(actionWithBackup(addFolderPathAlias))\n\nprogram.command(\"replace-alias\").alias(\"ra\").description(\"替换路径别名\").action(actionWithBackup(replacePathAlias))\n\nprogram.command(\"pnpm\").description(\"设置 pnpm 配置\").action(pnpm)\n\nprogram.command(\"rollup\").description(\"rollup 打包\").action(rollup)\n\nprogram.command(\"browserlistrc\").alias(\"blr\").description(\"添加 browserlistrc 配置\").action(createBrowserlistrc)\n\nprogram\n .command(\"asset\")\n .description(\"替换文件中的资源地址\")\n .argument(\"input\", \"静态文件夹路径\")\n .option(\"-b, --base <base>\", \"资源地址 BaseUrl\")\n .option(\"-o, --output <output>\", \"输出文件夹\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .action((input, { proxy, base, output }) => replaceAssets({ base, input, proxy, output }))\n\nprogram\n .command(\"upgrade-rsbuild\")\n .alias(\"ur\")\n .description(\"升级 rsbuild\")\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .action(async options => {\n setGlobalConfig(options)\n await actionWithBackup(() => upgradeRsbuild())()\n })\n\nprogram\n .command(\"add-start-script\")\n .alias(\"ass\")\n .argument(\"type\", \"启动脚本类型:express、next\")\n .option(\"-p, --port <port>\", \"端口地址\")\n .option(\"-c, --core <core>\", \"实例数\")\n .option(\"-h, --hostname <hostname>\", \"主机名\")\n .option(\"-pem, --pemPath <pemPath>\", \"证书目录\")\n .description(\"添加 express 启动脚本\")\n .action(async (type, { port, core, pemPath }) => actionWithBackup(addStartScript)({ type, port, core, pemPath }))\n\nprogram.command(\"headers\").description(\"将浏览器中直接复制的 headers 转换为对象\").action(getHeaders)\n\nprogram\n .command(\"add-zip-dist\")\n .alias(\"azd\")\n .description(\"添加将 dist 压缩的脚本\")\n .action(actionWithBackup(() => addZipDist({ install: true })))\n\nprogram\n .command(\"upgrade-tailwind\")\n .alias(\"ut\")\n .description(\"升级 tailwind\")\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .action(async options => {\n setGlobalConfig(options)\n await actionWithBackup(() => upgradeTailwind())()\n })\n\nprogram.command(\"bun\").description(\"设置 bun\").action(setBun)\n\nprogram.command(\"tailwind-patch\").alias(\"tp\").description(\"tailwind 补丁\").action(tailwindPatch)\n\nprogram\n .command(\"remove-lock\")\n .alias(\"rl\")\n .description(\"删除 lock 文件\")\n .action(actionWithBackup(() => removeLock()))\n\nprogram\n .command(\"rename-commit-author\")\n .alias(\"rca\")\n .description(\"重写 Git 提交历史的作者信息\")\n .arguments(\"[infos...]\")\n .action(async (infos: string[]) => {\n let prev: CommitAuthor | undefined\n let next: CommitAuthor | undefined\n infos = infos.slice(0, 2)\n function getUsernameAndEmail(info: string): CommitAuthor {\n const index = info.indexOf(\":\")\n if (index === -1) {\n if (emailReg.test(info)) return { email: info }\n return { name: info }\n }\n return {\n name: info.slice(0, index),\n email: info.slice(index + 1),\n }\n }\n if (infos.length === 0) throw new Error(\"请输入作者信息!\")\n else if (infos.length === 1) next = getUsernameAndEmail(infos[0])\n else {\n prev = getUsernameAndEmail(infos[0])\n next = getUsernameAndEmail(infos[1])\n }\n await replaceCommitAuthor({ prev, next })\n })\n\nprogram.command(\"install-docker\").alias(\"id\").description(\"安装 Docker\").action(installDocker)\n\nprogram.command(\"set-docker-registry\").alias(\"sdr\").description(\"设置 Docker 镜像地址\").action(setDockerRegistry)\n\nprogram\n .command(\"add-sync\")\n .alias(\"asp\")\n .option(\"-m, --monorepo\", \"是否是 monorepo\")\n .description(\"添加同步包脚本\")\n .action(actionWithBackup(addSyncPackageScript))\n\nprogram\n .command(\"winget\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .description(\"使用 winget 更新软件\")\n .action(async options => {\n setGlobalConfig(options)\n await winget()\n })\n\nprogram\n .command(\"test\")\n .description(\"这是一个测试命令,生产环境中使用,非开发人员请勿使用!\")\n .action(async () => {\n consola.warn(\"这是一个测试命令,生产环境中使用,非开发人员请勿使用!\")\n consola.warn(\"这是一个测试命令,生产环境中使用,非开发人员请勿使用!\")\n consola.warn(\"这是一个测试命令,生产环境中使用,非开发人员请勿使用!\")\n await test()\n })\n\nprogram.command(\"sync-snippets\").alias(\"ss\").description(\"同步 vscode snippets\").action(syncSnippets)\n\nprogram.command(\"server-to-action\").alias(\"sta\").description(\"将 server 文件夹下的文件转换为 action\").action(serverToAction)\n\nprogram\n .command(\"tar\")\n .description(\"压缩文件\")\n .argument(\"input\", \"输入文件夹\")\n .option(\"-o, --output <output>\", \"输出文件\")\n .action(async (input, { output }) => tar({ input, output }))\n\nprogram\n .command(\"set-env\")\n .description(\"设置环境变量\")\n .argument(\"key\", \"环境变量 key\")\n .argument(\"[value]\", \"环境变量 value\")\n .action(async (key, value) => {\n await setEnv(key, value)\n consola.success(\"设置环境变量成功\")\n })\n\nprogram\n .command(\"add-api\")\n .description(\"添加 api 文件\")\n .argument(\"type\", \"api 类型\")\n .option(\"-a, --api <api>\", \"api 文件夹路径\")\n .option(\"-h, --hook <hook>\", \"hook 文件夹路径\")\n .action(async (type, { api, hook }) => addApi({ type, api, hook }))\n\nprogram.command(\"rslib\").description(\"rslib 配置\").action(rslib)\n\nprogram.command(\"init-node\").description(\"初始化 node 项目\").action(initNode)\n\nprogram.parse()\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AACA,kBAAwB;AACxB,uBAAwB;AACxB,qBAAoB;AACpB,2BAAyB;AACzB,yBAAkC;AAElC,sBAA2B;AAE3B,yBAA4B;AAE5B,qBAAwB;AACxB,0BAA6B;AAC7B,0BAAqD;AACrD,yBAA4B;AAC5B,uBAA0B;AAC1B,6BAAgC;AAChC,yBAA4B;AAC5B,uBAA0B;AAC1B,0BAA6B;AAC7B,oCAAuC;AACvC,yBAA4B;AAC5B,4BAA+B;AAC/B,yBAA4B;AAC5B,6BAAgC;AAChC,+BAAkC;AAClC,kBAAqB;AACrB,kBAAqB;AACrB,uBAA0B;AAC1B,2BAA8B;AAC9B,0BAA6B;AAC7B,uCAA0C;AAC1C,oBAAuB;AACvB,qBAAwB;AACxB,6BAAgC;AAChC,yBAA4B;AAC5B,yBAA4B;AAC5B,2BAA8B;AAC9B,6BAAgC;AAChC,wBAA2B;AAC3B,+BAAkC;AAClC,kBAAqB;AAErB,8BAAiC;AACjC,oBAAuB;AACvB,4BAA+B;AAC/B,kCAAqC;AACrC,wBAA2B;AAC3B,iCAAoC;AACpC,8BAAiC;AACjC,wBAA2B;AAC3B,sBAAyB;AACzB,2BAA8B;AAC9B,iCAAoC;AACpC,wBAA2B;AAC3B,2BAA8B;AAC9B,iCAAkD;AAClD,mBAAsB;AACtB,4BAA+B;AAC/B,oBAAuB;AACvB,+BAAkC;AAClC,oBAAuB;AACvB,6BAAgC;AAChC
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\nimport { resolve } from \"path\"\nimport { Command } from \"commander\"\nimport consola from \"consola\"\nimport { emailReg } from \"deepsea-tools\"\nimport { setDefaultOptions } from \"soda-nodejs\"\n\nimport { CommitType } from \"@constant/index\"\n\nimport { addTailwind } from \"@src/utils/addTailwind\"\n\nimport { addAntd } from \"@utils/addAntd\"\nimport { addGitignore } from \"@utils/addGitignore\"\nimport { addFolderPathAlias, replacePathAlias } from \"@utils/addPathAlias\"\nimport { addPrettier } from \"@utils/addPrettier\"\nimport { addPrisma } from \"@utils/addPrisma\"\nimport { arrowToFunction } from \"@utils/arrowToFunction\"\nimport { betaVersion } from \"@utils/betaVersion\"\nimport { checkType } from \"@utils/checkType\"\nimport { code2Snippet } from \"@utils/code2Snippet\"\nimport { downloadLatestSoftware } from \"@utils/downloadLatestSoftware\"\nimport { downloadNpm } from \"@utils/downloadNpm\"\nimport { generatePrisma } from \"@utils/generatePrisma\"\nimport { initProject } from \"@utils/initProject\"\nimport { interfaceToType } from \"@utils/interfaceToType\"\nimport { killProcessByPort } from \"@utils/killProcessByPort\"\nimport { next } from \"@utils/next\"\nimport { pnpm } from \"@utils/pnpm\"\nimport { reinstall } from \"@utils/reinstall\"\nimport { removeComment } from \"@utils/removeComment\"\nimport { removeESLint } from \"@utils/removeESLint\"\nimport { removeFileOrFolderFromGit } from \"@utils/removeFileOrFolderFromGit\"\nimport { rollup } from \"@utils/rollup\"\nimport { rsbuild } from \"@utils/rsbuild\"\nimport { setFatherConfig } from \"@utils/setFatherConfig\"\nimport { setGitProxy } from \"@utils/setGitProxy\"\nimport { setRegistry } from \"@utils/setRegistry\"\nimport { setShellProxy } from \"@utils/setShellProxy\"\nimport { sortPackageJson } from \"@utils/sortPackageJson\"\nimport { syncVscode } from \"@utils/syncVscode\"\nimport { upgradeDependency } from \"@utils/upgradeDependency\"\nimport { vite } from \"@utils/vite\"\n\nimport { actionWithBackup } from \"./utils/actionWithBackup\"\nimport { addApi } from \"./utils/addApi\"\nimport { addStartScript } from \"./utils/addStartScript\"\nimport { addSyncPackageScript } from \"./utils/addSyncPackageScript\"\nimport { addZipDist } from \"./utils/addZipDist\"\nimport { createBrowserlistrc } from \"./utils/createBrowserlistrc\"\nimport { getCommitMessage } from \"./utils/getCommitMessage\"\nimport { getHeaders } from \"./utils/getHeaders\"\nimport { initNode } from \"./utils/initNode\"\nimport { installDocker } from \"./utils/installDocker\"\nimport { readPackageJsonSync } from \"./utils/readPackageJsonSync\"\nimport { removeLock } from \"./utils/removeLock\"\nimport { replaceAssets } from \"./utils/replaceAssets\"\nimport { CommitAuthor, replaceCommitAuthor } from \"./utils/replaceCommitAuthor\"\nimport { rslib } from \"./utils/rslib\"\nimport { serverToAction } from \"./utils/serverToAction\"\nimport { setBun } from \"./utils/setBun\"\nimport { setDockerRegistry } from \"./utils/setDockerRegistry\"\nimport { setEnv } from \"./utils/setEnv\"\nimport { setGlobalConfig } from \"./utils/setGlobalConfig\"\nimport { syncEditorSetting } from \"./utils/syncEditorSetting\"\nimport { tailwindPatch } from \"./utils/tailwindPatch\"\nimport { tar } from \"./utils/tar\"\nimport { test } from \"./utils/test\"\nimport { upgradeRsbuild } from \"./utils/upgradeRsbuild\"\nimport { upgradeTailwind } from \"./utils/upgradeTailwind\"\nimport { upgradeWorkspaceDependceny } from \"./utils/upgradeWorkspaceDependceny\"\nimport { winget } from \"./utils/winget\"\n\nsetDefaultOptions({\n shell: true,\n stdio: \"inherit\",\n})\n\nconst program = new Command()\n\nconst pkg = readPackageJsonSync(resolve(__dirname, \"../\"))\n\nprogram.name(\"格数科技\").version(pkg.version)\n\nprogram\n .command(\"eslint\")\n .description(\"删除 ESLint 相关配置\")\n .action(actionWithBackup(removeESLint, getCommitMessage(CommitType.feature, \"删除 ESLint 相关配置\")))\n\nprogram\n .command(\"prettier\")\n .description(\"添加 prettier 配置\")\n .action(actionWithBackup(addPrettier, getCommitMessage(CommitType.feature, \"添加 prettier 配置文件\")))\n\nprogram\n .command(\"vite\")\n .description(\"初始化 vite 配置\")\n .action(actionWithBackup(vite, getCommitMessage(CommitType.feature, \"初始化 vite 配置\")))\n\nprogram\n .command(\"rsbuild\")\n .description(\"初始化 rsbuild 配置\")\n .action(actionWithBackup(rsbuild, getCommitMessage(CommitType.feature, \"初始化 rsbuild 配置\")))\n\nprogram\n .command(\"next\")\n .description(\"初始化 next 配置\")\n .action(actionWithBackup(next, getCommitMessage(CommitType.feature, \"初始化 next 配置\")))\n\nprogram\n .command(\"tailwind\")\n .description(\"添加 tailwind 配置\")\n .action(actionWithBackup(addTailwind, getCommitMessage(CommitType.feature, \"添加 tailwind 配置\")))\n\nprogram\n .command(\"remove-comment\")\n .description(\"删除文件注释\")\n .argument(\"path\", \"文件路径\")\n .action(actionWithBackup(removeComment, getCommitMessage(CommitType.feature, \"删除文件注释\")))\n\nprogram\n .command(\"father\")\n .alias(\"fs\")\n .description(\"初始化 father 项目配置\")\n .action(actionWithBackup(setFatherConfig, getCommitMessage(CommitType.feature, \"初始化 father 项目配置\")))\n\nprogram\n .command(\"upgrade-dependency\")\n .alias(\"ud\")\n .description(\"升级项目依赖\")\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .action(async optios => {\n setGlobalConfig(optios)\n await actionWithBackup(() => upgradeDependency())()\n })\n\nprogram\n .command(\"upgrade-workspace-dependency\")\n .alias(\"uwd\")\n .description(\"升级工作区项目依赖\")\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .action(async options => {\n setGlobalConfig(options)\n await upgradeWorkspaceDependceny()\n })\n\nprogram.command(\"registry\").description(\"设置 npm registry\").action(setRegistry)\n\nprogram\n .command(\"sort-package-json\")\n .alias(\"spj\")\n .description(\"对 package.json 中的依赖进行排序\")\n .action(actionWithBackup(sortPackageJson, getCommitMessage(CommitType.feature, \"对 package.json 中的依赖进行排序\")))\n\nprogram\n .command(\"arrow-to-function\")\n .alias(\"a2f\")\n .description(\"将箭头函数组件转换为函数组件\")\n .action(actionWithBackup(arrowToFunction, getCommitMessage(CommitType.feature, \"将箭头函数组件转换为函数组件\")))\n\nprogram\n .command(\"interface-to-type\")\n .alias(\"i2t\")\n .description(\"将 interface 转换为 type\")\n .action(actionWithBackup(interfaceToType, getCommitMessage(CommitType.feature, \"将 interface 转换为 type\")))\n\nprogram.command(\"gitignore\").description(\"添加 .gitignore 配置\").action(actionWithBackup(addGitignore))\n\nprogram.command(\"git-proxy\").alias(\"gp\").description(\"设置 git 代理\").action(setGitProxy)\n\nprogram.command(\"shell-proxy\").alias(\"sp\").description(\"设置 Shell 代理\").action(setShellProxy)\n\nprogram.command(\"download-software\").alias(\"ds\").description(\"下载最新版软件\").action(downloadLatestSoftware)\n\nprogram.command(\"vscode\").alias(\"vsc\").description(\"同步 VS Code 配置\").action(syncVscode)\n\nprogram.command(\"kill-port\").description(\"根据端口号杀死进程\").argument(\"port\", \"端口号\").action(killProcessByPort)\n\nprogram.command(\"rm-git\").argument(\"path\", \"要移除的文件或文件夹\").action(removeFileOrFolderFromGit)\n\nprogram.command(\"npm-download\").alias(\"nd\").description(\"下载 npm 包\").argument(\"name\", \"包名\").action(downloadNpm)\n\nprogram\n .command(\"prisma\")\n .description(\"添加 prisma 配置\")\n .action(actionWithBackup(() => addPrisma(), getCommitMessage(CommitType.feature, \"添加 prisma 配置\")))\n\nprogram.command(\"prisma-generate\").alias(\"pg\").description(\"生成 prisma client\").action(generatePrisma)\n\nprogram\n .command(\"antd\")\n .description(\"添加 antd 配置\")\n .action(actionWithBackup(addAntd, getCommitMessage(CommitType.feature, \"添加 antd 配置\")))\n\nprogram\n .command(\"init\")\n .description(\"初始化项目\")\n .action(actionWithBackup(initProject, getCommitMessage(CommitType.feature, \"初始化项目\")))\n\nprogram.command(\"tsc\").description(\"类型检查\").action(checkType)\n\nprogram.command(\"beta-version\").alias(\"bv\").description(\"设置版本号\").action(betaVersion)\n\nprogram\n .command(\"reinstall\")\n .alias(\"ri\")\n .description(\"重新安装依赖\")\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\n .action(async options => {\n setGlobalConfig(options)\n reinstall()\n })\n\nprogram.command(\"snippet\").alias(\"sn\").description(\"生成 vscode snippet\").argument(\"path\", \"文件路径\").action(code2Snippet)\n\nprogram.command(\"add-alias\").alias(\"aa\").description(\"添加路径别名\").action(actionWithBackup(addFolderPathAlias))\n\nprogram.command(\"replace-alias\").alias(\"ra\").description(\"替换路径别名\").action(actionWithBackup(replacePathAlias))\n\nprogram.command(\"pnpm\").description(\"设置 pnpm 配置\").action(pnpm)\n\nprogram.command(\"rollup\").description(\"rollup 打包\").action(rollup)\n\nprogram.command(\"browserlistrc\").alias(\"blr\").description(\"添加 browserlistrc 配置\").action(createBrowserlistrc)\n\nprogram\n .command(\"asset\")\n .description(\"替换文件中的资源地址\")\n .argument(\"input\", \"静态文件夹路径\")\n .option(\"-b, --base <base>\", \"资源地址 BaseUrl\")\n .option(\"-o, --output <output>\", \"输出文件夹\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .action((input, { proxy, base, output }) => replaceAssets({ base, input, proxy, output }))\n\nprogram\n .command(\"upgrade-rsbuild\")\n .alias(\"ur\")\n .description(\"升级 rsbuild\")\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .action(async options => {\n setGlobalConfig(options)\n await actionWithBackup(() => upgradeRsbuild())()\n })\n\nprogram\n .command(\"add-start-script\")\n .alias(\"ass\")\n .argument(\"type\", \"启动脚本类型:express、next\")\n .option(\"-p, --port <port>\", \"端口地址\")\n .option(\"-c, --core <core>\", \"实例数\")\n .option(\"-h, --hostname <hostname>\", \"主机名\")\n .option(\"-pem, --pemPath <pemPath>\", \"证书目录\")\n .description(\"添加 express 启动脚本\")\n .action(async (type, { port, core, pemPath }) => actionWithBackup(addStartScript)({ type, port, core, pemPath }))\n\nprogram.command(\"headers\").description(\"将浏览器中直接复制的 headers 转换为对象\").action(getHeaders)\n\nprogram\n .command(\"add-zip-dist\")\n .alias(\"azd\")\n .description(\"添加将 dist 压缩的脚本\")\n .action(actionWithBackup(() => addZipDist({ install: true })))\n\nprogram\n .command(\"upgrade-tailwind\")\n .alias(\"ut\")\n .description(\"升级 tailwind\")\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .action(async options => {\n setGlobalConfig(options)\n await actionWithBackup(() => upgradeTailwind())()\n })\n\nprogram.command(\"bun\").description(\"设置 bun\").action(setBun)\n\nprogram.command(\"tailwind-patch\").alias(\"tp\").description(\"tailwind 补丁\").action(tailwindPatch)\n\nprogram\n .command(\"remove-lock\")\n .alias(\"rl\")\n .description(\"删除 lock 文件\")\n .action(actionWithBackup(() => removeLock()))\n\nprogram\n .command(\"rename-commit-author\")\n .alias(\"rca\")\n .description(\"重写 Git 提交历史的作者信息\")\n .arguments(\"[infos...]\")\n .action(async (infos: string[]) => {\n let prev: CommitAuthor | undefined\n let next: CommitAuthor | undefined\n infos = infos.slice(0, 2)\n function getUsernameAndEmail(info: string): CommitAuthor {\n const index = info.indexOf(\":\")\n if (index === -1) {\n if (emailReg.test(info)) return { email: info }\n return { name: info }\n }\n return {\n name: info.slice(0, index),\n email: info.slice(index + 1),\n }\n }\n if (infos.length === 0) throw new Error(\"请输入作者信息!\")\n else if (infos.length === 1) next = getUsernameAndEmail(infos[0])\n else {\n prev = getUsernameAndEmail(infos[0])\n next = getUsernameAndEmail(infos[1])\n }\n await replaceCommitAuthor({ prev, next })\n })\n\nprogram.command(\"install-docker\").alias(\"id\").description(\"安装 Docker\").action(installDocker)\n\nprogram.command(\"set-docker-registry\").alias(\"sdr\").description(\"设置 Docker 镜像地址\").action(setDockerRegistry)\n\nprogram\n .command(\"add-sync\")\n .alias(\"asp\")\n .option(\"-m, --monorepo\", \"是否是 monorepo\")\n .description(\"添加同步包脚本\")\n .action(actionWithBackup(addSyncPackageScript))\n\nprogram\n .command(\"winget\")\n .option(\"-p, --proxy\", \"是否使用代理\")\n .description(\"使用 winget 更新软件\")\n .action(async options => {\n setGlobalConfig(options)\n await winget()\n })\n\nprogram\n .command(\"test\")\n .description(\"这是一个测试命令,生产环境中使用,非开发人员请勿使用!\")\n .action(async () => {\n consola.warn(\"这是一个测试命令,生产环境中使用,非开发人员请勿使用!\")\n consola.warn(\"这是一个测试命令,生产环境中使用,非开发人员请勿使用!\")\n consola.warn(\"这是一个测试命令,生产环境中使用,非开发人员请勿使用!\")\n await test()\n })\n\nprogram.command(\"sync-editor\").alias(\"se\").description(\"同步编辑器配置\").action(syncEditorSetting)\n\nprogram.command(\"server-to-action\").alias(\"sta\").description(\"将 server 文件夹下的文件转换为 action\").action(serverToAction)\n\nprogram\n .command(\"tar\")\n .description(\"压缩文件\")\n .argument(\"input\", \"输入文件夹\")\n .option(\"-o, --output <output>\", \"输出文件\")\n .action(async (input, { output }) => tar({ input, output }))\n\nprogram\n .command(\"set-env\")\n .description(\"设置环境变量\")\n .argument(\"key\", \"环境变量 key\")\n .argument(\"[value]\", \"环境变量 value\")\n .action(async (key, value) => {\n await setEnv(key, value)\n consola.success(\"设置环境变量成功\")\n })\n\nprogram\n .command(\"add-api\")\n .description(\"添加 api 文件\")\n .argument(\"type\", \"api 类型\")\n .option(\"-a, --api <api>\", \"api 文件夹路径\")\n .option(\"-h, --hook <hook>\", \"hook 文件夹路径\")\n .action(async (type, { api, hook }) => addApi({ type, api, hook }))\n\nprogram.command(\"rslib\").description(\"rslib 配置\").action(rslib)\n\nprogram.command(\"init-node\").description(\"初始化 node 项目\").action(initNode)\n\nprogram.parse()\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["next", "consola"]
|
|
7
7
|
}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
filename?: string;
|
|
1
|
+
import { Editor, FileType, SyncEditorSettingSource } from "./syncEditorSetting";
|
|
2
|
+
export interface SyncEditorFileConfig {
|
|
4
3
|
backup?: boolean;
|
|
5
|
-
}
|
|
6
|
-
export
|
|
4
|
+
}
|
|
5
|
+
export interface SyncEditorConfig {
|
|
6
|
+
fileConfigs?: Record<string, SyncEditorFileConfig>;
|
|
7
|
+
fileTypes?: FileType[];
|
|
8
|
+
source?: SyncEditorSettingSource;
|
|
9
|
+
targets?: Editor[];
|
|
10
|
+
}
|
|
11
|
+
export interface ZixuluSetting {
|
|
7
12
|
vscodeDownloadHistory?: string[];
|
|
8
13
|
softwareDownloadHistory?: string[];
|
|
9
14
|
upgradeWorkspaceDependcenyHistory?: Record<string, string[]>;
|
|
10
|
-
|
|
11
|
-
}
|
|
15
|
+
syncEditor?: SyncEditorConfig;
|
|
16
|
+
}
|
|
12
17
|
export declare function readZixuluSetting(): Promise<ZixuluSetting>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/readZixuluSetting.ts"],
|
|
4
|
-
"sourcesContent": ["import { existsSync } from \"fs\"\nimport { readFile } from \"fs/promises\"\nimport { homedir } from \"os\"\nimport { join } from \"path\"\n\nexport
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA2B;AAC3B,sBAAyB;AACzB,gBAAwB;AACxB,kBAAqB;
|
|
4
|
+
"sourcesContent": ["import { existsSync } from \"fs\"\nimport { readFile } from \"fs/promises\"\nimport { homedir } from \"os\"\nimport { join } from \"path\"\n\nimport { Editor, FileType, SyncEditorSettingSource } from \"./syncEditorSetting\"\n\nexport interface SyncEditorFileConfig {\n backup?: boolean\n}\n\nexport interface SyncEditorConfig {\n fileConfigs?: Record<string, SyncEditorFileConfig>\n fileTypes?: FileType[]\n source?: SyncEditorSettingSource\n targets?: Editor[]\n}\n\nexport interface ZixuluSetting {\n vscodeDownloadHistory?: string[]\n softwareDownloadHistory?: string[]\n upgradeWorkspaceDependcenyHistory?: Record<string, string[]>\n syncEditor?: SyncEditorConfig\n}\n\nexport async function readZixuluSetting(): Promise<ZixuluSetting> {\n const userDir = homedir()\n const settingPath = join(userDir, \".zixulu.json\")\n if (existsSync(settingPath)) {\n const setting = JSON.parse(await readFile(settingPath, \"utf-8\"))\n return setting\n }\n return {}\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA2B;AAC3B,sBAAyB;AACzB,gBAAwB;AACxB,kBAAqB;AAsBrB,eAAsB,oBAA4C;AAC9D,QAAM,cAAU,mBAAQ;AACxB,QAAM,kBAAc,kBAAK,SAAS,cAAc;AAChD,UAAI,sBAAW,WAAW,GAAG;AACzB,UAAM,UAAU,KAAK,MAAM,UAAM,0BAAS,aAAa,OAAO,CAAC;AAC/D,WAAO;AAAA,EACX;AACA,SAAO,CAAC;AACZ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type Editor = "Code" | "Cursor";
|
|
2
|
+
export type SyncEditorSettingSource = Editor | "Online";
|
|
3
|
+
export type FileType = "settings" | "snippets";
|
|
4
|
+
export type FileSourceMap = Record<FileType, Record<SyncEditorSettingSource, string>>;
|
|
5
|
+
export interface SyncEditorSettingParams {
|
|
6
|
+
source: SyncEditorSettingSource;
|
|
7
|
+
target: Editor;
|
|
8
|
+
}
|
|
9
|
+
export interface SyncEditorFileParams {
|
|
10
|
+
source: string;
|
|
11
|
+
target: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function syncEditorFile({ source, target }: SyncEditorFileParams): Promise<void>;
|
|
14
|
+
export declare function syncEditorSetting(): Promise<void>;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/utils/syncEditorSetting.ts
|
|
30
|
+
var syncEditorSetting_exports = {};
|
|
31
|
+
__export(syncEditorSetting_exports, {
|
|
32
|
+
syncEditorFile: () => syncEditorFile,
|
|
33
|
+
syncEditorSetting: () => syncEditorSetting
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(syncEditorSetting_exports);
|
|
36
|
+
var import_fs = require("fs");
|
|
37
|
+
var import_promises = require("fs/promises");
|
|
38
|
+
var import_os = require("os");
|
|
39
|
+
var import_path = require("path");
|
|
40
|
+
var import_consola = __toESM(require("consola"));
|
|
41
|
+
var import_readZixuluSetting = require("./readZixuluSetting");
|
|
42
|
+
var import_writeZixuluSetting = require("./writeZixuluSetting");
|
|
43
|
+
var userDir = (0, import_os.homedir)();
|
|
44
|
+
var fileSourceMap = {
|
|
45
|
+
settings: {
|
|
46
|
+
Code: (0, import_path.join)(userDir, "AppData/Roaming/Code/User/settings.json"),
|
|
47
|
+
Cursor: (0, import_path.join)(userDir, "AppData/Roaming/Cursor/User/settings.json"),
|
|
48
|
+
Online: "https://luzixu.geskj.com/settings.json"
|
|
49
|
+
},
|
|
50
|
+
snippets: {
|
|
51
|
+
Code: (0, import_path.join)(userDir, "AppData/Roaming/Code/User/snippets/global.code-snippets"),
|
|
52
|
+
Cursor: (0, import_path.join)(userDir, "AppData/Roaming/Cursor/User/snippets/global.code-snippets"),
|
|
53
|
+
Online: "https://luzixu.geskj.com/global.code-snippets"
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
async function getFile(source) {
|
|
57
|
+
if (source.startsWith("http")) {
|
|
58
|
+
const response = await fetch(source);
|
|
59
|
+
return await response.text();
|
|
60
|
+
}
|
|
61
|
+
return await (0, import_promises.readFile)(source, "utf-8");
|
|
62
|
+
}
|
|
63
|
+
async function syncEditorFile({ source, target }) {
|
|
64
|
+
const { dir, base } = (0, import_path.parse)(target);
|
|
65
|
+
let setting = await (0, import_readZixuluSetting.readZixuluSetting)();
|
|
66
|
+
const code = await getFile(source);
|
|
67
|
+
if ((0, import_fs.existsSync)(target)) {
|
|
68
|
+
const text = await (0, import_promises.readFile)(target, "utf-8");
|
|
69
|
+
if (text === code) {
|
|
70
|
+
import_consola.default.success(`${target} 已是最新`);
|
|
71
|
+
return;
|
|
72
|
+
} else {
|
|
73
|
+
const { default: inquirer } = await import("inquirer");
|
|
74
|
+
const { backup } = await inquirer.prompt({
|
|
75
|
+
type: "confirm",
|
|
76
|
+
name: "backup",
|
|
77
|
+
message: `是否备份原文件(${target})`,
|
|
78
|
+
default: setting.syncEditor?.fileConfigs?.[target]?.backup ?? true
|
|
79
|
+
});
|
|
80
|
+
setting.syncEditor ??= {};
|
|
81
|
+
setting.syncEditor.fileConfigs ??= {};
|
|
82
|
+
setting.syncEditor.fileConfigs[target] ??= {};
|
|
83
|
+
setting.syncEditor.fileConfigs[target].backup = backup;
|
|
84
|
+
await (0, import_writeZixuluSetting.writeZixuluSetting)(setting);
|
|
85
|
+
if (backup)
|
|
86
|
+
await (0, import_promises.rename)(target, (0, import_path.join)(dir, `${base}.${Date.now()}.bak`));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
await (0, import_promises.writeFile)(target, code, "utf-8");
|
|
90
|
+
import_consola.default.success(`${target} 同步完成`);
|
|
91
|
+
}
|
|
92
|
+
async function syncEditorSetting() {
|
|
93
|
+
let setting = await (0, import_readZixuluSetting.readZixuluSetting)();
|
|
94
|
+
const { default: inquirer } = await import("inquirer");
|
|
95
|
+
const { source } = await inquirer.prompt([
|
|
96
|
+
{
|
|
97
|
+
type: "list",
|
|
98
|
+
name: "source",
|
|
99
|
+
message: "选择同步来源",
|
|
100
|
+
choices: ["Code", "Cursor", "Online"],
|
|
101
|
+
default: setting.syncEditor?.source ?? "Cursor"
|
|
102
|
+
}
|
|
103
|
+
]);
|
|
104
|
+
setting.syncEditor ??= {};
|
|
105
|
+
setting.syncEditor.source = source;
|
|
106
|
+
const { targets, fileTypes } = await inquirer.prompt([
|
|
107
|
+
{
|
|
108
|
+
type: "checkbox",
|
|
109
|
+
name: "targets",
|
|
110
|
+
message: "选择同步目标",
|
|
111
|
+
choices: ["Code", "Cursor"].filter((v) => v !== source),
|
|
112
|
+
default: (setting.syncEditor?.targets ?? ["Code", "Cursor"]).filter((v) => v !== source)
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
type: "checkbox",
|
|
116
|
+
name: "fileTypes",
|
|
117
|
+
message: "选择同步文件类型",
|
|
118
|
+
choices: ["settings", "snippets"],
|
|
119
|
+
default: setting.syncEditor?.fileTypes ?? ["settings", "snippets"]
|
|
120
|
+
}
|
|
121
|
+
]);
|
|
122
|
+
setting.syncEditor.targets = targets;
|
|
123
|
+
setting.syncEditor.fileTypes = fileTypes;
|
|
124
|
+
await (0, import_writeZixuluSetting.writeZixuluSetting)(setting);
|
|
125
|
+
const configs = fileTypes.map(
|
|
126
|
+
(fileType) => targets.map((target) => ({
|
|
127
|
+
source: fileSourceMap[fileType][source],
|
|
128
|
+
target: fileSourceMap[fileType][target]
|
|
129
|
+
}))
|
|
130
|
+
).flat();
|
|
131
|
+
for (const config of configs) {
|
|
132
|
+
await syncEditorFile(config);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
136
|
+
0 && (module.exports = {
|
|
137
|
+
syncEditorFile,
|
|
138
|
+
syncEditorSetting
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=syncEditorSetting.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/syncEditorSetting.ts"],
|
|
4
|
+
"sourcesContent": ["import { existsSync } from \"fs\"\nimport { readFile, rename, writeFile } from \"fs/promises\"\nimport { homedir } from \"os\"\nimport { join, parse } from \"path\"\nimport consola from \"consola\"\n\nimport { readZixuluSetting } from \"./readZixuluSetting\"\nimport { writeZixuluSetting } from \"./writeZixuluSetting\"\n\nexport type Editor = \"Code\" | \"Cursor\"\n\nexport type SyncEditorSettingSource = Editor | \"Online\"\n\nexport type FileType = \"settings\" | \"snippets\"\n\nexport type FileSourceMap = Record<FileType, Record<SyncEditorSettingSource, string>>\n\nconst userDir = homedir()\n\nconst fileSourceMap: FileSourceMap = {\n settings: {\n Code: join(userDir, \"AppData/Roaming/Code/User/settings.json\"),\n Cursor: join(userDir, \"AppData/Roaming/Cursor/User/settings.json\"),\n Online: \"https://luzixu.geskj.com/settings.json\",\n },\n snippets: {\n Code: join(userDir, \"AppData/Roaming/Code/User/snippets/global.code-snippets\"),\n Cursor: join(userDir, \"AppData/Roaming/Cursor/User/snippets/global.code-snippets\"),\n Online: \"https://luzixu.geskj.com/global.code-snippets\",\n },\n}\n\nexport interface SyncEditorSettingParams {\n source: SyncEditorSettingSource\n target: Editor\n}\n\nexport interface SyncEditorFileParams {\n source: string\n target: string\n}\n\nasync function getFile(source: string) {\n if (source.startsWith(\"http\")) {\n const response = await fetch(source)\n return await response.text()\n }\n return await readFile(source, \"utf-8\")\n}\n\nexport async function syncEditorFile({ source, target }: SyncEditorFileParams) {\n const { dir, base } = parse(target)\n let setting = await readZixuluSetting()\n const code = await getFile(source)\n if (existsSync(target)) {\n const text = await readFile(target, \"utf-8\")\n if (text === code) {\n consola.success(`${target} 已是最新`)\n return\n } else {\n const { default: inquirer } = await import(\"inquirer\")\n type Answer = { backup: boolean }\n const { backup } = await inquirer.prompt<Answer>({\n type: \"confirm\",\n name: \"backup\",\n message: `是否备份原文件(${target})`,\n default: setting.syncEditor?.fileConfigs?.[target]?.backup ?? true,\n })\n setting.syncEditor ??= {}\n setting.syncEditor.fileConfigs ??= {}\n setting.syncEditor.fileConfigs[target] ??= {}\n setting.syncEditor.fileConfigs[target].backup = backup\n await writeZixuluSetting(setting)\n if (backup) await rename(target, join(dir, `${base}.${Date.now()}.bak`))\n }\n }\n await writeFile(target, code, \"utf-8\")\n consola.success(`${target} 同步完成`)\n}\n\nexport async function syncEditorSetting() {\n let setting = await readZixuluSetting()\n const { default: inquirer } = await import(\"inquirer\")\n\n interface Answer {\n source: SyncEditorSettingSource\n fileTypes: FileType[]\n targets: Editor[]\n }\n\n const { source } = await inquirer.prompt<Answer>([\n {\n type: \"list\",\n name: \"source\",\n message: \"选择同步来源\",\n choices: [\"Code\", \"Cursor\", \"Online\"],\n default: setting.syncEditor?.source ?? \"Cursor\",\n },\n ])\n\n setting.syncEditor ??= {}\n setting.syncEditor.source = source\n\n const { targets, fileTypes } = await inquirer.prompt<Answer>([\n {\n type: \"checkbox\",\n name: \"targets\",\n message: \"选择同步目标\",\n choices: [\"Code\", \"Cursor\"].filter(v => v !== source),\n default: (setting.syncEditor?.targets ?? [\"Code\", \"Cursor\"]).filter(v => v !== source),\n },\n {\n type: \"checkbox\",\n name: \"fileTypes\",\n message: \"选择同步文件类型\",\n choices: [\"settings\", \"snippets\"],\n default: setting.syncEditor?.fileTypes ?? [\"settings\", \"snippets\"],\n },\n ])\n\n setting.syncEditor.targets = targets\n setting.syncEditor.fileTypes = fileTypes\n\n await writeZixuluSetting(setting)\n\n const configs: SyncEditorFileParams[] = fileTypes\n .map(fileType =>\n targets.map(target => ({\n source: fileSourceMap[fileType][source],\n target: fileSourceMap[fileType][target],\n })),\n )\n .flat()\n\n for (const config of configs) {\n await syncEditorFile(config)\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA2B;AAC3B,sBAA4C;AAC5C,gBAAwB;AACxB,kBAA4B;AAC5B,qBAAoB;AAEpB,+BAAkC;AAClC,gCAAmC;AAUnC,IAAM,cAAU,mBAAQ;AAExB,IAAM,gBAA+B;AAAA,EACjC,UAAU;AAAA,IACN,UAAM,kBAAK,SAAS,yCAAyC;AAAA,IAC7D,YAAQ,kBAAK,SAAS,2CAA2C;AAAA,IACjE,QAAQ;AAAA,EACZ;AAAA,EACA,UAAU;AAAA,IACN,UAAM,kBAAK,SAAS,yDAAyD;AAAA,IAC7E,YAAQ,kBAAK,SAAS,2DAA2D;AAAA,IACjF,QAAQ;AAAA,EACZ;AACJ;AAYA,eAAe,QAAQ,QAAgB;AACnC,MAAI,OAAO,WAAW,MAAM,GAAG;AAC3B,UAAM,WAAW,MAAM,MAAM,MAAM;AACnC,WAAO,MAAM,SAAS,KAAK;AAAA,EAC/B;AACA,SAAO,UAAM,0BAAS,QAAQ,OAAO;AACzC;AAEA,eAAsB,eAAe,EAAE,QAAQ,OAAO,GAAyB;AAC3E,QAAM,EAAE,KAAK,KAAK,QAAI,mBAAM,MAAM;AAClC,MAAI,UAAU,UAAM,4CAAkB;AACtC,QAAM,OAAO,MAAM,QAAQ,MAAM;AACjC,UAAI,sBAAW,MAAM,GAAG;AACpB,UAAM,OAAO,UAAM,0BAAS,QAAQ,OAAO;AAC3C,QAAI,SAAS,MAAM;AACf,qBAAAA,QAAQ,QAAQ,GAAG,aAAa;AAChC;AAAA,IACJ,OAAO;AACH,YAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AAErD,YAAM,EAAE,OAAO,IAAI,MAAM,SAAS,OAAe;AAAA,QAC7C,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,SAAS,QAAQ,YAAY,cAAc,MAAM,GAAG,UAAU;AAAA,MAClE,CAAC;AACD,cAAQ,eAAe,CAAC;AACxB,cAAQ,WAAW,gBAAgB,CAAC;AACpC,cAAQ,WAAW,YAAY,MAAM,MAAM,CAAC;AAC5C,cAAQ,WAAW,YAAY,MAAM,EAAE,SAAS;AAChD,gBAAM,8CAAmB,OAAO;AAChC,UAAI;AAAQ,kBAAM,wBAAO,YAAQ,kBAAK,KAAK,GAAG,QAAQ,KAAK,IAAI,OAAO,CAAC;AAAA,IAC3E;AAAA,EACJ;AACA,YAAM,2BAAU,QAAQ,MAAM,OAAO;AACrC,iBAAAA,QAAQ,QAAQ,GAAG,aAAa;AACpC;AAEA,eAAsB,oBAAoB;AACtC,MAAI,UAAU,UAAM,4CAAkB;AACtC,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AAQrD,QAAM,EAAE,OAAO,IAAI,MAAM,SAAS,OAAe;AAAA,IAC7C;AAAA,MACI,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,CAAC,QAAQ,UAAU,QAAQ;AAAA,MACpC,SAAS,QAAQ,YAAY,UAAU;AAAA,IAC3C;AAAA,EACJ,CAAC;AAED,UAAQ,eAAe,CAAC;AACxB,UAAQ,WAAW,SAAS;AAE5B,QAAM,EAAE,SAAS,UAAU,IAAI,MAAM,SAAS,OAAe;AAAA,IACzD;AAAA,MACI,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,CAAC,QAAQ,QAAQ,EAAE,OAAO,OAAK,MAAM,MAAM;AAAA,MACpD,UAAU,QAAQ,YAAY,WAAW,CAAC,QAAQ,QAAQ,GAAG,OAAO,OAAK,MAAM,MAAM;AAAA,IACzF;AAAA,IACA;AAAA,MACI,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,CAAC,YAAY,UAAU;AAAA,MAChC,SAAS,QAAQ,YAAY,aAAa,CAAC,YAAY,UAAU;AAAA,IACrE;AAAA,EACJ,CAAC;AAED,UAAQ,WAAW,UAAU;AAC7B,UAAQ,WAAW,YAAY;AAE/B,YAAM,8CAAmB,OAAO;AAEhC,QAAM,UAAkC,UACnC;AAAA,IAAI,cACD,QAAQ,IAAI,aAAW;AAAA,MACnB,QAAQ,cAAc,QAAQ,EAAE,MAAM;AAAA,MACtC,QAAQ,cAAc,QAAQ,EAAE,MAAM;AAAA,IAC1C,EAAE;AAAA,EACN,EACC,KAAK;AAEV,aAAW,UAAU,SAAS;AAC1B,UAAM,eAAe,MAAM;AAAA,EAC/B;AACJ;",
|
|
6
|
+
"names": ["consola"]
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zixulu",
|
|
3
|
-
"version": "1.63.
|
|
3
|
+
"version": "1.63.3",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"bin": "dist/index.js",
|
|
@@ -33,31 +33,31 @@
|
|
|
33
33
|
"@iarna/toml": "^3.0.0",
|
|
34
34
|
"clipboardy": "^4.0.0",
|
|
35
35
|
"commander": "^12.1.0",
|
|
36
|
-
"consola": "^3.4.
|
|
36
|
+
"consola": "^3.4.2",
|
|
37
37
|
"dayjs": "^1.11.13",
|
|
38
|
-
"deepsea-tools": "^5.
|
|
38
|
+
"deepsea-tools": "^5.27.0",
|
|
39
39
|
"https-proxy-agent": "^7.0.6",
|
|
40
40
|
"inquirer": "^9.3.7",
|
|
41
|
-
"jsdom": "^
|
|
41
|
+
"jsdom": "^26.1.0",
|
|
42
42
|
"json5": "^2.2.3",
|
|
43
43
|
"md5": "^2.3.0",
|
|
44
44
|
"node-fetch": "^3.3.2",
|
|
45
45
|
"semver": "^7.7.1",
|
|
46
46
|
"simple-git": "^3.27.0",
|
|
47
|
-
"soda-nodejs": "^0.
|
|
48
|
-
"yaml": "^2.7.
|
|
47
|
+
"soda-nodejs": "^0.7.1",
|
|
48
|
+
"yaml": "^2.7.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@ianvs/prettier-plugin-sort-imports": "^4.4.1",
|
|
52
52
|
"@types/inquirer": "^9.0.7",
|
|
53
53
|
"@types/jsdom": "^21.1.7",
|
|
54
54
|
"@types/md5": "^2.3.5",
|
|
55
|
-
"@types/node": "^22.
|
|
56
|
-
"@types/semver": "^7.
|
|
55
|
+
"@types/node": "^22.15.0",
|
|
56
|
+
"@types/semver": "^7.7.0",
|
|
57
57
|
"father": "^4.5.3",
|
|
58
|
-
"glob": "^11.0.
|
|
58
|
+
"glob": "^11.0.2",
|
|
59
59
|
"prettier": "^3.5.3",
|
|
60
|
-
"typescript": "^5.8.
|
|
60
|
+
"typescript": "^5.8.3"
|
|
61
61
|
},
|
|
62
62
|
"resolutions": {
|
|
63
63
|
"string-width": "^4",
|
package/src/index.ts
CHANGED
|
@@ -61,7 +61,7 @@ import { setBun } from "./utils/setBun"
|
|
|
61
61
|
import { setDockerRegistry } from "./utils/setDockerRegistry"
|
|
62
62
|
import { setEnv } from "./utils/setEnv"
|
|
63
63
|
import { setGlobalConfig } from "./utils/setGlobalConfig"
|
|
64
|
-
import {
|
|
64
|
+
import { syncEditorSetting } from "./utils/syncEditorSetting"
|
|
65
65
|
import { tailwindPatch } from "./utils/tailwindPatch"
|
|
66
66
|
import { tar } from "./utils/tar"
|
|
67
67
|
import { test } from "./utils/test"
|
|
@@ -343,7 +343,7 @@ program
|
|
|
343
343
|
await test()
|
|
344
344
|
})
|
|
345
345
|
|
|
346
|
-
program.command("sync-
|
|
346
|
+
program.command("sync-editor").alias("se").description("同步编辑器配置").action(syncEditorSetting)
|
|
347
347
|
|
|
348
348
|
program.command("server-to-action").alias("sta").description("将 server 文件夹下的文件转换为 action").action(serverToAction)
|
|
349
349
|
|
|
@@ -3,17 +3,24 @@ import { readFile } from "fs/promises"
|
|
|
3
3
|
import { homedir } from "os"
|
|
4
4
|
import { join } from "path"
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
import { Editor, FileType, SyncEditorSettingSource } from "./syncEditorSetting"
|
|
7
|
+
|
|
8
|
+
export interface SyncEditorFileConfig {
|
|
9
9
|
backup?: boolean
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
export
|
|
12
|
+
export interface SyncEditorConfig {
|
|
13
|
+
fileConfigs?: Record<string, SyncEditorFileConfig>
|
|
14
|
+
fileTypes?: FileType[]
|
|
15
|
+
source?: SyncEditorSettingSource
|
|
16
|
+
targets?: Editor[]
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface ZixuluSetting {
|
|
13
20
|
vscodeDownloadHistory?: string[]
|
|
14
21
|
softwareDownloadHistory?: string[]
|
|
15
22
|
upgradeWorkspaceDependcenyHistory?: Record<string, string[]>
|
|
16
|
-
|
|
23
|
+
syncEditor?: SyncEditorConfig
|
|
17
24
|
}
|
|
18
25
|
|
|
19
26
|
export async function readZixuluSetting(): Promise<ZixuluSetting> {
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { existsSync } from "fs"
|
|
2
|
+
import { readFile, rename, writeFile } from "fs/promises"
|
|
3
|
+
import { homedir } from "os"
|
|
4
|
+
import { join, parse } from "path"
|
|
5
|
+
import consola from "consola"
|
|
6
|
+
|
|
7
|
+
import { readZixuluSetting } from "./readZixuluSetting"
|
|
8
|
+
import { writeZixuluSetting } from "./writeZixuluSetting"
|
|
9
|
+
|
|
10
|
+
export type Editor = "Code" | "Cursor"
|
|
11
|
+
|
|
12
|
+
export type SyncEditorSettingSource = Editor | "Online"
|
|
13
|
+
|
|
14
|
+
export type FileType = "settings" | "snippets"
|
|
15
|
+
|
|
16
|
+
export type FileSourceMap = Record<FileType, Record<SyncEditorSettingSource, string>>
|
|
17
|
+
|
|
18
|
+
const userDir = homedir()
|
|
19
|
+
|
|
20
|
+
const fileSourceMap: FileSourceMap = {
|
|
21
|
+
settings: {
|
|
22
|
+
Code: join(userDir, "AppData/Roaming/Code/User/settings.json"),
|
|
23
|
+
Cursor: join(userDir, "AppData/Roaming/Cursor/User/settings.json"),
|
|
24
|
+
Online: "https://luzixu.geskj.com/settings.json",
|
|
25
|
+
},
|
|
26
|
+
snippets: {
|
|
27
|
+
Code: join(userDir, "AppData/Roaming/Code/User/snippets/global.code-snippets"),
|
|
28
|
+
Cursor: join(userDir, "AppData/Roaming/Cursor/User/snippets/global.code-snippets"),
|
|
29
|
+
Online: "https://luzixu.geskj.com/global.code-snippets",
|
|
30
|
+
},
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface SyncEditorSettingParams {
|
|
34
|
+
source: SyncEditorSettingSource
|
|
35
|
+
target: Editor
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface SyncEditorFileParams {
|
|
39
|
+
source: string
|
|
40
|
+
target: string
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async function getFile(source: string) {
|
|
44
|
+
if (source.startsWith("http")) {
|
|
45
|
+
const response = await fetch(source)
|
|
46
|
+
return await response.text()
|
|
47
|
+
}
|
|
48
|
+
return await readFile(source, "utf-8")
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export async function syncEditorFile({ source, target }: SyncEditorFileParams) {
|
|
52
|
+
const { dir, base } = parse(target)
|
|
53
|
+
let setting = await readZixuluSetting()
|
|
54
|
+
const code = await getFile(source)
|
|
55
|
+
if (existsSync(target)) {
|
|
56
|
+
const text = await readFile(target, "utf-8")
|
|
57
|
+
if (text === code) {
|
|
58
|
+
consola.success(`${target} 已是最新`)
|
|
59
|
+
return
|
|
60
|
+
} else {
|
|
61
|
+
const { default: inquirer } = await import("inquirer")
|
|
62
|
+
type Answer = { backup: boolean }
|
|
63
|
+
const { backup } = await inquirer.prompt<Answer>({
|
|
64
|
+
type: "confirm",
|
|
65
|
+
name: "backup",
|
|
66
|
+
message: `是否备份原文件(${target})`,
|
|
67
|
+
default: setting.syncEditor?.fileConfigs?.[target]?.backup ?? true,
|
|
68
|
+
})
|
|
69
|
+
setting.syncEditor ??= {}
|
|
70
|
+
setting.syncEditor.fileConfigs ??= {}
|
|
71
|
+
setting.syncEditor.fileConfigs[target] ??= {}
|
|
72
|
+
setting.syncEditor.fileConfigs[target].backup = backup
|
|
73
|
+
await writeZixuluSetting(setting)
|
|
74
|
+
if (backup) await rename(target, join(dir, `${base}.${Date.now()}.bak`))
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
await writeFile(target, code, "utf-8")
|
|
78
|
+
consola.success(`${target} 同步完成`)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export async function syncEditorSetting() {
|
|
82
|
+
let setting = await readZixuluSetting()
|
|
83
|
+
const { default: inquirer } = await import("inquirer")
|
|
84
|
+
|
|
85
|
+
interface Answer {
|
|
86
|
+
source: SyncEditorSettingSource
|
|
87
|
+
fileTypes: FileType[]
|
|
88
|
+
targets: Editor[]
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const { source } = await inquirer.prompt<Answer>([
|
|
92
|
+
{
|
|
93
|
+
type: "list",
|
|
94
|
+
name: "source",
|
|
95
|
+
message: "选择同步来源",
|
|
96
|
+
choices: ["Code", "Cursor", "Online"],
|
|
97
|
+
default: setting.syncEditor?.source ?? "Cursor",
|
|
98
|
+
},
|
|
99
|
+
])
|
|
100
|
+
|
|
101
|
+
setting.syncEditor ??= {}
|
|
102
|
+
setting.syncEditor.source = source
|
|
103
|
+
|
|
104
|
+
const { targets, fileTypes } = await inquirer.prompt<Answer>([
|
|
105
|
+
{
|
|
106
|
+
type: "checkbox",
|
|
107
|
+
name: "targets",
|
|
108
|
+
message: "选择同步目标",
|
|
109
|
+
choices: ["Code", "Cursor"].filter(v => v !== source),
|
|
110
|
+
default: (setting.syncEditor?.targets ?? ["Code", "Cursor"]).filter(v => v !== source),
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: "checkbox",
|
|
114
|
+
name: "fileTypes",
|
|
115
|
+
message: "选择同步文件类型",
|
|
116
|
+
choices: ["settings", "snippets"],
|
|
117
|
+
default: setting.syncEditor?.fileTypes ?? ["settings", "snippets"],
|
|
118
|
+
},
|
|
119
|
+
])
|
|
120
|
+
|
|
121
|
+
setting.syncEditor.targets = targets
|
|
122
|
+
setting.syncEditor.fileTypes = fileTypes
|
|
123
|
+
|
|
124
|
+
await writeZixuluSetting(setting)
|
|
125
|
+
|
|
126
|
+
const configs: SyncEditorFileParams[] = fileTypes
|
|
127
|
+
.map(fileType =>
|
|
128
|
+
targets.map(target => ({
|
|
129
|
+
source: fileSourceMap[fileType][source],
|
|
130
|
+
target: fileSourceMap[fileType][target],
|
|
131
|
+
})),
|
|
132
|
+
)
|
|
133
|
+
.flat()
|
|
134
|
+
|
|
135
|
+
for (const config of configs) {
|
|
136
|
+
await syncEditorFile(config)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function syncSnippets(): Promise<void>;
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
-
|
|
29
|
-
// src/utils/syncSnippets.ts
|
|
30
|
-
var syncSnippets_exports = {};
|
|
31
|
-
__export(syncSnippets_exports, {
|
|
32
|
-
syncSnippets: () => syncSnippets
|
|
33
|
-
});
|
|
34
|
-
module.exports = __toCommonJS(syncSnippets_exports);
|
|
35
|
-
var import_fs = require("fs");
|
|
36
|
-
var import_promises = require("fs/promises");
|
|
37
|
-
var import_os = require("os");
|
|
38
|
-
var import_path = require("path");
|
|
39
|
-
var import_consola = __toESM(require("consola"));
|
|
40
|
-
var import_readZixuluSetting = require("./readZixuluSetting");
|
|
41
|
-
var import_writeZixuluSetting = require("./writeZixuluSetting");
|
|
42
|
-
async function syncSnippets() {
|
|
43
|
-
let setting = await (0, import_readZixuluSetting.readZixuluSetting)();
|
|
44
|
-
const { default: inquirer } = await import("inquirer");
|
|
45
|
-
const userDir = (0, import_os.homedir)();
|
|
46
|
-
const snippetSource = (0, import_path.join)(userDir, "AppData/Roaming/Cursor/User/snippets");
|
|
47
|
-
const response = await fetch("https://luzixu.geskj.com/global.code-snippets");
|
|
48
|
-
const code = await response.text();
|
|
49
|
-
let filename = setting.syncVscodeSnippets?.filename || "global.code-snippets";
|
|
50
|
-
if ((0, import_fs.existsSync)((0, import_path.join)(snippetSource, filename))) {
|
|
51
|
-
const text = await (0, import_promises.readFile)((0, import_path.join)(snippetSource, filename), "utf-8");
|
|
52
|
-
if (text === code) {
|
|
53
|
-
import_consola.default.success("global.code-snippets 已是最新");
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
while (true) {
|
|
58
|
-
if (!(0, import_fs.existsSync)((0, import_path.join)(snippetSource, filename)))
|
|
59
|
-
break;
|
|
60
|
-
const { replace } = await inquirer.prompt({
|
|
61
|
-
type: "confirm",
|
|
62
|
-
name: "replace",
|
|
63
|
-
message: "global.code-snippets 已存在,是否替换",
|
|
64
|
-
default: setting.syncVscodeSnippets?.replace ?? false
|
|
65
|
-
});
|
|
66
|
-
setting = { ...setting, syncVscodeSnippets: { ...setting.syncVscodeSnippets, replace } };
|
|
67
|
-
if (replace)
|
|
68
|
-
break;
|
|
69
|
-
const { filename: newFilename } = await inquirer.prompt({
|
|
70
|
-
type: "input",
|
|
71
|
-
name: "filename",
|
|
72
|
-
message: "请输入新的文件名(不带.code-snippets)",
|
|
73
|
-
default: setting.syncVscodeSnippets?.filename?.replace(/\.code-snippets$/, "")
|
|
74
|
-
});
|
|
75
|
-
setting = {
|
|
76
|
-
...setting,
|
|
77
|
-
syncVscodeSnippets: { ...setting.syncVscodeSnippets, filename: `${newFilename.replace(/\.code-snippets$/, "")}.code-snippets` }
|
|
78
|
-
};
|
|
79
|
-
filename = `${newFilename.replace(/\.code-snippets$/, "")}.code-snippets`;
|
|
80
|
-
}
|
|
81
|
-
if ((0, import_fs.existsSync)((0, import_path.join)(snippetSource, filename))) {
|
|
82
|
-
const { backup } = await inquirer.prompt({
|
|
83
|
-
type: "confirm",
|
|
84
|
-
name: "backup",
|
|
85
|
-
message: "是否备份原文件",
|
|
86
|
-
default: setting.syncVscodeSnippets?.backup ?? true
|
|
87
|
-
});
|
|
88
|
-
setting = { ...setting, syncVscodeSnippets: { ...setting.syncVscodeSnippets, backup } };
|
|
89
|
-
if (backup)
|
|
90
|
-
await (0, import_promises.rename)((0, import_path.join)(snippetSource, filename), (0, import_path.join)(snippetSource, `${filename}.${Date.now()}.bak`));
|
|
91
|
-
}
|
|
92
|
-
await (0, import_promises.writeFile)((0, import_path.join)(snippetSource, filename), code, "utf-8");
|
|
93
|
-
await (0, import_writeZixuluSetting.writeZixuluSetting)(setting);
|
|
94
|
-
import_consola.default.success("global.code-snippets 同步完成");
|
|
95
|
-
}
|
|
96
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
97
|
-
0 && (module.exports = {
|
|
98
|
-
syncSnippets
|
|
99
|
-
});
|
|
100
|
-
//# sourceMappingURL=syncSnippets.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/syncSnippets.ts"],
|
|
4
|
-
"sourcesContent": ["import { existsSync } from \"fs\"\nimport { readFile, rename, writeFile } from \"fs/promises\"\nimport { homedir } from \"os\"\nimport { join } from \"path\"\nimport consola from \"consola\"\n\nimport { readZixuluSetting } from \"./readZixuluSetting\"\nimport { writeZixuluSetting } from \"./writeZixuluSetting\"\n\nexport async function syncSnippets() {\n let setting = await readZixuluSetting()\n const { default: inquirer } = await import(\"inquirer\")\n const userDir = homedir()\n const snippetSource = join(userDir, \"AppData/Roaming/Cursor/User/snippets\")\n const response = await fetch(\"https://luzixu.geskj.com/global.code-snippets\")\n const code = await response.text()\n let filename = setting.syncVscodeSnippets?.filename || \"global.code-snippets\"\n if (existsSync(join(snippetSource, filename))) {\n const text = await readFile(join(snippetSource, filename), \"utf-8\")\n if (text === code) {\n consola.success(\"global.code-snippets 已是最新\")\n return\n }\n }\n while (true) {\n if (!existsSync(join(snippetSource, filename))) break\n type Answer = { replace: boolean }\n const { replace } = await inquirer.prompt<Answer>({\n type: \"confirm\",\n name: \"replace\",\n message: \"global.code-snippets 已存在,是否替换\",\n default: setting.syncVscodeSnippets?.replace ?? false,\n })\n setting = { ...setting, syncVscodeSnippets: { ...setting.syncVscodeSnippets, replace } }\n if (replace) break\n type Answer2 = { filename: string }\n const { filename: newFilename } = await inquirer.prompt<Answer2>({\n type: \"input\",\n name: \"filename\",\n message: \"请输入新的文件名(不带.code-snippets)\",\n default: setting.syncVscodeSnippets?.filename?.replace(/\\.code-snippets$/, \"\"),\n })\n setting = {\n ...setting,\n syncVscodeSnippets: { ...setting.syncVscodeSnippets, filename: `${newFilename.replace(/\\.code-snippets$/, \"\")}.code-snippets` },\n }\n filename = `${newFilename.replace(/\\.code-snippets$/, \"\")}.code-snippets`\n }\n if (existsSync(join(snippetSource, filename))) {\n type Answer3 = { backup: boolean }\n const { backup } = await inquirer.prompt<Answer3>({\n type: \"confirm\",\n name: \"backup\",\n message: \"是否备份原文件\",\n default: setting.syncVscodeSnippets?.backup ?? true,\n })\n setting = { ...setting, syncVscodeSnippets: { ...setting.syncVscodeSnippets, backup } }\n if (backup) await rename(join(snippetSource, filename), join(snippetSource, `${filename}.${Date.now()}.bak`))\n }\n await writeFile(join(snippetSource, filename), code, \"utf-8\")\n await writeZixuluSetting(setting)\n consola.success(\"global.code-snippets 同步完成\")\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA2B;AAC3B,sBAA4C;AAC5C,gBAAwB;AACxB,kBAAqB;AACrB,qBAAoB;AAEpB,+BAAkC;AAClC,gCAAmC;AAEnC,eAAsB,eAAe;AACjC,MAAI,UAAU,UAAM,4CAAkB;AACtC,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AACrD,QAAM,cAAU,mBAAQ;AACxB,QAAM,oBAAgB,kBAAK,SAAS,sCAAsC;AAC1E,QAAM,WAAW,MAAM,MAAM,+CAA+C;AAC5E,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,MAAI,WAAW,QAAQ,oBAAoB,YAAY;AACvD,UAAI,0BAAW,kBAAK,eAAe,QAAQ,CAAC,GAAG;AAC3C,UAAM,OAAO,UAAM,8BAAS,kBAAK,eAAe,QAAQ,GAAG,OAAO;AAClE,QAAI,SAAS,MAAM;AACf,qBAAAA,QAAQ,QAAQ,2BAA2B;AAC3C;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,MAAM;AACT,QAAI,KAAC,0BAAW,kBAAK,eAAe,QAAQ,CAAC;AAAG;AAEhD,UAAM,EAAE,QAAQ,IAAI,MAAM,SAAS,OAAe;AAAA,MAC9C,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,QAAQ,oBAAoB,WAAW;AAAA,IACpD,CAAC;AACD,cAAU,EAAE,GAAG,SAAS,oBAAoB,EAAE,GAAG,QAAQ,oBAAoB,QAAQ,EAAE;AACvF,QAAI;AAAS;AAEb,UAAM,EAAE,UAAU,YAAY,IAAI,MAAM,SAAS,OAAgB;AAAA,MAC7D,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,QAAQ,oBAAoB,UAAU,QAAQ,oBAAoB,EAAE;AAAA,IACjF,CAAC;AACD,cAAU;AAAA,MACN,GAAG;AAAA,MACH,oBAAoB,EAAE,GAAG,QAAQ,oBAAoB,UAAU,GAAG,YAAY,QAAQ,oBAAoB,EAAE,kBAAkB;AAAA,IAClI;AACA,eAAW,GAAG,YAAY,QAAQ,oBAAoB,EAAE;AAAA,EAC5D;AACA,UAAI,0BAAW,kBAAK,eAAe,QAAQ,CAAC,GAAG;AAE3C,UAAM,EAAE,OAAO,IAAI,MAAM,SAAS,OAAgB;AAAA,MAC9C,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,QAAQ,oBAAoB,UAAU;AAAA,IACnD,CAAC;AACD,cAAU,EAAE,GAAG,SAAS,oBAAoB,EAAE,GAAG,QAAQ,oBAAoB,OAAO,EAAE;AACtF,QAAI;AAAQ,gBAAM,4BAAO,kBAAK,eAAe,QAAQ,OAAG,kBAAK,eAAe,GAAG,YAAY,KAAK,IAAI,OAAO,CAAC;AAAA,EAChH;AACA,YAAM,+BAAU,kBAAK,eAAe,QAAQ,GAAG,MAAM,OAAO;AAC5D,YAAM,8CAAmB,OAAO;AAChC,iBAAAA,QAAQ,QAAQ,2BAA2B;AAC/C;",
|
|
6
|
-
"names": ["consola"]
|
|
7
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { existsSync } from "fs"
|
|
2
|
-
import { readFile, rename, writeFile } from "fs/promises"
|
|
3
|
-
import { homedir } from "os"
|
|
4
|
-
import { join } from "path"
|
|
5
|
-
import consola from "consola"
|
|
6
|
-
|
|
7
|
-
import { readZixuluSetting } from "./readZixuluSetting"
|
|
8
|
-
import { writeZixuluSetting } from "./writeZixuluSetting"
|
|
9
|
-
|
|
10
|
-
export async function syncSnippets() {
|
|
11
|
-
let setting = await readZixuluSetting()
|
|
12
|
-
const { default: inquirer } = await import("inquirer")
|
|
13
|
-
const userDir = homedir()
|
|
14
|
-
const snippetSource = join(userDir, "AppData/Roaming/Cursor/User/snippets")
|
|
15
|
-
const response = await fetch("https://luzixu.geskj.com/global.code-snippets")
|
|
16
|
-
const code = await response.text()
|
|
17
|
-
let filename = setting.syncVscodeSnippets?.filename || "global.code-snippets"
|
|
18
|
-
if (existsSync(join(snippetSource, filename))) {
|
|
19
|
-
const text = await readFile(join(snippetSource, filename), "utf-8")
|
|
20
|
-
if (text === code) {
|
|
21
|
-
consola.success("global.code-snippets 已是最新")
|
|
22
|
-
return
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
while (true) {
|
|
26
|
-
if (!existsSync(join(snippetSource, filename))) break
|
|
27
|
-
type Answer = { replace: boolean }
|
|
28
|
-
const { replace } = await inquirer.prompt<Answer>({
|
|
29
|
-
type: "confirm",
|
|
30
|
-
name: "replace",
|
|
31
|
-
message: "global.code-snippets 已存在,是否替换",
|
|
32
|
-
default: setting.syncVscodeSnippets?.replace ?? false,
|
|
33
|
-
})
|
|
34
|
-
setting = { ...setting, syncVscodeSnippets: { ...setting.syncVscodeSnippets, replace } }
|
|
35
|
-
if (replace) break
|
|
36
|
-
type Answer2 = { filename: string }
|
|
37
|
-
const { filename: newFilename } = await inquirer.prompt<Answer2>({
|
|
38
|
-
type: "input",
|
|
39
|
-
name: "filename",
|
|
40
|
-
message: "请输入新的文件名(不带.code-snippets)",
|
|
41
|
-
default: setting.syncVscodeSnippets?.filename?.replace(/\.code-snippets$/, ""),
|
|
42
|
-
})
|
|
43
|
-
setting = {
|
|
44
|
-
...setting,
|
|
45
|
-
syncVscodeSnippets: { ...setting.syncVscodeSnippets, filename: `${newFilename.replace(/\.code-snippets$/, "")}.code-snippets` },
|
|
46
|
-
}
|
|
47
|
-
filename = `${newFilename.replace(/\.code-snippets$/, "")}.code-snippets`
|
|
48
|
-
}
|
|
49
|
-
if (existsSync(join(snippetSource, filename))) {
|
|
50
|
-
type Answer3 = { backup: boolean }
|
|
51
|
-
const { backup } = await inquirer.prompt<Answer3>({
|
|
52
|
-
type: "confirm",
|
|
53
|
-
name: "backup",
|
|
54
|
-
message: "是否备份原文件",
|
|
55
|
-
default: setting.syncVscodeSnippets?.backup ?? true,
|
|
56
|
-
})
|
|
57
|
-
setting = { ...setting, syncVscodeSnippets: { ...setting.syncVscodeSnippets, backup } }
|
|
58
|
-
if (backup) await rename(join(snippetSource, filename), join(snippetSource, `${filename}.${Date.now()}.bak`))
|
|
59
|
-
}
|
|
60
|
-
await writeFile(join(snippetSource, filename), code, "utf-8")
|
|
61
|
-
await writeZixuluSetting(setting)
|
|
62
|
-
consola.success("global.code-snippets 同步完成")
|
|
63
|
-
}
|