Files
dokku/plugins/domains/internal-functions
Jose Diaz-Gonzalez 4aac1fd936 feat: add report trigger
This allows users to quickly show the state of any configured application, as well as the state of their server. In doing so, we make it easy for them to provide information necessary for debugging in a single command.
2018-04-07 04:49:21 -04:00

132 lines
3.9 KiB
Bash
Executable File

#!/usr/bin/env bash
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/domains/functions"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
cmd-domains-report() {
declare desc="displays a domains report for one or more apps"
local cmd="domains:report"
local INSTALLED_APPS=$(dokku_apps)
local APP="$2" INFO_FLAG="$3"
if [[ -n "$APP" ]] && [[ "$APP" == --* ]]; then
INFO_FLAG="$APP"
APP=""
fi
if [[ -z "$APP" ]] && [[ -z "$INFO_FLAG" ]]; then
INFO_FLAG="true"
fi
if [[ -z "$APP" ]]; then
for app in $INSTALLED_APPS; do
cmd-domains-report-single "$app" "$INFO_FLAG" | tee || true
done
else
cmd-domains-report-single "$APP" "$INFO_FLAG"
fi
}
cmd-domains-report-single() {
declare APP="$1" INFO_FLAG="$2"
if [[ "$INFO_FLAG" == "true" ]]; then
INFO_FLAG=""
fi
verify_app_name "$APP"
local flag_map=(
"--domains-app-enabled: $(fn-domains-app-enabled "$APP")"
"--domains-app-vhosts: $(fn-domains-app-vhosts "$APP")"
"--domains-global-enabled: $(fn-domains-global-enabled)"
"--domains-global-vhosts: $(fn-domains-global-vhosts)"
)
if [[ -z "$INFO_FLAG" ]]; then
dokku_log_info2_quiet "$APP domains information"
for flag in "${flag_map[@]}"; do
key="$(echo "${flag#--}" | cut -f1 -d' ' | tr - ' ')"
dokku_log_verbose "$(printf "%-30s %-25s" "${key^}" "${flag#*: }")"
done
else
local match=false; local value_exists=false
for flag in "${flag_map[@]}"; do
valid_flags="${valid_flags} $(echo "$flag" | cut -d':' -f1)"
if [[ "$flag" == "${INFO_FLAG}:"* ]]; then
value=${flag#*: }
size="${#value}"
if [[ "$size" -ne 0 ]]; then
echo "$value" && match=true && value_exists=true
else
match=true
fi
fi
done
[[ "$match" == "true" ]] || dokku_log_fail "Invalid flag passed, valid flags:${valid_flags}"
[[ "$value_exists" == "true" ]] || dokku_log_fail "not deployed"
fi
}
domains_help_content_func () {
declare desc="return domains plugin help content"
cat<<help_content
domains [<app>], [DEPRECATED] Alternative for domains:report
domains:add <app> <domain> [<domain> ...], Add domains to app
domains:add-global <domain> [<domain> ...], Add global domain names
domains:clear <app>, Clear all domains for app
domains:disable <app>, Disable VHOST support
domains:enable <app>, Enable VHOST support
domains:remove <app> <domain> [<domain> ...], Remove domains from app
domains:remove-global <domain> [<domain> ...], Remove global domain names
domains:report [<app>] [<flag>], Displays a domains report for one or more apps
domains:set <app> <domain> [<domain> ...], Set domains for app
domains:set-global <domain> [<domain> ...], Set global domain names
help_content
}
domains_help_cmd() {
if [[ $1 = "domains:help" ]] ; then
echo -e 'Usage: dokku domains[:COMMAND]'
echo ''
echo 'Manage vhost domains used by the Dokku proxy.'
echo ''
echo 'Additional commands:'
domains_help_content_func | sort | column -c2 -t -s,
elif [[ $(ps -o command= $PPID) == *"--all"* ]]; then
domains_help_content_func
else
cat<<help_desc
domains, Manage vhost domains used by the Dokku proxy
help_desc
fi
}
fn-domains-app-enabled() {
declare APP="$1"
local DOMAINS_APP_ENABLED=false
if [[ "$(is_app_vhost_enabled "$APP")" == "true" ]]; then
DOMAINS_APP_ENABLED=true
fi
echo "$DOMAINS_APP_ENABLED"
}
fn-domains-app-vhosts() {
declare APP="$1"
local APP_VHOST_FILE="$DOKKU_ROOT/$APP/VHOST"
if [[ -f "$APP_VHOST_FILE" ]]; then
tr '\n' ' ' < "$APP_VHOST_FILE"
fi
}
fn-domains-global-enabled() {
local DOMAINS_GLOBAL_ENABLED=false
if [[ "$(is_global_vhost_enabled)" == "true" ]]; then
DOMAINS_GLOBAL_ENABLED=true
fi
echo "$DOMAINS_GLOBAL_ENABLED"
}
fn-domains-global-vhosts() {
if [[ "$(is_global_vhost_enabled)" == "true" ]]; then
get_global_vhosts | tr '\n' ' '
fi
}