in src/setup-bazelisk/src.main.kts [50:81]
suspend fun installBazelisk(version: String, installationPath: Path, os: OS, arch: Arch) {
val bazeliskVersion = BazeliskVersionManager.tryGetBazeliskVersion(version, os, arch)
val installDirectory = installationPath.resolve("bazelisk-${bazeliskVersion.version}-${os}-${arch}")
val executableName = "bazel" + if (os == OS.Windows) ".exe" else ""
val installPath = installDirectory.resolve(executableName)
val tempFile = installDirectory.resolve("${executableName}.tmp")
if (installPath.exists()) {
println("Bazelisk ${bazeliskVersion.version} is already installed to '$installDirectory'")
addToPath(installDirectory.absolutePathString())
return
}
println("Downloading ${bazeliskVersion.downloadUrl} to $installPath")
try {
installDirectory.createDirectories()
retry { bazeliskVersion.downloadUrl.downloadTo(tempFile) }
println("Downloaded to $tempFile")
tempFile.toFile().setExecutable(true)
println("Set binary executable flag")
move(tempFile, installPath)
println("Moved to $installDirectory")
} finally {
tempFile.deleteIfExists()
}
addToPath(installDirectory.absolutePathString())
}