mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-31 19:16:08 +00:00
Use @actions/tool-cache (#196)
This commit is contained in:
committed by
GitHub
parent
b9783cdeea
commit
51905b8795
Vendored
+2666
-30
File diff suppressed because it is too large
Load Diff
Vendored
-24
@@ -1,24 +0,0 @@
|
|||||||
param([Parameter(Mandatory=$true)][string]${VSN}, [Parameter(Mandatory=$true)][string]${HEX_MIRROR})
|
|
||||||
|
|
||||||
$ErrorActionPreference="Stop"
|
|
||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
|
||||||
|
|
||||||
$FILE_INPUT="${VSN}.zip"
|
|
||||||
$FILE_OUTPUT="elixir.zip"
|
|
||||||
$DIR_FOR_BIN=".setup-beam/elixir"
|
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Invoke-WebRequest "${HEX_MIRROR}/builds/elixir/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
New-Item "${DIR_FOR_BIN}" -ItemType Directory | Out-Null
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Expand-Archive -DestinationPath "${DIR_FOR_BIN}" -Path "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
Write-Output "Installed Elixir version follows"
|
|
||||||
& "${DIR_FOR_BIN}/bin/elixir.bat" "-v" | Write-Output
|
|
||||||
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
New-Item "%UserProfile%/.mix/escripts" -ItemType Directory | Out-Null
|
|
||||||
|
|
||||||
"INSTALL_DIR_FOR_ELIXIR=${Env:RUNNER_TEMP}/${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
|
||||||
Vendored
-21
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
cd "${RUNNER_TEMP}"
|
|
||||||
|
|
||||||
VSN=${1}
|
|
||||||
HEX_MIRROR=${2}
|
|
||||||
FILE_INPUT="${VSN}.zip"
|
|
||||||
FILE_OUTPUT=elixir.zip
|
|
||||||
DIR_FOR_BIN=.setup-beam/elixir
|
|
||||||
|
|
||||||
wget -q -O "${FILE_OUTPUT}" "${HEX_MIRROR}/builds/elixir/${FILE_INPUT}"
|
|
||||||
mkdir -p "${DIR_FOR_BIN}"
|
|
||||||
unzip -q -o -d "${DIR_FOR_BIN}" "${FILE_OUTPUT}"
|
|
||||||
echo "Installed Elixir version follows"
|
|
||||||
${DIR_FOR_BIN}/bin/elixir -v
|
|
||||||
|
|
||||||
mkdir -p "${HOME}/.mix/escripts"
|
|
||||||
|
|
||||||
echo "INSTALL_DIR_FOR_ELIXIR=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
|
||||||
Vendored
-20
@@ -1,20 +0,0 @@
|
|||||||
param([Parameter(Mandatory=$true)][string]${VSN})
|
|
||||||
|
|
||||||
$ErrorActionPreference="Stop"
|
|
||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
|
||||||
|
|
||||||
$FILE_INPUT="otp_win64_${VSN}.exe"
|
|
||||||
$FILE_OUTPUT="otp.exe"
|
|
||||||
$DIR_FOR_BIN="${Env:RUNNER_TEMP}\.setup-beam\otp"
|
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Invoke-WebRequest "https://github.com/erlang/otp/releases/download/OTP-${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
New-Item "${DIR_FOR_BIN}" -ItemType Directory | Out-Null
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Start-Process "${FILE_OUTPUT}" "/S /D=${DIR_FOR_BIN}" -Wait
|
|
||||||
Write-Output "Installed Erlang/OTP version follows"
|
|
||||||
& "${DIR_FOR_BIN}/bin/erl.exe" "+V" | Write-Output
|
|
||||||
|
|
||||||
"INSTALL_DIR_FOR_OTP=${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
|
||||||
Vendored
-21
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
cd "${RUNNER_TEMP}"
|
|
||||||
|
|
||||||
OS=${1}
|
|
||||||
VSN=${2}
|
|
||||||
HEX_MIRROR=${3}
|
|
||||||
FILE_INPUT="${VSN}.tar.gz"
|
|
||||||
FILE_OUTPUT=otp.tar.gz
|
|
||||||
DIR_FOR_BIN=.setup-beam/otp
|
|
||||||
|
|
||||||
wget -q -O "${FILE_OUTPUT}" "${HEX_MIRROR}/builds/otp/${OS}/${FILE_INPUT}"
|
|
||||||
mkdir -p "${DIR_FOR_BIN}"
|
|
||||||
tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}" --strip-components=1
|
|
||||||
"${DIR_FOR_BIN}/Install" -minimal "$(pwd)/${DIR_FOR_BIN}"
|
|
||||||
echo "Installed Erlang/OTP version follows"
|
|
||||||
${DIR_FOR_BIN}/bin/erl -version
|
|
||||||
|
|
||||||
echo "INSTALL_DIR_FOR_OTP=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
|
||||||
Generated
+56
@@ -10,6 +10,7 @@
|
|||||||
"@actions/core": "1.10.0",
|
"@actions/core": "1.10.0",
|
||||||
"@actions/exec": "1.1.1",
|
"@actions/exec": "1.1.1",
|
||||||
"@actions/http-client": "2.1.0",
|
"@actions/http-client": "2.1.0",
|
||||||
|
"@actions/tool-cache": "^2.0.1",
|
||||||
"semver": "7.3.8"
|
"semver": "7.3.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -60,6 +61,36 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
|
||||||
"integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
|
"integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
|
||||||
},
|
},
|
||||||
|
"node_modules/@actions/tool-cache": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@actions/core": "^1.2.6",
|
||||||
|
"@actions/exec": "^1.0.0",
|
||||||
|
"@actions/http-client": "^2.0.1",
|
||||||
|
"@actions/io": "^1.1.1",
|
||||||
|
"semver": "^6.1.0",
|
||||||
|
"uuid": "^3.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@actions/tool-cache/node_modules/semver": {
|
||||||
|
"version": "6.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||||
|
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
||||||
|
"bin": {
|
||||||
|
"semver": "bin/semver.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@actions/tool-cache/node_modules/uuid": {
|
||||||
|
"version": "3.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
||||||
|
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
|
||||||
|
"deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
|
||||||
|
"bin": {
|
||||||
|
"uuid": "bin/uuid"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@babel/runtime": {
|
"node_modules/@babel/runtime": {
|
||||||
"version": "7.19.4",
|
"version": "7.19.4",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz",
|
||||||
@@ -3025,6 +3056,31 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
|
||||||
"integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
|
"integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
|
||||||
},
|
},
|
||||||
|
"@actions/tool-cache": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA==",
|
||||||
|
"requires": {
|
||||||
|
"@actions/core": "^1.2.6",
|
||||||
|
"@actions/exec": "^1.0.0",
|
||||||
|
"@actions/http-client": "^2.0.1",
|
||||||
|
"@actions/io": "^1.1.1",
|
||||||
|
"semver": "^6.1.0",
|
||||||
|
"uuid": "^3.3.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"semver": {
|
||||||
|
"version": "6.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||||
|
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
|
||||||
|
},
|
||||||
|
"uuid": {
|
||||||
|
"version": "3.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
||||||
|
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"@babel/runtime": {
|
"@babel/runtime": {
|
||||||
"version": "7.19.4",
|
"version": "7.19.4",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz",
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
"@actions/core": "1.10.0",
|
"@actions/core": "1.10.0",
|
||||||
"@actions/exec": "1.1.1",
|
"@actions/exec": "1.1.1",
|
||||||
"@actions/http-client": "2.1.0",
|
"@actions/http-client": "2.1.0",
|
||||||
|
"@actions/tool-cache": "^2.0.1",
|
||||||
"semver": "7.3.8"
|
"semver": "7.3.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
param([Parameter(Mandatory=$true)][string]${VSN}, [Parameter(Mandatory=$true)][string]${HEX_MIRROR})
|
|
||||||
|
|
||||||
$ErrorActionPreference="Stop"
|
|
||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
|
||||||
|
|
||||||
$FILE_INPUT="${VSN}.zip"
|
|
||||||
$FILE_OUTPUT="elixir.zip"
|
|
||||||
$DIR_FOR_BIN=".setup-beam/elixir"
|
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Invoke-WebRequest "${HEX_MIRROR}/builds/elixir/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
New-Item "${DIR_FOR_BIN}" -ItemType Directory | Out-Null
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Expand-Archive -DestinationPath "${DIR_FOR_BIN}" -Path "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
Write-Output "Installed Elixir version follows"
|
|
||||||
& "${DIR_FOR_BIN}/bin/elixir.bat" "-v" | Write-Output
|
|
||||||
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
New-Item "%UserProfile%/.mix/escripts" -ItemType Directory | Out-Null
|
|
||||||
|
|
||||||
"INSTALL_DIR_FOR_ELIXIR=${Env:RUNNER_TEMP}/${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
cd "${RUNNER_TEMP}"
|
|
||||||
|
|
||||||
VSN=${1}
|
|
||||||
HEX_MIRROR=${2}
|
|
||||||
FILE_INPUT="${VSN}.zip"
|
|
||||||
FILE_OUTPUT=elixir.zip
|
|
||||||
DIR_FOR_BIN=.setup-beam/elixir
|
|
||||||
|
|
||||||
wget -q -O "${FILE_OUTPUT}" "${HEX_MIRROR}/builds/elixir/${FILE_INPUT}"
|
|
||||||
mkdir -p "${DIR_FOR_BIN}"
|
|
||||||
unzip -q -o -d "${DIR_FOR_BIN}" "${FILE_OUTPUT}"
|
|
||||||
echo "Installed Elixir version follows"
|
|
||||||
${DIR_FOR_BIN}/bin/elixir -v
|
|
||||||
|
|
||||||
mkdir -p "${HOME}/.mix/escripts"
|
|
||||||
|
|
||||||
echo "INSTALL_DIR_FOR_ELIXIR=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
param([Parameter(Mandatory=$true)][string]${VSN})
|
|
||||||
|
|
||||||
$ErrorActionPreference="Stop"
|
|
||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
|
||||||
|
|
||||||
$FILE_INPUT="otp_win64_${VSN}.exe"
|
|
||||||
$FILE_OUTPUT="otp.exe"
|
|
||||||
$DIR_FOR_BIN="${Env:RUNNER_TEMP}\.setup-beam\otp"
|
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Invoke-WebRequest "https://github.com/erlang/otp/releases/download/OTP-${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
New-Item "${DIR_FOR_BIN}" -ItemType Directory | Out-Null
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Start-Process "${FILE_OUTPUT}" "/S /D=${DIR_FOR_BIN}" -Wait
|
|
||||||
Write-Output "Installed Erlang/OTP version follows"
|
|
||||||
& "${DIR_FOR_BIN}/bin/erl.exe" "+V" | Write-Output
|
|
||||||
|
|
||||||
"INSTALL_DIR_FOR_OTP=${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
cd "${RUNNER_TEMP}"
|
|
||||||
|
|
||||||
OS=${1}
|
|
||||||
VSN=${2}
|
|
||||||
HEX_MIRROR=${3}
|
|
||||||
FILE_INPUT="${VSN}.tar.gz"
|
|
||||||
FILE_OUTPUT=otp.tar.gz
|
|
||||||
DIR_FOR_BIN=.setup-beam/otp
|
|
||||||
|
|
||||||
wget -q -O "${FILE_OUTPUT}" "${HEX_MIRROR}/builds/otp/${OS}/${FILE_INPUT}"
|
|
||||||
mkdir -p "${DIR_FOR_BIN}"
|
|
||||||
tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}" --strip-components=1
|
|
||||||
"${DIR_FOR_BIN}/Install" -minimal "$(pwd)/${DIR_FOR_BIN}"
|
|
||||||
echo "Installed Erlang/OTP version follows"
|
|
||||||
${DIR_FOR_BIN}/bin/erl -version
|
|
||||||
|
|
||||||
echo "INSTALL_DIR_FOR_OTP=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
|
||||||
+74
-26
@@ -1,6 +1,9 @@
|
|||||||
const core = require('@actions/core')
|
const core = require('@actions/core')
|
||||||
const { exec } = require('@actions/exec')
|
const { exec } = require('@actions/exec')
|
||||||
|
const tc = require('@actions/tool-cache')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
|
const fs = require('fs')
|
||||||
|
const os = require('os')
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Install Erlang/OTP.
|
* Install Erlang/OTP.
|
||||||
@@ -10,28 +13,64 @@ const path = require('path')
|
|||||||
* @param {string[]} hexMirrors
|
* @param {string[]} hexMirrors
|
||||||
*/
|
*/
|
||||||
async function installOTP(osVersion, otpVersion, hexMirrors) {
|
async function installOTP(osVersion, otpVersion, hexMirrors) {
|
||||||
const OS = process.platform
|
|
||||||
if (OS === 'linux') {
|
|
||||||
if (hexMirrors.length === 0) {
|
if (hexMirrors.length === 0) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Could not install Erlang/OTP ${otpVersion} from any hex.pm mirror`,
|
`Could not install Erlang/OTP ${otpVersion} from any hex.pm mirror`,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const [hexMirror, ...hexMirrorsT] = hexMirrors
|
const [hexMirror, ...hexMirrorsT] = hexMirrors
|
||||||
|
const fullVersion = `${osVersion}/${otpVersion}`
|
||||||
|
let cachedPath = tc.find('otp', fullVersion)
|
||||||
|
const OS = process.platform
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await exec(path.join(__dirname, 'install-otp.sh'), [
|
if (OS === 'linux') {
|
||||||
osVersion,
|
if (!cachedPath) {
|
||||||
otpVersion,
|
const tarPath = await tc.downloadTool(
|
||||||
hexMirror,
|
`https://builds.hex.pm/builds/otp/${fullVersion}.tar.gz`,
|
||||||
|
)
|
||||||
|
const extractPath = await tc.extractTar(tarPath, undefined, [
|
||||||
|
'zx',
|
||||||
|
'--strip-components=1',
|
||||||
])
|
])
|
||||||
return
|
cachedPath = await tc.cacheDir(extractPath, 'otp', fullVersion)
|
||||||
} catch (err) {
|
|
||||||
core.info(`install-otp.sh failed for mirror ${hexMirror}`)
|
|
||||||
}
|
}
|
||||||
await installOTP(osVersion, otpVersion, hexMirrorsT)
|
|
||||||
|
await exec(path.join(cachedPath, 'Install'), ['-minimal', cachedPath])
|
||||||
|
|
||||||
|
const otpPath = path.join(cachedPath, 'bin')
|
||||||
|
|
||||||
|
core.addPath(otpPath)
|
||||||
|
core.exportVariable('INSTALL_DIR_FOR_OTP', cachedPath)
|
||||||
|
|
||||||
|
console.log('Installed Erlang/OTP version')
|
||||||
|
await exec(path.join(otpPath, 'erl'), ['-version'])
|
||||||
} else if (OS === 'win32') {
|
} else if (OS === 'win32') {
|
||||||
const script = path.join(__dirname, 'install-otp.ps1')
|
if (!cachedPath) {
|
||||||
await exec(`pwsh.exe ${script} -VSN:${otpVersion}`)
|
const exePath = await tc.downloadTool(
|
||||||
|
'https://github.com/erlang/otp/releases/download/' +
|
||||||
|
`OTP-${otpVersion}/otp_win64_${otpVersion}.exe`,
|
||||||
|
)
|
||||||
|
cachedPath = await tc.cacheFile(exePath, 'otp.exe', 'otp', fullVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
const otpDir = path.join(process.env.RUNNER_TEMP, '.setup-beam', 'otp')
|
||||||
|
const otpPath = path.join(otpDir, 'bin')
|
||||||
|
|
||||||
|
await fs.promises.mkdir(otpDir, { recursive: true })
|
||||||
|
await exec(path.join(cachedPath, 'otp.exe'), ['/S', `/D=${otpDir}`])
|
||||||
|
|
||||||
|
core.addPath(otpPath)
|
||||||
|
core.exportVariable('INSTALL_DIR_FOR_OTP', otpDir)
|
||||||
|
|
||||||
|
console.log('Installed Erlang/OTP version')
|
||||||
|
await exec(path.join(otpPath, 'erl'), ['+V'])
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
core.info(`Install OTP failed for mirror ${hexMirror}`)
|
||||||
|
core.info(`${err}\n${err.stack}`)
|
||||||
|
await installOTP(osVersion, otpVersion, hexMirrorsT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,25 +87,34 @@ async function installElixir(elixirVersion, hexMirrors) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
const [hexMirror, ...hexMirrorsT] = hexMirrors
|
const [hexMirror, ...hexMirrorsT] = hexMirrors
|
||||||
const OS = process.platform
|
|
||||||
let script
|
|
||||||
try {
|
try {
|
||||||
if (OS === 'linux') {
|
let cachedPath = tc.find('elixir', elixirVersion)
|
||||||
script = path.join(__dirname, 'install-elixir.sh')
|
|
||||||
await exec(script, [elixirVersion, hexMirror])
|
if (!cachedPath) {
|
||||||
return
|
const zipPath = await tc.downloadTool(
|
||||||
}
|
`${hexMirror}/builds/elixir/${elixirVersion}.zip`,
|
||||||
if (OS === 'win32') {
|
|
||||||
script = path.join(__dirname, 'install-elixir.ps1')
|
|
||||||
await exec(
|
|
||||||
`pwsh.exe ${script} -VSN:${elixirVersion} -HEX_MIRROR:${hexMirror}`,
|
|
||||||
)
|
)
|
||||||
return
|
const extractPath = await tc.extractZip(zipPath)
|
||||||
|
cachedPath = await tc.cacheDir(extractPath, 'elixir', elixirVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const elixirPath = path.join(cachedPath, 'bin')
|
||||||
|
const escriptsPath = path.join(os.homedir(), '.mix', 'escripts')
|
||||||
|
|
||||||
|
core.addPath(elixirPath)
|
||||||
|
core.addPath(escriptsPath)
|
||||||
|
core.exportVariable('INSTALL_DIR_FOR_ELIXIR', cachedPath)
|
||||||
|
|
||||||
|
core.info('Installed Elixir version')
|
||||||
|
await exec(path.join(elixirPath, 'elixir'), ['-v'])
|
||||||
|
|
||||||
|
await fs.promises.mkdir(escriptsPath, { recursive: true })
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
core.info(`${script} failed for mirror ${hexMirror}`)
|
core.info(`Elixir install failed for mirror ${hexMirror}`)
|
||||||
}
|
core.info(`${err}\n${err.stack}`)
|
||||||
await installElixir(elixirVersion, hexMirrorsT)
|
await installElixir(elixirVersion, hexMirrorsT)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
const core = require('@actions/core')
|
const core = require('@actions/core')
|
||||||
const { exec } = require('@actions/exec')
|
const { exec } = require('@actions/exec')
|
||||||
const http = require('@actions/http-client')
|
const http = require('@actions/http-client')
|
||||||
const os = require('os')
|
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const semver = require('semver')
|
const semver = require('semver')
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
@@ -61,7 +60,6 @@ async function installOTP(otpSpec, osVersion, hexMirrors) {
|
|||||||
core.startGroup(`Installing Erlang/OTP ${otpVersion} - built on ${osVersion}`)
|
core.startGroup(`Installing Erlang/OTP ${otpVersion} - built on ${osVersion}`)
|
||||||
await installer.installOTP(osVersion, otpVersion, hexMirrors)
|
await installer.installOTP(osVersion, otpVersion, hexMirrors)
|
||||||
core.setOutput('otp-version', otpVersion)
|
core.setOutput('otp-version', otpVersion)
|
||||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/otp/bin`)
|
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
|
||||||
return otpVersion
|
return otpVersion
|
||||||
@@ -89,8 +87,6 @@ async function maybeInstallElixir(elixirSpec, otpSpec, hexMirrors) {
|
|||||||
)
|
)
|
||||||
core.info(`##[add-matcher]${elixirMatchers}`)
|
core.info(`##[add-matcher]${elixirMatchers}`)
|
||||||
}
|
}
|
||||||
core.addPath(`${os.homedir()}/.mix/escripts`)
|
|
||||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`)
|
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
|
||||||
installed = true
|
installed = true
|
||||||
|
|||||||
Reference in New Issue
Block a user