#!/bin/bash

AUTO=0
HOOKS_DIR="/usr/share/ee-ips/hooks"
LOCAL_HOOKS_DIR="/usr/local/share/ee-ips/hooks"
ENABLED_HOOKS_DIR="/etc/ee-ips/hooks"

function list_hooks() {
    local -a dirs
    dirs=( "$HOOKS_DIR" "$LOCAL_HOOKS_DIR" )
    [[ "$1" == "enabled" ]] && dirs=( "$ENABLED_HOOKS_DIR" )
    find "${dirs[@]}" \
        -maxdepth 1 \
        -type f \
        -follow \
        -executable \
        -printf "%f\n" | \
        sort -u
}

function locate_hook() {
    local hook="$1" path
    [[ -z "$hook" ]] && return 1
    if [[ -e "$LOCAL_HOOKS_DIR/$hook" ]]; then
        path="$LOCAL_HOOKS_DIR/$hook"
    elif [[ -e "$HOOKS_DIR/$hook" ]]; then
        path="$HOOKS_DIR/$hook"
    else
        return 1
    fi
    [[ ! -x "$path" ]] && return 1
    echo "$path"
    return 0
}

function confirm() {
    local question="$*"
    [[ -z "$question" ]] && question="Do you want to continue"
    [[ $AUTO -eq 1 ]] && return 0
    echo -ne "$question [y/N]? "
    local a
    read -r a
    [[ "$a" == "y" ]] || [[ "$a" == "Y" ]] && echo && return 0
    return 1
}

function in_array() {
    local needle=$1 el
    shift
    for el in "$@"; do
        [ "$el" = "$needle" ] && return 0
    done
    return 1
}

function implode() {
  local d=${1-} f=${2-}
  if shift 2; then
    printf %s "$f" "${@/#/$d}"
  fi
}
