mirror of https://github.com/aminya/setup-cpp
feat: support go task
This commit is contained in:
parent
a062ce6962
commit
c1478378fa
|
@ -24,6 +24,7 @@ The package can be used locally or from CI services like GitHub Actions.
|
||||||
- meson
|
- meson
|
||||||
- conan
|
- conan
|
||||||
- make
|
- make
|
||||||
|
- task
|
||||||
- ccache
|
- ccache
|
||||||
- cppcheck
|
- cppcheck
|
||||||
- clangtidy
|
- clangtidy
|
||||||
|
|
|
@ -33,6 +33,9 @@ inputs:
|
||||||
make:
|
make:
|
||||||
description: "The make version to install."
|
description: "The make version to install."
|
||||||
required: false
|
required: false
|
||||||
|
task:
|
||||||
|
description: "The task version to install."
|
||||||
|
required: false
|
||||||
vcpkg:
|
vcpkg:
|
||||||
description: "The vcpkg version to install."
|
description: "The vcpkg version to install."
|
||||||
required: false
|
required: false
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -11,6 +11,7 @@ const DefaultVersions: Record<string, string> = {
|
||||||
meson: "0.61.1",
|
meson: "0.61.1",
|
||||||
python: "3.8.10",
|
python: "3.8.10",
|
||||||
kcov: "v39",
|
kcov: "v39",
|
||||||
|
task: "3.10.0",
|
||||||
gcc: process.platform === "win32" ? "11.2.0.07112021" : "11",
|
gcc: process.platform === "win32" ? "11.2.0.07112021" : "11",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ import * as core from "@actions/core"
|
||||||
import { setupBrew } from "./brew/brew"
|
import { setupBrew } from "./brew/brew"
|
||||||
import { setupCcache } from "./ccache/ccache"
|
import { setupCcache } from "./ccache/ccache"
|
||||||
import { setupMake } from "./make/make"
|
import { setupMake } from "./make/make"
|
||||||
|
import { setupTask } from "./task/task"
|
||||||
import { setupChocolatey } from "./chocolatey/chocolatey"
|
import { setupChocolatey } from "./chocolatey/chocolatey"
|
||||||
import { setupCmake } from "./cmake/cmake"
|
import { setupCmake } from "./cmake/cmake"
|
||||||
import { setupConan } from "./conan/conan"
|
import { setupConan } from "./conan/conan"
|
||||||
|
@ -52,6 +53,7 @@ const setups = {
|
||||||
vcvarsall: setupVCVarsall,
|
vcvarsall: setupVCVarsall,
|
||||||
kcov: setupKcov,
|
kcov: setupKcov,
|
||||||
make: setupMake,
|
make: setupMake,
|
||||||
|
task: setupTask,
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The tools that can be installed */
|
/** The tools that can be installed */
|
||||||
|
@ -77,6 +79,7 @@ const tools: Array<keyof typeof setups> = [
|
||||||
"vcvarsall",
|
"vcvarsall",
|
||||||
"kcov",
|
"kcov",
|
||||||
"make",
|
"make",
|
||||||
|
"task",
|
||||||
]
|
]
|
||||||
|
|
||||||
/** The possible inputs to the program */
|
/** The possible inputs to the program */
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
import { setupTask } from "../task"
|
||||||
|
import { setupTmpDir, testBin } from "../../utils/tests/test-helpers"
|
||||||
|
import { InstallationInfo } from "../../utils/setup/setupBin"
|
||||||
|
|
||||||
|
jest.setTimeout(300000)
|
||||||
|
describe("setup-task", () => {
|
||||||
|
let directory: string
|
||||||
|
beforeAll(async () => {
|
||||||
|
directory = await setupTmpDir("task")
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should setup task", async () => {
|
||||||
|
const installInfo = await setupTask("3.10.0", directory, process.arch)
|
||||||
|
|
||||||
|
await testBin("task", ["--version"], (installInfo as InstallationInfo | undefined)?.binDir)
|
||||||
|
})
|
||||||
|
})
|
|
@ -0,0 +1,48 @@
|
||||||
|
import { extractZip } from "@actions/tool-cache"
|
||||||
|
import { addBinExtension } from "../utils/extension/extension"
|
||||||
|
import { extractTarByExe } from "../utils/setup/extract"
|
||||||
|
import { setupBin, PackageInfo, InstallationInfo } from "../utils/setup/setupBin"
|
||||||
|
|
||||||
|
/** Get the platform name task uses in their download links */
|
||||||
|
function getTaskPlatform(platform: NodeJS.Platform) {
|
||||||
|
switch (platform) {
|
||||||
|
case "win32":
|
||||||
|
return "windows"
|
||||||
|
default:
|
||||||
|
return platform
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get the arch name task uses in their download links */
|
||||||
|
function getTaskArch(arch: string) {
|
||||||
|
switch (arch) {
|
||||||
|
case "x64":
|
||||||
|
return "amd64"
|
||||||
|
case "ia32":
|
||||||
|
case "x86":
|
||||||
|
case "i386":
|
||||||
|
case "x32":
|
||||||
|
return "386"
|
||||||
|
default:
|
||||||
|
return arch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get the platform data for task */
|
||||||
|
function getTaskPackageInfo(version: string, platform: NodeJS.Platform, arch: string): PackageInfo {
|
||||||
|
const taskPlatform = getTaskPlatform(platform)
|
||||||
|
const taskArch = getTaskArch(arch)
|
||||||
|
const isZip = platform === "win32"
|
||||||
|
const extension = isZip ? "zip" : "tar.gz"
|
||||||
|
return {
|
||||||
|
binRelativeDir: "",
|
||||||
|
binFileName: addBinExtension("task"),
|
||||||
|
extractedFolderName: "",
|
||||||
|
extractFunction: isZip ? extractZip : extractTarByExe,
|
||||||
|
url: `https://github.com/go-task/task/releases/download/v${version}/task_${taskPlatform}_${taskArch}.${extension}`,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setupTask(version: string, setupDir: string, arch: string): Promise<InstallationInfo> {
|
||||||
|
return setupBin("task", version, getTaskPackageInfo, setupDir, arch)
|
||||||
|
}
|
Loading…
Reference in New Issue