diff --git a/src/remote.ts b/src/remote.ts index fb0a4e7b..5561aca3 100644 --- a/src/remote.ts +++ b/src/remote.ts @@ -24,6 +24,7 @@ import { getHeaderCommand } from "./headers" import { SSHConfig, SSHValues, defaultSSHConfigResponse, mergeSSHConfigValues } from "./sshConfig" import { computeSSHProperties, sshSupportsSetEnv } from "./sshSupport" import { Storage } from "./storage" +import { supportsCoderAgentLogDirFlag } from "./version" import { WorkspaceAction } from "./workspaceAction" export class Remote { @@ -76,10 +77,7 @@ export class Remote { await this.closeRemote() return } - // CLI versions before 2.3.3 don't support the --log-dir flag! - // If this check didn't exist, VS Code connections would fail on - // older versions because of an unknown CLI argument. - const hasCoderLogs = (parsedVersion?.compare("2.3.3") || 0) >= 0 || parsedVersion?.prerelease[0] === "devel" + const hasCoderLogs = supportsCoderAgentLogDirFlag(parsedVersion) // Find the workspace from the URI scheme provided! try { diff --git a/src/version.test.ts b/src/version.test.ts new file mode 100644 index 00000000..c9cc71e6 --- /dev/null +++ b/src/version.test.ts @@ -0,0 +1,13 @@ +import { parse } from "semver" +import { describe, expect, it } from "vitest" +import { supportsCoderAgentLogDirFlag } from "./version" + +describe("check version support", () => { + it("has logs", () => { + expect(supportsCoderAgentLogDirFlag(parse("v1.3.3+e491217"))).toBeFalsy() + expect(supportsCoderAgentLogDirFlag(parse("v2.3.3+e491217"))).toBeFalsy() + expect(supportsCoderAgentLogDirFlag(parse("v2.3.4+e491217"))).toBeTruthy() + expect(supportsCoderAgentLogDirFlag(parse("v5.3.4+e491217"))).toBeTruthy() + expect(supportsCoderAgentLogDirFlag(parse("v5.0.4+e491217"))).toBeTruthy() + }) +}) diff --git a/src/version.ts b/src/version.ts new file mode 100644 index 00000000..d4a2199b --- /dev/null +++ b/src/version.ts @@ -0,0 +1,8 @@ +import { SemVer } from "semver" + +// CLI versions before 2.3.3 don't support the --log-dir flag! +// If this check didn't exist, VS Code connections would fail on +// older versions because of an unknown CLI argument. +export const supportsCoderAgentLogDirFlag = (ver: SemVer | null): boolean => { + return (ver?.compare("2.3.3") || 0) > 0 || ver?.prerelease[0] === "devel" +}