refactor(remote-container): bring devstarDomain param for /openProjectSkippingLoginCheck only when devstarDomain_sessionId exists and isn't null
This commit is contained in:
17
src/main.ts
17
src/main.ts
@@ -122,27 +122,30 @@ export class DevStarExtension {
|
|||||||
const path = params.get('path');
|
const path = params.get('path');
|
||||||
const devstarDomain = params.get('devstar_domain')
|
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_host = host;
|
||||||
const container_hostname = hostname
|
const container_hostname = hostname
|
||||||
const container_port = parseInt(port, 10);
|
const container_port = parseInt(port, 10);
|
||||||
const container_username = username;
|
const container_username = username;
|
||||||
const project_path = decodeURIComponent(path);
|
const project_path = decodeURIComponent(path);
|
||||||
|
|
||||||
|
if (devstarDomain != undefined && devstarDomain != "") {
|
||||||
// 修改user、remote-container、home中的devstar domain和hostname
|
// 修改user、remote-container、home中的devstar domain和hostname
|
||||||
this.user.setDevstarDomainAndHostname(devstarDomain)
|
this.user.setDevstarDomain(devstarDomain)
|
||||||
this.remoteContainer.setUser(this.user)
|
this.remoteContainer.setUser(this.user)
|
||||||
this.dsHome.setDevstarDomain(devstarDomain)
|
this.dsHome.setDevstarDomainAndHomePageURL(devstarDomain)
|
||||||
this.dsHome.setUser(this.user)
|
this.dsHome.setUser(this.user)
|
||||||
this.dsHome.setRemoteContainer(this.remoteContainer)
|
this.dsHome.setRemoteContainer(this.remoteContainer)
|
||||||
vscode.commands.executeCommand('devstar.showHome');
|
vscode.commands.executeCommand('devstar.showHome');
|
||||||
|
|
||||||
// 如果devstarDomain的值不为空,将其存储在global state中
|
// 将devstar domain存在global state中
|
||||||
if (devstarDomain != "") {
|
context.globalState.update('devstarDomain', devstarDomain)
|
||||||
this.context.globalState.update("devstarDomain", 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)
|
||||||
|
} else {
|
||||||
|
// devstarDomain参数不存在,则不存储,使用默认用户配置
|
||||||
|
await this.remoteContainer.firstOpenProject(container_host, container_hostname, container_port, container_username, project_path, this.context)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,20 +37,28 @@ export default class RemoteContainer {
|
|||||||
vscode.commands.executeCommand('workbench.action.terminal.newLocal').then(() => {
|
vscode.commands.executeCommand('workbench.action.terminal.newLocal').then(() => {
|
||||||
const terminal = vscode.window.terminals[vscode.window.terminals.length - 1];
|
const terminal = vscode.window.terminals[vscode.window.terminals.length - 1];
|
||||||
if (terminal) {
|
if (terminal) {
|
||||||
let devstarDomain: string|undefined = context.globalState.get("devstarDomain_"+vscode.env.sessionId)
|
let devstarDomain: string | undefined = context.globalState.get("devstarDomain_" + vscode.env.sessionId)
|
||||||
if (devstarDomain !=undefined && devstarDomain != "") {
|
if (devstarDomain == undefined || devstarDomain == "")
|
||||||
// 使用global state中devstarDomain_<sessionId>存储的domain
|
devstarDomain = undefined
|
||||||
// 清理键值对
|
|
||||||
context.globalState.update("devstarDomain_"+vscode.env.sessionId, undefined)
|
|
||||||
} else {
|
|
||||||
devstarDomain = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// vscode协议
|
// vscode协议
|
||||||
// 根据系统+命令行版本确定命令
|
// 根据系统+命令行版本确定命令
|
||||||
const semver = require('semver')
|
const semver = require('semver')
|
||||||
const powershellVersion = context.globalState.get('powershellVersion')
|
const powershellVersion = context.globalState.get('powershellVersion')
|
||||||
const powershell_semver_compatible_version = semver.coerce(powershellVersion)
|
const powershell_semver_compatible_version = semver.coerce(powershellVersion)
|
||||||
|
|
||||||
|
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 {
|
||||||
if (powershellVersion === undefined)
|
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}"`)
|
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")) {
|
else if (semver.satisfies(powershell_semver_compatible_version, ">=5.1.26100")) {
|
||||||
@@ -61,6 +69,7 @@ export default class RemoteContainer {
|
|||||||
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}"`)
|
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 {
|
} else {
|
||||||
await this.firstConnect(host, hostname, username, port)
|
await this.firstConnect(host, hostname, username, port)
|
||||||
|
|||||||
Reference in New Issue
Block a user