#!/usr/bin/env bash
#
# check env variables and set default variables
#
# @params
# Globals
#   ${DOTBARE_DIR}: location of the bare repo
#   ${DOTBARE_TREE}: which folder is the bare repo tracking
#   ${DOTBARE_BACKUP}: backup directory for all tracked files
#   ${DOTBARE_KEY}: default key bindings
#   ${FZF_DEFAULT_OPTS}: update FZF_DEFAULT_OPTS to reflect dotbare changes
#   ${DOTBARE_FZF_DEFAULT_OPTS}: user custom setting for dotbare
#   ${EDITOR}: default editor to use

export DOTBARE_DIR="${DOTBARE_DIR:-$HOME/.cfg/}"
export DOTBARE_TREE="${DOTBARE_TREE:-$HOME}"
export DOTBARE_BACKUP="${DOTBARE_BACKUP:-${XDG_DATA_HOME:-$HOME/.local/share}/dotbare}"
export DOTBARE_VERSION="v1.3.1"

export DOTBARE_DIFF_PAGER="${DOTBARE_DIFF_PAGER:-$(git config core.pager || echo 'cat')}"

export EDITOR="${EDITOR:-vim}"
if [[ -z "${DOTBARE_KEY}" ]]; then
  DOTBARE_KEY="
    --bind=alt-a:toggle-all
    --bind=alt-w:jump
    --bind=alt-0:top
    --bind=alt-s:toggle-sort
    --bind=alt-t:toggle-preview
  "
fi

[[ -z "${FZF_DEFAULT_OPTS}" ]] && export FZF_DEFAULT_OPTS='--cycle'

FZF_DEFAULT_OPTS="
  $FZF_DEFAULT_OPTS
  --ansi
  --cycle
  --exit-0
  $DOTBARE_FZF_DEFAULT_OPTS
  $DOTBARE_KEY
"

[[ -z "${COLUMNS}" ]] \
  && COLUMNS=$(stty size < /dev/tty | cut -d' ' -f2)
[[ "${COLUMNS}" -lt 80 ]] \
  && FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS --preview-window=hidden"

#######################################
# determine to set multi selection or not
# Globals:
#   ${FZF_DEFAULT_OPTS}: fzf options
# Arguments:
#   $1: if exists, disable multi, set single
#######################################
function set_fzf_multi() {
  local no_multi="$1"
  if [[ -z "${no_multi}" ]]; then
    export FZF_DEFAULT_OPTS="${FZF_DEFAULT_OPTS} --multi"
  else
    export FZF_DEFAULT_OPTS="${FZF_DEFAULT_OPTS} --no-multi"
  fi
}
