Skip to content

Commit cc5d143

Browse files
committed
Add old server version warning
1 parent a90fd3e commit cc5d143

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"description": "Open any workspace with a single click.",
66
"repository": "https://github.com/coder/vscode-coder",
77
"preview": true,
8-
"version": "0.0.4",
8+
"version": "0.0.5",
99
"engines": {
1010
"vscode": "^1.73.0"
1111
},
@@ -136,6 +136,7 @@
136136
"jsonc-parser": "^3.2.0",
137137
"ndjson": "^2.0.0",
138138
"pretty-bytes": "^6.0.0",
139+
"semver": "^7.3.8",
139140
"ssh-config": "4.1.6",
140141
"tar-fs": "^2.1.1",
141142
"which": "^2.0.2",

src/remote.ts

+30-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import axios from "axios"
2-
import { getWorkspace, getWorkspaceBuildLogs, getWorkspaceByOwnerAndName, startWorkspace } from "coder/site/src/api/api"
2+
import {
3+
getBuildInfo,
4+
getWorkspace,
5+
getWorkspaceBuildLogs,
6+
getWorkspaceByOwnerAndName,
7+
startWorkspace,
8+
} from "coder/site/src/api/api"
39
import { ProvisionerJobLog, Workspace, WorkspaceAgent } from "coder/site/src/api/typesGenerated"
410
import EventSource from "eventsource"
511
import find from "find-process"
@@ -8,6 +14,7 @@ import * as jsonc from "jsonc-parser"
814
import * as os from "os"
915
import * as path from "path"
1016
import prettyBytes from "pretty-bytes"
17+
import * as semver from "semver"
1118
import SSHConfig from "ssh-config"
1219
import * as vscode from "vscode"
1320
import * as ws from "ws"
@@ -42,6 +49,28 @@ export class Remote {
4249
throw new Error(`Invalid Coder SSH authority. Must be: <username>--<workspace>--<agent?>`)
4350
}
4451

52+
const buildInfo = await getBuildInfo()
53+
const parsedVersion = semver.parse(buildInfo.version)
54+
// Server versions before v0.14.1 don't support the vscodessh command!
55+
if (
56+
parsedVersion?.major === 0 &&
57+
parsedVersion?.minor <= 14 &&
58+
parsedVersion?.patch < 1 &&
59+
parsedVersion?.prerelease.length === 0
60+
) {
61+
await this.vscodeProposed.window.showErrorMessage(
62+
"Incompatible Server",
63+
{
64+
detail: "Your Coder server is too old to support the Coder extension! Please upgrade to v0.14.1 or newer.",
65+
modal: true,
66+
useCustom: true,
67+
},
68+
"Close Remote",
69+
)
70+
await this.closeRemote()
71+
return
72+
}
73+
4574
// Find the workspace from the URI scheme provided!
4675
let workspace: Workspace
4776
try {

yarn.lock

+1-1
Original file line numberDiff line numberDiff line change
@@ -4361,7 +4361,7 @@ semver@^6.0.0, semver@^6.1.2, semver@^6.3.0:
43614361
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
43624362
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
43634363

4364-
semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7:
4364+
semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8:
43654365
version "7.3.8"
43664366
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
43674367
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==

0 commit comments

Comments
 (0)