#!/usr/bin/env bash
#
# Clone or update alacritty to $HOME/dev/alacritty, build and install to $HOME/bin
# Note: run from ZSH in a different terminal emulator.
set -e

if pgrep alacritty > /dev/null; then
  echo "Error: alacritty is running. Kill it and retry."
  exit 1
fi

if ! [ -x "$(command -v cargo)" ]; then
  echo "Install Rust toolchain first"
  exit 1
fi

mkdir -p $HOME/dev $HOME/bin
destdir=$HOME/dev/alacritty
if [ -d $destdir ]; then
  echo "Updating alacritty..."
  cd $destdir
  git pull --rebase
else
  echo "Cloning alacritty..."
  cd $HOME/dev
  git clone -q https://github.com/alacritty/alacritty.git alacritty
fi

cd $destdir
echo "Building alacritty..."
if [ $(uname -s) = "Darwin" ]; then
  make app
  echo "To install: cp -r $destdir/target/release/osx/Alacritty.app /Applications/"
else
  cargo build --release
  echo "Installing alacritty..."
  cp $destdir/target/release/alacritty $HOME/bin/alacritty
fi

if [ -z "$ZDOTDIR" ]; then
  echo "WARNING: ZDOTDIR blank so not installing ZSH completions"
  exit 0
fi

echo "Installing ZSH completions..."
funcdir=$ZDOTDIR/functions
mkdir -p $funcdir
cp $destdir/extra/completions/_alacritty $funcdir/_alacritty

if [ $(uname -s) = "Linux" ]; then
  # TODO: fix for Manjaro/xfce4:
  sudo cp $destdir/extra/logo/alacritty-term.svg /usr/share/pixmaps/Alacritty.svg
  sudo desktop-file-install $destdir/extra/linux/Alacritty.desktop
  sudo update-desktop-database
fi

echo "Done"