riju/scripts/docker-install-phase4.bash

261 lines
9.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
set -o pipefail
set -x
pushd /tmp >/dev/null
latest_release() {
curl -sSL "https://api.github.com/repos/$1/releases/latest" | jq -r .tag_name
}
# Needed for project infrastructure
ver="$(latest_release watchexec/watchexec)"
wget -nv "https://github.com/watchexec/watchexec/releases/download/${ver}/watchexec-${ver}-x86_64-unknown-linux-gnu.deb"
dpkg -i watchexec-*.deb
rm watchexec-*.deb
# Shared
ver="$(latest_release jgm/pandoc)"
wget -nv "https://github.com/jgm/pandoc/releases/download/${ver}/pandoc-${ver}-linux-amd64.tar.gz"
tar -xf pandoc-*-linux-amd64.tar.gz -C /usr --strip-components=1
rm pandoc-*-linux-amd64.tar.gz
# ><>
wget -nv https://gist.githubusercontent.com/anonymous/6392418/raw/fish.py -O /usr/local/bin/esofish
sed -i 's:^#!.*:#!/usr/bin/env python3:' /usr/local/bin/esofish
chmod +x /usr/local/bin/esofish
# Ada
wget -nv https://dl.bintray.com/reznikmm/ada-language-server/linux-latest.tar.gz
tar -xf linux-latest.tar.gz
mv linux/ada_language_server /usr/local/bin/ada_language_server
mv linux/*.so* /usr/lib/x86_64-linux-gnu/
rm -rf linux linux-latest.tar.gz
# APL
file="$(curl -sS ftp://ftp.gnu.org/gnu/apl/ | grep -Eo 'apl_[-0-9.]+_amd64.deb$' | sort -rV | head -n1)"
wget -nv "ftp://ftp.gnu.org/gnu/apl/${file}"
dpkg -i apl_*_amd64.deb
rm apl_*_amd64.deb
# Clojure
ver="$(latest_release snoe/clojure-lsp)"
wget -nv "https://github.com/snoe/clojure-lsp/releases/download/${ver}/clojure-lsp"
chmod +x clojure-lsp
mv clojure-lsp /usr/local/bin/clojure-lsp
# D
wget -nv "$(curl -sSL https://dlang.org/download.html | grep -Eo '"http://[^"]+amd64.deb"' | tr -d '"')"
dpkg -i dmd_*.deb
rm dmd_*.deb
# Dhall
ver="$(latest_release dhall-lang/dhall-haskell)"
file="$(curl -sSL "https://api.github.com/repos/dhall-lang/dhall-haskell/releases/tags/${ver}" | jq -r '.assets | map(select(.name | (contains("dhall-json") and contains("x86_64-linux.tar.bz2")))) | .[0].name')"
wget -nv "https://github.com/dhall-lang/dhall-haskell/releases/download/${ver}/${file}"
mkdir dhall-json
tar -xf dhall-json-*-x86_64-linux.tar.bz2 -C dhall-json
mv dhall-json/bin/dhall-to-json dhall-json/bin/json-to-dhall /usr/local/bin/
rm -rf dhall-json dhall-json-*-x86_64-linux.tar.bz2
# Elixir
ver="$(latest_release elixir-lsp/elixir-ls)"
wget -nv "https://github.com/elixir-lsp/elixir-ls/releases/download/${ver}/elixir-ls.zip"
unzip -d /opt/elixir-ls elixir-ls.zip
ln -s /opt/elixir-ls/language_server.sh /usr/local/bin/elixir-ls
rm elixir-ls.zip
# Elm
ver="$(latest_release elm/compiler)"
wget -nv "https://github.com/elm/compiler/releases/download/${ver}/binary-for-linux-64-bit.gz"
gunzip binary-for-linux-64-bit.gz
chmod +x binary-for-linux-64-bit
mv binary-for-linux-64-bit /usr/local/bin/elm
# Emojicode
ver="$(latest_release emojicode/emojicode)"
wget -nv "https://github.com/emojicode/emojicode/releases/download/${ver}/Emojicode-$(sed 's/^v//' <<< "$ver")-Linux-x86_64.tar.gz"
tar -xf Emojicode-*-Linux-x86_64.tar.gz
pushd Emojicode-*-Linux-x86_64 >/dev/null
mv emojicodec /usr/local/bin/
mkdir -p /usr/local/include/emojicode
mv include/* /usr/local/include/emojicode/
mkdir -p /usr/local/EmojicodePackages
mv packages/* /usr/local/EmojicodePackages/
popd >/dev/null
rm -rf Emojicode-*-Linux-x86_64 Emojicode-*-Linux-x86_64.tar.gz
# Entropy
wget -nv http://danieltemkin.com/Content/Entropy/Entropy.zip
unzip -d /opt/entropy Entropy.zip
rm Entropy.zip
# Erlang
wget -nv https://s3.amazonaws.com/rebar3/rebar3
chmod +x rebar3
mv rebar3 /usr/local/bin/rebar3
# Euphoria
wget -nv http://www.rapideuphoria.com/31/euphor31.tar
mkdir /opt/euphoria
tar -xf euphor*.tar -C /opt/euphoria --strip-components=1
ln -s /opt/euphoria/bin/exu /usr/bin/
rm euphor*.tar
# Factor
ver="$(curl -sSL https://factorcode.org/ | grep -Eo 'release\?os=linux[^>]+>[^<]+' | sed -E 's/[^>]+>//' | head -n1)"
wget -nv "https://downloads.factorcode.org/releases/${ver}/factor-linux-x86-64-${ver}.tar.gz"
tar -xf factor-linux-x86-64-*.tar.gz
mv -T factor /opt/factor
ln -s /opt/factor/factor /usr/local/bin/factor-lang
rm factor-linux-x86-64-*.tar.gz
# Go
export GO111MODULE=on
export GOPATH="$PWD/go"
go get golang.org/x/tools/gopls@latest
mv go/bin/gopls /usr/local/bin/gopls
rm -rf go
# GolfScript
wget -nv http://www.golfscript.com/golfscript/golfscript.rb -O /usr/local/bin/golfscript
chmod +x /usr/local/bin/golfscript
# Haskell
curl -sSL https://get.haskellstack.org/ | sh
wget -nv https://github.com/raxod502/riju-cdn/releases/download/brittany-0.12.1.1/brittany -O /usr/local/bin/brittany
chmod +x /usr/local/bin/brittany
mkdir -p /opt/haskell
wget -nv https://github.com/raxod502/riju-cdn/releases/download/hie-1.4-a9005b2ba2050bdfdd4438f1d471a3f7985492cd-ghc8.6.5/hie -O /usr/local/bin/hie
wget -nv https://github.com/raxod502/riju-cdn/releases/download/hie-1.4-a9005b2ba2050bdfdd4438f1d471a3f7985492cd-ghc8.6.5/hoogle.hoo -O /opt/haskell/hoogle.hoo
chmod +x /usr/local/bin/hie
# HCL/TOML/YAML
ver="$(latest_release sclevine/yj)"
wget -nv "https://github.com/sclevine/yj/releases/download/${ver}/yj-linux"
chmod +x yj-linux
mv yj-linux /usr/local/bin/yj
# Ink
ver="$(latest_release thesephist/ink)"
wget -nv "https://github.com/thesephist/ink/releases/download/${ver}/ink-linux"
wget -nv "https://github.com/thesephist/ink/releases/download/${ver}/std.ink"
wget -nv "https://github.com/thesephist/ink/releases/download/${ver}/str.ink"
chmod +x ink-linux
mv ink-linux /usr/local/bin/ink
mkdir /opt/ink
mv std.ink str.ink /opt/ink/
# Ioke
wget -nv https://ioke.org/dist/ioke-ikj-latest.tar.gz
tar -xf ioke-ikj-*.tar.gz -C /opt
rm ioke-ikj-*.tar.gz
ln -s /opt/ioke/bin/ioke /usr/local/bin/ioke
# Java
wget -nv https://download.eclipse.org/jdtls/snapshots/jdt-language-server-latest.tar.gz
mkdir /opt/jdt
tar -C /opt/jdt -xf jdt-language-server-latest.tar.gz
rm jdt-language-server-latest.tar.gz
# Kitten
wget -nv https://github.com/raxod502/riju-cdn/releases/download/kitten-0.1-bcaffa109c7f93959b3c2e9e7ae74462f840088d.ktn/kitten -O /usr/local/bin/kitten
wget -nv https://github.com/raxod502/riju-cdn/releases/download/kitten-0.1-bcaffa109c7f93959b3c2e9e7ae74462f840088d.ktn/common.ktn -O /usr/local/bin/common.ktn
chmod +x /usr/local/bin/kitten
# Kotlin
ver="$(latest_release JetBrains/kotlin)"
wget -nv "https://github.com/JetBrains/kotlin/releases/download/${ver}/kotlin-compiler-$(sed 's/^v//' <<< "$ver").zip"
unzip kotlin-*.zip
mv kotlinc /opt/kotlin
ln -s /opt/kotlin/bin/* /usr/local/bin/
ln -s /opt/kotlin/lib/* /usr/local/lib/
rm kotlin-*.zip
# Lua
ver="$(latest_release EmmyLua/EmmyLua-LanguageServer)"
wget -nv "https://github.com/EmmyLua/EmmyLua-LanguageServer/releases/download/${ver}/EmmyLua-LS-all.jar"
mv EmmyLua-LS-all.jar /usr/lib/EmmyLua-LS.jar
# MariaDB
ver="$(curl -sSL https://downloads.mariadb.org/ | grep 'href="/mariadb/[0-9]' | grep -Eo '[0-9][^/]+' | sort -rV | head -n1)"
wget -nv "https://downloads.mariadb.org/f/mariadb-${ver}/bintar-linux-x86_64/mariadb-${ver}-linux-x86_64.tar.gz/from/http%3A//mirror.dal.ca/mariadb/?serve" -O mariadb.tar.gz
tar -xf mariadb.tar.gz
mkdir /opt/mariadb
mv mariadb-*-linux-x86_64/* /opt/mariadb/
chmod a=rx,u=rwx /opt/mariadb/lib/plugin/auth_pam_tool_dir
chmod a=rx,u=rwxs /opt/mariadb/lib/plugin/auth_pam_tool_dir/auth_pam_tool
# Omgrofl
ver="$(latest_release OlegSmelov/omgrofl-interpreter)"
mkdir /opt/omgrofl
wget -nv "https://github.com/OlegSmelov/omgrofl-interpreter/releases/download/${ver}/Omgrofl.jar" -O /opt/omgrofl/Omgrofl.jar
# PowerShell
ver="$(latest_release PowerShell/PowerShell)"
wget -nv "https://github.com/PowerShell/PowerShell/releases/download/${ver}/powershell-$(sed 's/^v//' <<< "$ver")-linux-x64.tar.gz"
mkdir /opt/powershell
tar -xf powershell-*.tar.gz -C /opt/powershell
ln -s /opt/powershell/pwsh /usr/local/bin/pwsh
rm powershell-*.tar.gz
ver="$(latest_release PowerShell/PowerShellEditorServices)"
wget -nv "https://github.com/PowerShell/PowerShellEditorServices/releases/download/${ver}/PowerShellEditorServices.zip"
unzip PowerShellEditorServices.zip
mv PowerShellEditorServices /opt/powershell-editor-services
rm PowerShellEditorServices.zip
# Python
xml="$(curl -sSL "https://pvsc.blob.core.windows.net/python-language-server-stable?restype=container&comp=list&prefix=Python-Language-Server-linux-x64")"
nupkg="$(echo "$xml" | grep -Eo 'https://[^<]+\.nupkg' | tail -n1)"
wget -nv "${nupkg}"
unzip -d /opt/mspyls Python-Language-Server-linux-x64.*.nupkg
chmod +x /opt/mspyls/Microsoft.Python.LanguageServer
ln -s /opt/mspyls/Microsoft.Python.LanguageServer /usr/local/bin/Microsoft.Python.LanguageServer
rm Python-Language-Server-linux-x64.*.nupkg
# ReasonML
ver="$(latest_release jaredly/reason-language-server)"
wget -nv "https://github.com/jaredly/reason-language-server/releases/download/${ver}/rls-linux.zip"
unzip rls-linux.zip
mv rls-linux/reason-language-server /usr/local/bin/
rm rls-linux.zip
# Rust
export CARGO_HOME=/opt/rust
export RUSTUP_HOME=/opt/rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path
tee /opt/rust/wrapper >/dev/null <<"EOF"
#!/usr/bin/env bash
RUSTUP_HOME=/opt/rust exec /opt/rust/bin/${0##*/} "$@"
EOF
chmod +x /opt/rust/wrapper
for file in /opt/rust/bin/*; do
ln -s /opt/rust/wrapper "/usr/local/bin/${file##*/}"
done
# SETL
wget -nv https://setl.org/setl/bin/Linux-x86-64bit/setlbin.tgz
tar -xf setlbin.tgz -C /usr/local/bin
# SQL
ver="$(latest_release lighttiger2505/sqls)"
wget -nv "https://github.com/lighttiger2505/sqls/releases/download/${ver}/sqls-${ver}-linux-amd64.tar.gz"
tar -xf sqls-*-linux-amd64.tar.gz
mv linux-amd64/sqls /usr/local/bin/
rm -rf linux-amd64 sqls-*-linux-amd64.tar.gz
# Swift
wget -nv https://github.com/raxod502/riju-cdn/releases/download/swift-5.2.4-20.04/swift.tar.gz -O swift.tar.gz
mkdir /opt/swift
tar -xf swift.tar.gz -C /opt/swift --strip-components=2
ln -s /opt/swift/bin/swiftc /usr/local/bin/swiftc
ln -s /opt/swift/bin/sourcekit-lsp /usr/local/bin/sourcekit-lsp
rm swift.tar.gz
popd >/dev/null
rm "$0"