With this change, it's possible to override the `erlang` and `elixir` versions used to compile `elixir-ls`. For example, to compile v0.24.1 with erlang 27.1.2 and elixir 1.17.3, run the following: ```bash ./elixir-ls-setup.sh v0.24.1 27.1.2 1.17.3 ``` Reviewed-on: #102 Co-authored-by: Joao P Dubas <joao.dubas+gitea@gmail.com> Co-committed-by: Joao P Dubas <joao.dubas+gitea@gmail.com>
39 lines
1.5 KiB
Bash
Executable File
39 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
function setup() {
|
|
local elixir_ls_home=${LOCAL_SRC_HOME}/elixir-ls
|
|
local elixir_ls_release=${elixir_ls_home}/release
|
|
echo "elixir-ls repo"
|
|
cd ${elixir_ls_home}
|
|
echo "checkout versions ${1}"
|
|
git checkout tags/${1}
|
|
echo "set erlang/elixir versions"
|
|
cp .release-tool-versions .tool-versions
|
|
if [[ ! -z "$2" ]]; then
|
|
echo "override erlang to ${2}"
|
|
sed -i "s/erlang .*/erlang ${2}/g" .tool-versions
|
|
fi
|
|
if [[ ! -z "$3" ]]; then
|
|
echo "override elixir to ${3}"
|
|
sed -i "s/elixir .*/elixir ${3}/g" .tool-versions
|
|
fi
|
|
local current_erlang=$(mise current erlang)
|
|
local current_elixir=$(mise current elixir)
|
|
echo "using erlang ${current_erlang} / elixir ${current_elixir}"
|
|
echo "install erlang/elixir runtimes"
|
|
KERL_CONFIGURE_OPTIONS="-with-ssl=${HOME}/.local/lib/ssl" mise install
|
|
echo "install elixir-ls deps"
|
|
mise exec erlang@${current_erlang} elixir@${current_elixir} --command "mix do local.rebar --force, local.hex --force, deps.get, deps.compile"
|
|
echo "compile and release elixir-ls"
|
|
mise exec erlang@${current_erlang} elixir@${current_elixir} --command "MIX_ENV=prod mix compile"
|
|
mise exec erlang@${current_erlang} elixir@${current_elixir} --command "MIX_ENV=prod mix elixir_ls.release -o ${elixir_ls_release}/${1}"
|
|
echo "remove local .tool-versions"
|
|
cp .tool-versions ${elixir_ls_release}/${1}
|
|
rm .tool-versions
|
|
mise exec erlang@${current_erlang} elixir@${current_elixir} --command "mix do deps.clean --all, clean"
|
|
git checkout master
|
|
}
|
|
|
|
setup $1 $2 $3
|