#!/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 local FORMAT="stdout" local arg while [[ "$#" -gt 0 ]]; do arg="$1" shift case "$arg" in --format) if [[ "$#" -gt 0 ]]; then FORMAT="$1" shift else FORMAT="" fi ;; --format=*) FORMAT="${arg#--format=}" ;; esac done if [[ "$FORMAT" != "stdout" ]] && [[ "$FORMAT" != "json" ]]; then dokku_log_fail "Invalid output format specified, supported formats: json, stdout" fi if [[ "$FORMAT" == "json" ]]; then "$PLUGIN_AVAILABLE_PATH/plugin/plugin-list" --format json return "$?" fi 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 }