This standardization makes it somewhat easier to read stacktraces as the command names are all uniform, so it will be slightly easier to scan trace output.
152 lines
4.3 KiB
Bash
Executable File
152 lines
4.3 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 [[ "$APP" == "--global" ]]; then
|
|
cmd-domains-report-single "$APP" "$INFO_FLAG"
|
|
return
|
|
fi
|
|
|
|
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
|
|
local flag_map=() app_flags=() global_flags=()
|
|
|
|
if [[ "$APP" != "--global" ]]; then
|
|
verify_app_name "$APP"
|
|
app_flags=(
|
|
"--domains-app-enabled: $(fn-domains-app-enabled "$APP")"
|
|
"--domains-app-vhosts: $(fn-domains-app-vhosts "$APP" | awk '{$1=$1};1')"
|
|
)
|
|
fi
|
|
|
|
global_flags=(
|
|
"--domains-global-enabled: $(fn-domains-global-enabled)"
|
|
"--domains-global-vhosts: $(fn-domains-global-vhosts | awk '{$1=$1};1')"
|
|
)
|
|
|
|
flag_map=("${app_flags[@]}" "${global_flags[@]}")
|
|
|
|
if [[ -z "$INFO_FLAG" ]]; then
|
|
if [[ "$APP" == "--global" ]]; then
|
|
dokku_log_info2_quiet "Global domains information"
|
|
else
|
|
dokku_log_info2_quiet "$APP domains information"
|
|
fi
|
|
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}"
|
|
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:clear-global, Clear global domain names
|
|
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>|--global] [<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
|
|
}
|
|
|
|
cmd-domains-help() {
|
|
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
|
|
}
|