Skip to content

Commit

Permalink
Codereview feedback
Browse files Browse the repository at this point in the history
Signed-off-by: Jan Dubois <[email protected]>
  • Loading branch information
jandubois committed Jul 16, 2024
1 parent 9926b32 commit 4b556c8
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 17 deletions.
18 changes: 11 additions & 7 deletions pkg/rancher-desktop/backend/backendHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -189,13 +189,20 @@ export default class BackendHelper {
throw new Error('No kubernetes version available.');
}

const stableVersion = firstStableVersion(availableVersions);

if (!stableVersion) {
// This should never be reached, as `availableVersions` isn't empty.
throw new Error('Failed to find stable version.');
}

sv.k8sVersions = availableVersions.map(v => v.version.version);
if (currentConfigVersionString) {
storedVersion = semver.parse(currentConfigVersionString);
if (storedVersion) {
matchedVersion = availableVersions.find((v) => {
try {
return v.version.compare(storedVersion as semver.SemVer) === 0;
return semver.eq(v.version, storedVersion!);
} catch (err: any) {
console.error(`Can't compare versions ${ storedVersion } and ${ v }: `, err);
if (!(err instanceof TypeError)) {
Expand All @@ -222,8 +229,7 @@ export default class BackendHelper {
throw new LockedFieldError(`Locked kubernetes version '${ currentConfigVersionString }' isn't a valid version.`);
}
const message = invalidK8sVersionMainMessage;
// firstStableVersion is guaranteed to return a version because availableVersions is not empty.
const detail = `Falling back to the most recent stable version of ${ firstStableVersion(availableVersions)!.version.version }`;
const detail = `Falling back to the most recent stable version of ${ stableVersion.version.version }`;

if (noModalDialogs) {
console.log(`${ message } ${ detail }`);
Expand All @@ -241,11 +247,9 @@ export default class BackendHelper {
}
// No (valid) stored version; save the default one.
// Because no version was specified, there can't be a locked version field, so no need to call checkForLockedVersion.
const stableVersion = firstStableVersion(availableVersions)!.version;

settingsWriter({ kubernetes: { version: stableVersion.version } });
settingsWriter({ kubernetes: { version: stableVersion.version.version } });

return stableVersion;
return stableVersion.version;
}

/**
Expand Down
10 changes: 2 additions & 8 deletions pkg/rancher-desktop/backend/k3sHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,7 @@ export class VersionEntry implements K8s.VersionEntry {
* @returns The first stable version, or first version if no stable version is found.
*/
export function firstStableVersion(versions: K8s.VersionEntry[]): K8s.VersionEntry | undefined {
let stableVersion = versions.find(v => (v.channels ?? []).includes('stable'));

if (!stableVersion && versions.length > 0) {
stableVersion = versions[0];
}

return stableVersion;
return versions.find(v => (v.channels ?? []).includes('stable')) ?? versions[0];
}

/**
Expand Down Expand Up @@ -210,7 +204,7 @@ export default class K3sHelper extends events.EventEmitter {
for (const versionString of cacheData.versions) {
const version = semver.parse(versionString);

if (version && version.compare(this.minimumVersion) >= 0) {
if (version && semver.gte(version, this.minimumVersion)) {
this.versions[version.version] = new VersionEntry(version);
}
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/rancher-desktop/backend/kube/lima.ts
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ export default class LimaKubernetesBackend extends events.EventEmitter implement

protected get desiredVersion(): Promise<semver.SemVer> {
return (async() => {
const availableVersions = (await this.k3sHelper.availableVersions);
const availableVersions = await this.k3sHelper.availableVersions;

return await BackendHelper.getDesiredVersion(this.cfg as BackendSettings, availableVersions, this.vm.noModalDialogs, this.vm.writeSetting.bind(this.vm));
})();
Expand Down
2 changes: 1 addition & 1 deletion pkg/rancher-desktop/backend/kube/wsl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ export default class WSLKubernetesBackend extends events.EventEmitter implements

protected get desiredVersion(): Promise<semver.SemVer> {
return (async() => {
const availableVersions = (await this.k3sHelper.availableVersions);
const availableVersions = await this.k3sHelper.availableVersions;

return await BackendHelper.getDesiredVersion(this.cfg as BackendSettings, availableVersions, this.vm.noModalDialogs, this.vm.writeSetting.bind(this.vm));
})();
Expand Down

0 comments on commit 4b556c8

Please sign in to comment.