From b980a5ac9b7316a23ebc16de2bb69b7c3ad731b5 Mon Sep 17 00:00:00 2001 From: Blake Kostner Date: Tue, 22 Nov 2022 15:39:36 -0700 Subject: [PATCH] Ease Elixir escripts execution by adding ${HOME}/.mix/escripts to path (#153) * feat: add escripts to path * Update src/install-elixir.ps1 Co-authored-by: Paulo F. Oliveira * add github action combo to test escript * force install * use os homedir for escript install path Co-authored-by: Paulo F. Oliveira --- .github/workflows/ubuntu.yml | 10 ++++++++++ .github/workflows/windows.yml | 10 ++++++++++ dist/index.js | 2 ++ dist/install-elixir.ps1 | 3 +++ dist/install-elixir.sh | 2 ++ src/install-elixir.ps1 | 3 +++ src/install-elixir.sh | 2 ++ src/setup-beam.js | 2 ++ 8 files changed, 34 insertions(+) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 6ed390c5..4d0ac514 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -134,6 +134,11 @@ jobs: otp-version: '24' os: 'ubuntu-latest' disable_problem_matchers: true + - elixir-version: 'v1.13' + otp-version: '24' + escript_packages: 'hex protobuf' + escript_script: 'protoc-gen-elixir --version' + os: 'ubuntu-latest' steps: - uses: actions/checkout@v3 - name: Use erlef/setup-beam @@ -184,6 +189,11 @@ jobs: cd test-projects/gleam_gleam gleam test if: ${{ matrix.combo.gleam-version && matrix.combo.otp-version && !matrix.combo.rebar3-version }} + - name: Run escript + run: | + mix escript.install --force ${{matrix.combo.escript_packages}} + ${{matrix.combo.escript_script}} + if: ${{matrix.combo.escript_packages && matrix.combo.escript_script}} environment_variables: name: Environment variables runs-on: ${{matrix.combo.os}} diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 63516600..0b7ddfe7 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -45,6 +45,11 @@ jobs: otp-version: '24' rebar3-version: '3.16' os: 'windows-latest' + - elixir-version: 'v1.13' + otp-version: '24' + escript_packages: 'hex protobuf' + escript_script: 'protoc-gen-elixir --version' + os: 'windows-latest' steps: - uses: actions/checkout@v3 - name: Use erlef/setup-beam @@ -82,6 +87,11 @@ jobs: cd test-projects/erlang_rebar3 rebar3 ct if: ${{matrix.combo.rebar3-version}} + - name: Run escript + run: | + mix escript.install --force ${{matrix.combo.escript_packages}} + ${{matrix.combo.escript_script}} + if: ${{matrix.combo.escript_packages && matrix.combo.escript_script}} environment_variables: name: Environment variables runs-on: ${{matrix.combo.os}} diff --git a/dist/index.js b/dist/index.js index cd438d9f..9a041b90 100644 --- a/dist/index.js +++ b/dist/index.js @@ -7193,6 +7193,7 @@ module.exports = { const core = __nccwpck_require__(2186) const { exec } = __nccwpck_require__(1514) +const os = __nccwpck_require__(2037) const path = __nccwpck_require__(1017) const semver = __nccwpck_require__(1383) const https = __nccwpck_require__(5687) @@ -7269,6 +7270,7 @@ async function maybeInstallElixir(elixirSpec, otpVersion) { `##[add-matcher]${path.join(matchersPath, 'elixir-matchers.json')}`, ) } + core.addPath(`${os.homedir()}/.mix/escripts`) core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`) console.log('##[endgroup]') diff --git a/dist/install-elixir.ps1 b/dist/install-elixir.ps1 index 05f6d2dc..48a14498 100644 --- a/dist/install-elixir.ps1 +++ b/dist/install-elixir.ps1 @@ -18,4 +18,7 @@ $ProgressPreference="Continue" Write-Output "Installed Elixir version follows" & "${DIR_FOR_BIN}/bin/elixir" "-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 diff --git a/dist/install-elixir.sh b/dist/install-elixir.sh index 25f582b4..9651f613 100755 --- a/dist/install-elixir.sh +++ b/dist/install-elixir.sh @@ -15,4 +15,6 @@ 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}" diff --git a/src/install-elixir.ps1 b/src/install-elixir.ps1 index 05f6d2dc..48a14498 100644 --- a/src/install-elixir.ps1 +++ b/src/install-elixir.ps1 @@ -18,4 +18,7 @@ $ProgressPreference="Continue" Write-Output "Installed Elixir version follows" & "${DIR_FOR_BIN}/bin/elixir" "-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 diff --git a/src/install-elixir.sh b/src/install-elixir.sh index 25f582b4..9651f613 100755 --- a/src/install-elixir.sh +++ b/src/install-elixir.sh @@ -15,4 +15,6 @@ 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}" diff --git a/src/setup-beam.js b/src/setup-beam.js index 577b2a3f..9d71ef9a 100644 --- a/src/setup-beam.js +++ b/src/setup-beam.js @@ -1,5 +1,6 @@ const core = require('@actions/core') const { exec } = require('@actions/exec') +const os = require('os') const path = require('path') const semver = require('semver') const https = require('https') @@ -76,6 +77,7 @@ async function maybeInstallElixir(elixirSpec, otpVersion) { `##[add-matcher]${path.join(matchersPath, 'elixir-matchers.json')}`, ) } + core.addPath(`${os.homedir()}/.mix/escripts`) core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`) console.log('##[endgroup]')