#!/bin/sh

set -eu

DOTFILES="$(CDPATH= cd -- "$(dirname "$0")" && pwd)"
CONFIG="${1:-setups/wayland.config}"

#command -v pacman >/dev/null || { echo "You can't deploy on non Arch-based distro"; exit 1; }

section=
while IFS= read -r line || [ -n "$line" ]; do
  case "$line" in
    ""|\#*) ;;
    \[*\]) section=${line#\[}; section=${section%\]} ;;
    *) eval "$section=\"\${$section:+\${$section}
    }$line\""
  ;;  esac
done < "$CONFIG"

[ -z "${packages:-}" ] || sudo apt install $packages

[ -z "${aur:-}" ] || {
  command -v aur >/dev/null || {
    [ -d /tmp/aurutils ] || git clone https://aur.archlinux.org/aurutils /tmp/aurutils
    (
      cd /tmp/aurutils
      makepkg -si --noconfirm
    )
    sudo mkdir -p /var/cache/pacman/aur
    sudo chown "$USER" /var/cache/pacman/aur
    (
      cd /var/cache/pacman/aur
      repo-add aur.db.tar.gz
    )
    grep -q '^\[aur\]' /etc/pacman.conf ||
      printf '\n[aur]\nSigLevel = Optional TrustAll\nServer = file:///var/cache/pacman/aur\n' |
      sudo tee -a /etc/pacman.conf >/dev/null
  }

  export AUR_PAGER=true
  aur sync $aur
  sudo pacman -S --needed $aur
}

[ -z "${git:-}" ] || {
  printf '%b\n' "$git" |
  while read -r repo dir; do
    [ -d "$HOME/$dir" ] || git clone "$repo" "$HOME/$dir"
  done
}

[ -z "${dirs:-}" ] || {
  printf '%b\n' "$dirs" |
  while read -r dir; do
    mkdir -p "$HOME/$dir"
  done
}

mkdir -p "$HOME/.config"

case "${session:-}" in
  wayland|xorg) dir="$DOTFILES/config/$session" ;;
  *) dir= ;;
esac

for path in "$DOTFILES/config/common/"* "$dir"/*; do
  [ -e "$path" ] || continue
  ln -sfn "$path" "$HOME/.config/$(basename "$path")"
done

[ -z "${symlinks:-}" ] || {
  printf '%b\n' "$symlinks" |
  while read -r src dst; do
    mkdir -p "$(dirname "$HOME/$dst")"
    ln -sf "$DOTFILES/$src" "$HOME/$dst"
  done
}

[ -z "${dircolors:-}" ] || dircolors -p > "$HOME/$dircolors"
[ -z "${shell:-}" ] || [ "$SHELL" = "$shell" ] || chsh -s "$shell"

[ -z "${firefox:-}" ] || {
  for profile in "$HOME"/.config/mozilla/firefox/*.default*; do
    [ -d "$profile" ] && ln -sf "$DOTFILES/$firefox/"* "$profile/"
  done
}
