diff --git a/src/main.ts b/src/main.ts index 7f5e212..7675193 100644 --- a/src/main.ts +++ b/src/main.ts @@ -122,27 +122,30 @@ export class DevStarExtension { const path = params.get('path'); const devstarDomain = params.get('devstar_domain') - if (host && hostname && port && username && path && devstarDomain) { + if (host && hostname && port && username && path) { const container_host = host; const container_hostname = hostname const container_port = parseInt(port, 10); const container_username = username; const project_path = decodeURIComponent(path); - // 修改user、remote-container、home中的devstar domain和hostname - this.user.setDevstarDomainAndHostname(devstarDomain) - this.remoteContainer.setUser(this.user) - this.dsHome.setDevstarDomain(devstarDomain) - this.dsHome.setUser(this.user) - this.dsHome.setRemoteContainer(this.remoteContainer) - vscode.commands.executeCommand('devstar.showHome'); + if (devstarDomain != undefined && devstarDomain != "") { + // 修改user、remote-container、home中的devstar domain和hostname + this.user.setDevstarDomain(devstarDomain) + this.remoteContainer.setUser(this.user) + this.dsHome.setDevstarDomainAndHomePageURL(devstarDomain) + this.dsHome.setUser(this.user) + this.dsHome.setRemoteContainer(this.remoteContainer) + vscode.commands.executeCommand('devstar.showHome'); - // 如果devstarDomain的值不为空,将其存储在global state中 - if (devstarDomain != "") { - this.context.globalState.update("devstarDomain", devstarDomain) + // 将devstar domain存在global state中 + context.globalState.update('devstarDomain', devstarDomain) + + await this.remoteContainer.firstOpenProject(container_host, container_hostname, container_port, container_username, project_path, this.context) + } else { + // devstarDomain参数不存在,则不存储,使用默认用户配置 + await this.remoteContainer.firstOpenProject(container_host, container_hostname, container_port, container_username, project_path, this.context) } - - await this.remoteContainer.firstOpenProject(container_host, container_hostname, container_port, container_username, project_path, this.context) } } } diff --git a/src/remote-container.ts b/src/remote-container.ts index 90f655b..80614be 100644 --- a/src/remote-container.ts +++ b/src/remote-container.ts @@ -37,28 +37,37 @@ export default class RemoteContainer { vscode.commands.executeCommand('workbench.action.terminal.newLocal').then(() => { const terminal = vscode.window.terminals[vscode.window.terminals.length - 1]; if (terminal) { - let devstarDomain: string|undefined = context.globalState.get("devstarDomain_"+vscode.env.sessionId) - if (devstarDomain !=undefined && devstarDomain != "") { - // 使用global state中devstarDomain_存储的domain - // 清理键值对 - context.globalState.update("devstarDomain_"+vscode.env.sessionId, undefined) - } else { - devstarDomain = "" - } + let devstarDomain: string | undefined = context.globalState.get("devstarDomain_" + vscode.env.sessionId) + if (devstarDomain == undefined || devstarDomain == "") + devstarDomain = undefined // vscode协议 // 根据系统+命令行版本确定命令 const semver = require('semver') const powershellVersion = context.globalState.get('powershellVersion') const powershell_semver_compatible_version = semver.coerce(powershellVersion) - if (powershellVersion === undefined) - terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`) - else if (semver.satisfies(powershell_semver_compatible_version, ">=5.1.26100")) { - // win & powershell >= 5.1.26100.0 - terminal.sendText(`code --new-window ; code --% --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`) + + if (devstarDomain === undefined) { + // 不传递devstarDomain + if (powershellVersion === undefined) + terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}"`) + else if (semver.satisfies(powershell_semver_compatible_version, ">=5.1.26100")) { + // win & powershell >= 5.1.26100.0 + terminal.sendText(`code --new-window ; code --% --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}"`) + } else { + // win & powershell < 5.1.26100.0 + terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}"`) + } } else { - // win & powershell < 5.1.26100.0 - terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`) + if (powershellVersion === undefined) + terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`) + else if (semver.satisfies(powershell_semver_compatible_version, ">=5.1.26100")) { + // win & powershell >= 5.1.26100.0 + terminal.sendText(`code --new-window ; code --% --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`) + } else { + // win & powershell < 5.1.26100.0 + terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`) + } } } })