From 318cf64ace4e13d73b0bf6e15db0d031a1995d2f Mon Sep 17 00:00:00 2001 From: li1553770945 <1553770945@qq.com> Date: Sun, 29 Jun 2025 22:50:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=9C=A8=E6=B2=A1=E6=9C=89=E6=89=93?= =?UTF-8?q?=E5=BC=80=E5=B7=A5=E4=BD=9C=E5=8C=BA=E6=97=B6=EF=BC=8C=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD=E5=BC=B9=E5=87=BA=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- l10n/bundle.l10n.en.json | 3 ++- l10n/bundle.l10n.ja.json | 4 +++- l10n/bundle.l10n.zh-cn.json | 3 ++- src/global.ts | 20 +++++++++++++++----- src/sidebar/workspace.controller.ts | 13 +++++++++++-- src/sidebar/workspace.service.ts | 4 ++++ 6 files changed, 37 insertions(+), 10 deletions(-) diff --git a/l10n/bundle.l10n.en.json b/l10n/bundle.l10n.en.json index 6374c34..0bff6bc 100644 --- a/l10n/bundle.l10n.en.json +++ b/l10n/bundle.l10n.en.json @@ -15,5 +15,6 @@ "join-project": "Participate in the project", "comment-plugin": "Comment Plugin", "preset-env-sync": "Preset environment variables synchronized successfully", - "preset-env-sync.fail": "Failed to sync preset environment variables" + "preset-env-sync.fail": "Failed to sync preset environment variables", + "error.notOpenWorkspace": "No workspace is currently open in VSCode. Please open a workspace (e.g., open a folder) first." } \ No newline at end of file diff --git a/l10n/bundle.l10n.ja.json b/l10n/bundle.l10n.ja.json index 6e093be..3b657c8 100644 --- a/l10n/bundle.l10n.ja.json +++ b/l10n/bundle.l10n.ja.json @@ -15,5 +15,7 @@ "join-project": "プロジェクトに参加する", "comment-plugin": "コメントプラグイン", "preset-env-sync": "プリセット環境変数の同期が完了しました", - "preset-env-sync.fail": "プリセット環境変数の同期に失敗しました" + "preset-env-sync.fail": "プリセット環境変数の同期に失敗しました", + "error.notOpenWorkspace": "現在、VSCode でワークスペースが開かれていません。まずワークスペース(例:フォルダーを開く)を開いてください。" + } \ No newline at end of file diff --git a/l10n/bundle.l10n.zh-cn.json b/l10n/bundle.l10n.zh-cn.json index 530c577..9744bb9 100644 --- a/l10n/bundle.l10n.zh-cn.json +++ b/l10n/bundle.l10n.zh-cn.json @@ -15,5 +15,6 @@ "join-project": "参与项目", "comment-plugin": "评论插件", "preset-env-sync": "预设环境变量同步完成", - "preset-env-sync.fail": "预设环境变量同步失败" + "preset-env-sync.fail": "预设环境变量同步失败", + "error.notOpenWorkspace": "当前VScode没有打开工作区,请先打开工作区(例如打开文件夹)" } \ No newline at end of file diff --git a/src/global.ts b/src/global.ts index a84b8c9..d86bdbc 100644 --- a/src/global.ts +++ b/src/global.ts @@ -2,6 +2,7 @@ import * as vscode from 'vscode'; import * as os from 'os'; import * as fspath from 'path'; import * as fs from 'fs'; +import { t } from './i18n'; export type FsPath = string; export const panels = new Map(); @@ -96,7 +97,7 @@ export function getConnectionConfig() { export function getWorkspaceConnectionConfigPath() { const workspace = getWorkspacePath(); if (!workspace) { - throw new Error('No workspace found. Please open a folder in VSCode first.'); + return null; // 如果没有工作区,则返回 null } const configDir = fspath.join(workspace, '.openmcp'); if (!fs.existsSync(configDir)) { @@ -110,14 +111,14 @@ export function getWorkspaceConnectionConfigPath() { * @description 获取工作区的连接信息,工作区的连接文件的路径都是相对路径,以 {workspace} 开头 * @param workspace */ -export function getWorkspaceConnectionConfig() { +export function getWorkspaceConnectionConfig():IConnectionConfig| null { if (_workspaceConnectionConfig) { return _workspaceConnectionConfig; } const workspace = getWorkspacePath(); if (!workspace) { - throw new Error('No workspace found. Please open a folder in VSCode first.'); + return null; // 如果没有工作区,则返回 null } const configDir = fspath.join(workspace, '.openmcp'); const connectionConfig = fspath.join(configDir, CONNECTION_CONFIG_NAME); @@ -228,6 +229,10 @@ export function updateWorkspaceConnectionConfig( ) { const connectionItem = getWorkspaceConnectionConfigItemByName(name); const workspaceConnectionConfig = getWorkspaceConnectionConfig(); + if (!workspaceConnectionConfig) { + console.error('没有工作区连接配置文件,请先创建一个工作区连接'); + return; + } data.forEach(item => { item.cwd = item.cwd?.replace(/\\/g, '/'); @@ -326,6 +331,10 @@ export function getWorkspacePath() { export function getWorkspaceConnectionConfigItemByPath(absPath: string) { const workspacePath = getWorkspacePath(); const workspaceConnectionConfig = getWorkspaceConnectionConfig(); + if (!workspaceConnectionConfig) { + return null; // 如果没有工作区连接配置文件,则返回 null + } + const normaliseAbsPath = absPath.replace(/\\/g, '/'); for (let item of workspaceConnectionConfig.items) { @@ -345,9 +354,10 @@ export function getWorkspaceConnectionConfigItemByPath(absPath: string) { * @param absPath */ export function getWorkspaceConnectionConfigItemByName(name: string) { - const workspacePath = getWorkspacePath(); const workspaceConnectionConfig = getWorkspaceConnectionConfig(); - + if (!workspaceConnectionConfig) { + return null; // 如果没有工作区连接配置文件,则返回 null + } for (let item of workspaceConnectionConfig.items) { const nItem = Array.isArray(item) ? item[0] : item; if (nItem.name === name) { diff --git a/src/sidebar/workspace.controller.ts b/src/sidebar/workspace.controller.ts index 649a965..acce499 100644 --- a/src/sidebar/workspace.controller.ts +++ b/src/sidebar/workspace.controller.ts @@ -4,6 +4,7 @@ import { getWorkspaceConnectionConfig, getWorkspaceConnectionConfigPath, getWork import { ConnectionViewItem } from './common.js'; import { revealOpenMcpWebviewPanel } from '../webview/webview.service.js'; import { acquireUserCustomConnection, deleteUserConnection } from './workspace.service.js'; +import { t } from '../i18n/index.js'; @RegisterTreeDataProvider('openmcp.sidebar.workspace-connection') export class McpWorkspaceConnectProvider implements vscode.TreeDataProvider { @@ -60,14 +61,18 @@ export class McpWorkspaceConnectProvider implements vscode.TreeDataProvider