#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"

cmd-plugin-list() {
  declare desc="lists all plugins"
  declare cmd="plugin"
  [[ "$1" == "$cmd" ]] && shift 1

  plugn list
}

cmd-plugin-installed() {
  declare desc="checks if a plugin is installed"
  declare cmd="plugin:installed"
  [[ "$1" == "$cmd" ]] && shift 1
  declare PLUGIN_NAME="$1"

  plugn list | awk '{print $1}' | grep -q "^${PLUGIN_NAME}$"
}

fn-plugin-set-permissions() {
  declare desc="ensures correct permissions for all available plugins"
  chown -R "${DOKKU_SYSTEM_USER}:${DOKKU_SYSTEM_GROUP}" "$PLUGIN_CORE_AVAILABLE_PATH" "$PLUGIN_AVAILABLE_PATH"
  chown -R "${DOKKU_SYSTEM_USER}:${DOKKU_SYSTEM_GROUP}" "$PLUGIN_CORE_ENABLED_PATH" "$PLUGIN_ENABLED_PATH"
}

plugin_prime_bash_completion() {
  declare desc="primes the bash-completion cache"

  dokku_log_info1_quiet "Priming bash-completion cache"
  dokku --quiet help --all | awk '/^    /{ print $1 }' | sort >"/var/cache/dokku-completion"
}

fn-is-core-plugin() {
  declare PLUGIN_NAME="$1"

  if [[ -L "$PLUGIN_CORE_ENABLED_PATH/$PLUGIN_NAME" ]]; then
    return 0
  fi

  return 1
}

fn-is-valid-plugin() {
  declare PLUGIN_NAME="$1"

  if [[ "$PLUGIN_NAME" =~ ^[0-9a-zA-Z_-]+$ ]]; then
    return 0
  fi

  return 1
}

fn-plugin-enabled() {
  declare PLUGIN_NAME="$1"

  if [[ -L "$PLUGIN_ENABLED_PATH/$PLUGIN_NAME" ]]; then
    return 0
  fi

  return 1
}
