#!/bin/sh

prog=${0##*/}

if [ "$#" -ne 1 ]; then
    echo "Usage: $prog [server_name]: install specified server
       $prog -lint: install all linters and formatters
       $prog -lsp : install all lsp servers
       $prog -dap : install all dap servers
       $prog -all : install everything"
    exit 1
fi

nvim_script_dir=${XDG_CONFIG_HOME:-$HOME/.config}/nvim/scripts

if [ "$1" = "-lsp" ]; then
    printf "\033[1;33mInstalling lsp servers...\033[0m\n"
    find "${nvim_script_dir}/lsp" -type f -exec printf "\033[1;34mInstalling \033[1;32m" \; -and -exec basename '{}' \; -and -exec printf "\033[0m" \; -and -exec '{}' \; -and -exec printf '\n' \;
elif [ "$1" = '-dap' ]; then
    printf "\033[1;33mInstalling dap servers...\033[0m\n"
    find "${nvim_script_dir}/dap" -type f -exec printf "\033[1;34mInstalling \033[1;32m" \; -and -exec basename '{}' \; -and -exec printf "\033[0m" \; -and -exec '{}' \; -and -exec printf '\n' \;
elif [ "$1" = '-lint' ]; then
    printf "\033[1;33mInstalling linters and formatters...\033[0m\n"
    find "${nvim_script_dir}/lint" -type f -exec printf "\033[1;34mInstalling \033[1;32m" \; -and -exec basename '{}' \; -and -exec printf "\033[0m" \; -and -exec '{}' \; -and -exec printf '\n' \;
elif [ "$1" = '-all' ]; then
    printf "\033[1;33mInstalling everything...\033[0m\n"
    find "${nvim_script_dir}" -mindepth 2 -type f -exec printf "\033[1;34mInstalling \033[1;32m" \; -and -exec basename '{}' \; -and -exec printf "\033[0m" \; -and -exec '{}' \; -and -exec printf '\n' \;
else
    # Each server should have an unique name
    server_path=$(find "${nvim_script_dir}" -mindepth 2 -type f -name "$1" | head -n 1)
    if [ -z "${server_path}" ]; then
        printf "Incorrect server name \033[1;31m%s\033[0m.\n" "$1"
        exit 1
    fi
    printf "\033[1;34mInstalling \033[1;32m%s\033[0m\n" "$1"
    exec ${server_path}
fi
