#! /bin/sh

bin_dir=$1

if [ "$bin_dir" = "" ] ; then
  echo "Invalid usage!"
  echo "Usage: $0 [bin_dir] " >&2
  exit 1
fi

cd $bin_dir
rm -rf languages && mkdir -p languages && chmod 755 languages
mkdir -p storage

UNAME=$(uname)

# TypeScript
npm i -g typescript-language-server

# Java
echo "Downloading LSP server binary for Java..."
curl https://download.eclipse.org/jdtls/milestones/1.4.0/jdt-language-server-1.4.0-202109161824.tar.gz -o storage/lsp-server-java.tar.gz
mkdir -p languages/java
chmod 755 languages/java
tar -xf storage/lsp-server-java.tar.gz --directory languages/java lsp-server-java.tar.gz

# Kotlin
echo "Downloading LSP server binary for Kotlin..."
curl https://github.com/fwcd/kotlin-language-server/releases/download/1.1.2/server.zip -o storage/lsp-server-kotlin.zip
mkdir -p languages/kotlin
chmod 755 languages/kotlin
unzip storage/lsp-server-kotlin.zip -d languages/kotlin

# CLang
mkdir -p languages/clang && chmod 755 languages/clang
echo "Downloading LSP server binary for CLang..."

if [ "$UNAME" = "Linux" ] ; then
  curl https://github.com/clangd/clangd/releases/download/13.0.0/clangd-linux-13.0.0.zip -o storage/clangd-linux.zip
  unzip storage/clangd-linux.zip -d languages/clang
elif [ "$UNAME" = "Darwin" ] ; then
  curl https://github.com/clangd/clangd/releases/download/13.0.0/clangd-mac-13.0.0.zip -o storage/clangd-mac.zip
  unzip storage/clangd-mac.zip -d languages/clang
elif [[ "$UNAME" = CYGWIN* || "$UNAME" = MINGW* ]] ; then
  curl https://github.com/clangd/clangd/releases/download/13.0.0/clangd-windows-13.0.0.zip -o storage/clangd-windows.zip
  unzip storage/clangd-windows.zip -d languages/clang
fi

# CSharp
echo "Downloading LSP server binary for CSharp..."
mkdir -p languages/csharp && chmod 755 languages/csharp

if [ "$UNAME" = "Linux" ] ; then
  curl https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.37.16/omnisharp-linux-x64.zip -o storage/omnisharp-linux-x64.zip
  yes | unzip storage/omnisharp-linux-x64.zip -d languages/csharp
  chmod 755 languages/csharp/run
elif [ "$UNAME" = "Darwin" ] ; then
  curl https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.37.16/omnisharp-osx.zip -o storage/omnisharp-osx.zip
  unzip storage/omnisharp-osx.zip -d languages/csharp
  chmod 755 languages/csharp/run
elif [[ "$UNAME" = CYGWIN* || "$UNAME" = MINGW* ]] ; then
  curl https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.37.16/omnisharp-win-x64.zip -o storage/omnisharp-win-x64.zip
  unzip storage/omnisharp-win-x64.zip -d languages/csharp
  chmod 755 languages/csharp/OmniSharp.exe
fi
