Skip to content

Commit 63d7251

Browse files
authored
Merge pull request #176 from aminya/version-handling
2 parents 95a1362 + 24a5993 commit 63d7251

9 files changed

+37
-35
lines changed

dist/node12/actions_python.783c56a8.js

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/node12/actions_python.bdb5f7a5.js.map renamed to dist/node12/actions_python.783c56a8.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/node12/actions_python.bdb5f7a5.js

Lines changed: 0 additions & 6 deletions
This file was deleted.

dist/node12/setup-cpp.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/node12/setup-cpp.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/node16/setup-cpp.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/node16/setup-cpp.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/versions/default_versions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ function getLLVMDefault() {
1515
}
1616
}
1717

18-
export const DefaultVersions: Record<string, string> = {
18+
export const DefaultVersions: Record<string, string | undefined> = {
1919
llvm: getLLVMDefault(), // https://github.com/llvm/llvm-project/releases
2020
clangtidy: getLLVMDefault(),
2121
clangformat: getLLVMDefault(),
@@ -33,7 +33,7 @@ export const DefaultVersions: Record<string, string> = {
3333
/// If an ubuntu versions is not in this map:
3434
// - the newer ubuntu versions use the first entry (e.g. v20),
3535
// - the older ones use ""
36-
export const DefaultLinuxVersion: Record<string, Record<number, string>> = {
36+
export const DefaultLinuxVersion: Record<string, Record<number, string> | undefined> = {
3737
gcc: {
3838
22: "13",
3939
20: "11",

src/versions/versions.ts

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,32 @@ import { DefaultLinuxVersion, DefaultVersions } from "./default_versions"
44

55
/** Get the default version if passed true or undefined, otherwise return the version itself */
66
export function getVersion(name: string, version: string | undefined, osVersion: number[] | null = null) {
7-
if (isDefault(version, name)) {
8-
if (process.platform === "linux" && osVersion !== null && name in DefaultLinuxVersion) {
9-
return getDefaultLinuxVersion(name, osVersion)
10-
}
11-
// anything else
12-
return DefaultVersions[name]
13-
} else {
14-
return version ?? ""
7+
console.log("isDefault", version, name, isVersionDefault(version))
8+
if (isVersionDefault(version) && process.platform === "linux" && osVersion !== null && name in DefaultLinuxVersion) {
9+
return getDefaultLinuxVersion(osVersion, DefaultLinuxVersion[name]!)
10+
} else if (isVersionDefault(version) && name in DefaultVersions) {
11+
return DefaultVersions[name]!
12+
} else if (version === "true") {
13+
return ""
1514
}
15+
return version ?? ""
16+
}
17+
18+
function isVersionDefault(version: string | undefined) {
19+
return version === "true" || version === undefined
1620
}
1721

1822
/// choose the default linux version based on ubuntu version
19-
function getDefaultLinuxVersion(name: string, osVersion: number[]) {
23+
function getDefaultLinuxVersion(osVersion: number[], toolLinuxVersions: Record<number, string>) {
2024
const osVersionMaj = osVersion[0]
21-
const newest = parseInt(Object.keys(DefaultLinuxVersion[name])[0], 10) // newest version with the default
22-
if (osVersionMaj >= newest) {
23-
return DefaultLinuxVersion[name][osVersionMaj]
24-
} else {
25-
return ""
26-
}
27-
}
2825

29-
export function isDefault(version: string | undefined, name: string) {
30-
return version === "true" || (version === undefined && name in DefaultVersions)
26+
// find which version block the os version is in
27+
const satisfyingVersion = Object.keys(toolLinuxVersions)
28+
.map((v) => parseInt(v, 10))
29+
.sort((a, b) => b - a) // sort in descending order
30+
.find((v) => osVersionMaj >= v)
31+
32+
return satisfyingVersion === undefined ? "" : toolLinuxVersions[satisfyingVersion]
3133
}
3234

3335
/**
@@ -37,7 +39,7 @@ export function isDefault(version: string | undefined, name: string) {
3739
*/
3840
export function syncVersions(opts: Opts, tools: Inputs[]): boolean {
3941
const toolsInUse = tools.filter((tool) => opts[tool] !== undefined)
40-
const toolsNonDefaultVersion = toolsInUse.filter((tool) => !isDefault(opts[tool], tool))
42+
const toolsNonDefaultVersion = toolsInUse.filter((tool) => !isVersionDefault(opts[tool]))
4143

4244
const targetVersion = toolsNonDefaultVersion.length >= 1 ? opts[toolsNonDefaultVersion[0]] : "true"
4345

0 commit comments

Comments
 (0)