@@ -9,6 +9,20 @@ export interface FeatureSet {
99 keyringTokenRead : boolean ;
1010}
1111
12+ /**
13+ * True when the CLI version is at least `minVersion`, or is a dev build.
14+ * Returns false for null (unknown) versions.
15+ */
16+ function versionAtLeast (
17+ version : semver . SemVer | null ,
18+ minVersion : string ,
19+ ) : boolean {
20+ if ( ! version ) {
21+ return false ;
22+ }
23+ return version . compare ( minVersion ) >= 0 || version . prerelease [ 0 ] === "devel" ;
24+ }
25+
1226/**
1327 * Builds and returns a FeatureSet object for a given coder version.
1428 */
@@ -23,29 +37,15 @@ export function featureSetForVersion(
2337 version ?. prerelease . length === 0
2438 ) ,
2539
26- // CLI versions before 2.3.3 don't support the --log-dir flag!
27- // If this check didn't exist, VS Code connections would fail on
28- // older versions because of an unknown CLI argument.
29- proxyLogDirectory :
30- ( version ?. compare ( "2.3.3" ) ?? 0 ) > 0 ||
31- version ?. prerelease [ 0 ] === "devel" ,
32- wildcardSSH :
33- ( version ? version . compare ( "2.19.0" ) : - 1 ) >= 0 ||
34- version ?. prerelease [ 0 ] === "devel" ,
35-
36- // The --reason flag was added to `coder start` in 2.25.0
37- buildReason :
38- ( version ?. compare ( "2.25.0" ) ?? 0 ) >= 0 ||
39- version ?. prerelease [ 0 ] === "devel" ,
40-
41- // Keyring-backed token storage was added in CLI 2.29.0
42- keyringAuth :
43- ( version ?. compare ( "2.29.0" ) ?? 0 ) >= 0 ||
44- version ?. prerelease [ 0 ] === "devel" ,
45-
46- // `coder login token` for reading tokens from the keyring was added in 2.31.0
47- keyringTokenRead :
48- ( version ?. compare ( "2.31.0" ) ?? 0 ) >= 0 ||
49- version ?. prerelease [ 0 ] === "devel" ,
40+ // --log-dir flag for proxy logs; vscodessh fails if unsupported
41+ proxyLogDirectory : versionAtLeast ( version , "2.4.0" ) ,
42+ // Wildcard SSH host matching
43+ wildcardSSH : versionAtLeast ( version , "2.19.0" ) ,
44+ // --reason flag for `coder start`
45+ buildReason : versionAtLeast ( version , "2.25.0" ) ,
46+ // Keyring-backed token storage via `coder login`
47+ keyringAuth : versionAtLeast ( version , "2.29.0" ) ,
48+ // `coder login token` for reading tokens from the keyring
49+ keyringTokenRead : versionAtLeast ( version , "2.31.0" ) ,
5050 } ;
5151}
0 commit comments