diff --git a/package.json b/package.json index 0b33362..59311d9 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,15 @@ { - "name": "vite-react", + "name": "code-graph", "private": true, "version": "0.0.1", "type": "module", - "basename": "/root/vite-react", + "basename": "/root/code-graph", "scripts": { "dev": "vite", "build": "vite build", "preview": "vite preview", "ui": "bunx shadcn@latest add ", - "pub": "envision deploy ./dist -k vite-react -v 0.0.1 -y y -u" + "pub": "envision deploy ./dist -k code-graph -v 0.0.1 -y y -u" }, "files": [ "dist" diff --git a/src/modules/project-api.ts b/src/modules/project-api.ts index da93b78..04f2a6d 100644 --- a/src/modules/project-api.ts +++ b/src/modules/project-api.ts @@ -9,6 +9,7 @@ const api = { * @param data.filepath - {string} 项目根目录的绝对路径,必填 * @param data.repo - {string} 代码仓库标识,用于搜索结果展示和过滤,格式如 owner/repo,例如 kevisual/cnb,选填(默认自动从 git 配置读取) * @param data.name - {string} 项目显示名称,用于搜索结果展示,选填(默认使用目录名) + * @param data.type - {string} 项目类型,filepath或cnb-repo,默认为filepath */ "add": { "path": "project", @@ -21,12 +22,6 @@ const api = { "type": "string", "description": "项目根目录的绝对路径,必填" }, - "type": { - "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "项目类型,filepath 表示本地文件路径,cnb-repo 表示 CNB 仓库,选填(默认为 filepath)", - "type": "string", - "optional": true - }, "repo": { "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "代码仓库标识,用于搜索结果展示和过滤,格式如 owner/repo,例如 kevisual/cnb,选填(默认自动从 git 配置读取)", @@ -38,15 +33,13 @@ const api = { "description": "项目显示名称,用于搜索结果展示,选填(默认使用目录名)", "type": "string", "optional": true - } - }, - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" + "type": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "项目类型,filepath或cnb-repo,默认为filepath", + "type": "string", + "optional": true + } }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" @@ -71,14 +64,6 @@ const api = { "description": "要移除的项目根目录绝对路径,必填" } }, - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" - }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" - }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" } @@ -102,14 +87,6 @@ const api = { "description": "要暂停监听的项目根目录绝对路径,必填" } }, - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" - }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" - }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" } @@ -133,14 +110,6 @@ const api = { "description": "要查询的项目根目录绝对路径,必填" } }, - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" - }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" - }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" } @@ -153,14 +122,6 @@ const api = { "key": "list", "description": "列出所有已注册的项目及其当前运行状态(路径、仓库名称、监听是否活跃等)", "metadata": { - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" - }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" - }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" } @@ -229,13 +190,80 @@ const api = { "optional": true } }, - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" + "url": "/root/v1/cnb-dev", + "source": "query-proxy-api" + } + }, + /** + * 初始化项目,通过root目录,搜索当前有git的项目列表,并将其注册到系统中 + * + * @param data - Request parameters + * @param data.rootPath - {string} 搜索项目的根目录绝对路径,默认为 /workspace/projects + */ + "init": { + "path": "project", + "key": "init", + "description": "初始化项目,通过root目录,搜索当前有git的项目列表,并将其注册到系统中", + "metadata": { + "args": { + "rootPath": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "搜索项目的根目录绝对路径,默认为 /workspace/projects", + "type": "string", + "optional": true + } + }, + "url": "/root/v1/cnb-dev", + "source": "query-proxy-api" + } + }, + /** + * 列出当前工作区已注册的项目 + * + * @param data - Request parameters + * @param data.rootPath - {string} 项目根目录绝对路径,默认为 /workspace/projects,指定后只列出该目录下的项目 + */ + "list-projects": { + "path": "project", + "key": "list-projects", + "description": "列出当前工作区已注册的项目", + "metadata": { + "args": { + "rootPath": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "项目根目录绝对路径,默认为 /workspace/projects,指定后只列出该目录下的项目", + "type": "string", + "optional": true + } + }, + "url": "/root/v1/cnb-dev", + "source": "query-proxy-api" + } + }, + /** + * clone 一个项目到projects目录下,并注册到系统中。 + * + * @param data - Request parameters + * @param data.filepath - {string} 新项目根目录的绝对路径,默认在 /workspace/projects 下以仓库名创建子目录 + * @param data.repo - {string} 代码仓库标识,用于搜索结果展示和过滤,格式如 owner/repo,例如 kevisual/cnb,必填 + */ + "clone-cnb": { + "path": "project", + "key": "clone-cnb", + "description": "clone 一个项目到projects目录下,并注册到系统中。", + "metadata": { + "args": { + "filepath": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "新项目根目录的绝对路径,默认在 /workspace/projects 下以仓库名创建子目录", + "type": "string", + "optional": true }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" + "repo": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string", + "description": "代码仓库标识,用于搜索结果展示和过滤,格式如 owner/repo,例如 kevisual/cnb,必填" + } }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" @@ -345,14 +373,6 @@ const api = { "optional": true } }, - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" - }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" - }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" } @@ -378,14 +398,6 @@ const api = { "description": "要读取的文件绝对路径,必填" } }, - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" - }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" - }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" } @@ -416,14 +428,6 @@ const api = { "description": "文件内容的 base64 编码,必填" } }, - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" - }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" - }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" } @@ -485,14 +489,6 @@ const api = { "optional": true } }, - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" - }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" - }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" } @@ -516,14 +512,6 @@ const api = { "description": "要删除的文件绝对路径,必填" } }, - "viewItem": { - "api": { - "url": "/root/v1/cnb-dev" - }, - "type": "api", - "title": "CNB_BOARD", - "routerStatus": "active" - }, "url": "/root/v1/cnb-dev", "source": "query-proxy-api" } diff --git a/src/pages/code-graph/store/index.ts b/src/pages/code-graph/store/index.ts index f3a81a7..0d79c5f 100644 --- a/src/pages/code-graph/store/index.ts +++ b/src/pages/code-graph/store/index.ts @@ -93,10 +93,17 @@ export const useCodeGraphStore = create()((set, get) => ({ addProject: async (filepath, name, type = 'filepath') => { try { const url = get().url || API_URL; - const res = await projectApi.project.add( - { filepath, name: name || undefined, type }, - { url }, - ); + let res: Result | null = null; + if (type === 'filepath') { + res = await projectApi.project.add( + { filepath, name: name || undefined, type }, + { url }, + ); + } else { + res = await projectApi['project']['clone-cnb']({ + repo: filepath, + }, { url }); + } if (res.code === 200) { toast.success('项目添加成功'); await get().loadProjects();