Skip to content

Commit 8e20d82

Browse files
committed
Fix the open log command
The command was opening the old log path.
1 parent 70eb79b commit 8e20d82

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

src/commands.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ export class Commands {
266266
*/
267267
public async viewLogs(): Promise<void> {
268268
if (!this.workspaceLogPath) {
269-
vscode.window.showInformationMessage("No logs available.", this.workspaceLogPath || "<unset>")
269+
vscode.window.showInformationMessage("No logs available. Make sure to set coder.proxyLogDirectory to get logs.", this.workspaceLogPath || "<unset>")
270270
return
271271
}
272272
const uri = vscode.Uri.file(this.workspaceLogPath)

src/remote.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -430,14 +430,16 @@ export class Remote {
430430
return
431431
}
432432

433+
const logDir = this.getLogDir(featureSet)
434+
433435
// This ensures the Remote SSH extension resolves the host to execute the
434436
// Coder binary properly.
435437
//
436438
// If we didn't write to the SSH config file, connecting would fail with
437439
// "Host not found".
438440
try {
439441
this.storage.writeToCoderOutputChannel("Updating SSH config...")
440-
await this.updateSSHConfig(workspaceRestClient, parts.label, parts.host, binaryPath, featureSet)
442+
await this.updateSSHConfig(workspaceRestClient, parts.label, parts.host, binaryPath, logDir)
441443
} catch (error) {
442444
this.storage.writeToCoderOutputChannel(`Failed to configure SSH: ${error}`)
443445
throw error
@@ -450,7 +452,7 @@ export class Remote {
450452
return
451453
}
452454
disposables.push(this.showNetworkUpdates(pid))
453-
this.commands.workspaceLogPath = path.join(this.storage.getLogPath(), `${pid}.log`)
455+
this.commands.workspaceLogPath = logDir ? path.join(logDir, `${pid}.log`) : undefined
454456
})
455457

456458
// Register the label formatter again because SSH overrides it!
@@ -476,20 +478,25 @@ export class Remote {
476478
}
477479

478480
/**
479-
* Format's the --log-dir argument for the ProxyCommand
481+
* Return the --log-dir argument value for the ProxyCommand. It may be an
482+
* empty string if the setting is not set or the cli does not support it.
480483
*/
481-
private async formatLogArg(featureSet: FeatureSet): Promise<string> {
484+
private getLogDir(featureSet: FeatureSet): string {
482485
if (!featureSet.proxyLogDirectory) {
483486
return ""
484487
}
485-
486488
// If the proxyLogDirectory is not set in the extension settings we don't send one.
487-
// Question for Asher: How do VSCode extension settings behave in terms of semver for the extension?
488-
const logDir = expandPath(String(vscode.workspace.getConfiguration().get("coder.proxyLogDirectory") ?? "").trim())
489+
return expandPath(String(vscode.workspace.getConfiguration().get("coder.proxyLogDirectory") ?? "").trim())
490+
}
491+
492+
/**
493+
* Formats the --log-dir argument for the ProxyCommand after making sure it
494+
* has been created.
495+
*/
496+
private async formatLogArg(logDir: string): Promise<string> {
489497
if (!logDir) {
490498
return ""
491499
}
492-
493500
await fs.mkdir(logDir, { recursive: true })
494501
this.storage.writeToCoderOutputChannel(`SSH proxy diagnostics are being written to ${logDir}`)
495502
return ` --log-dir ${escape(logDir)}`
@@ -502,7 +509,7 @@ export class Remote {
502509
label: string,
503510
hostName: string,
504511
binaryPath: string,
505-
featureSet: FeatureSet,
512+
logDir: string,
506513
) {
507514
let deploymentSSHConfig = {}
508515
try {
@@ -585,7 +592,7 @@ export class Remote {
585592
Host: label ? `${AuthorityPrefix}.${label}--*` : `${AuthorityPrefix}--*`,
586593
ProxyCommand: `${escape(binaryPath)}${headerArg} vscodessh --network-info-dir ${escape(
587594
this.storage.getNetworkInfoPath(),
588-
)}${await this.formatLogArg(featureSet)} --session-token-file ${escape(this.storage.getSessionTokenPath(label))} --url-file ${escape(
595+
)}${await this.formatLogArg(logDir)} --session-token-file ${escape(this.storage.getSessionTokenPath(label))} --url-file ${escape(
589596
this.storage.getUrlPath(label),
590597
)} %h`,
591598
ConnectTimeout: "0",

0 commit comments

Comments
 (0)