The `domains` command previously had this functionality, but is deprecated, and thus we should provide an alternative method of presenting the information.
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")"
|
|
)
|
|
fi
|
|
|
|
global_flags=(
|
|
"--domains-global-enabled: $(fn-domains-global-enabled)"
|
|
"--domains-global-vhosts: $(fn-domains-global-vhosts)"
|
|
)
|
|
|
|
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}"
|
|
[[ "$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>|--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
|
|
}
|
|
|
|
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
|
|
}
|