feat: implement domains:report command
Also deprecate `domains:default` in favor of `domains:report` Refs #2356
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
> New as of 0.3.10
|
||||
|
||||
```
|
||||
domains [<app>|--global] # List domains
|
||||
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
|
||||
@@ -11,6 +10,7 @@ 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
|
||||
```
|
||||
@@ -41,7 +41,7 @@ NEW_SUBDOMAIN=`echo $SUBDOMAIN | rev`
|
||||
echo "$NEW_SUBDOMAIN.$VHOST"
|
||||
```
|
||||
|
||||
If the `nginx-hostname` has no output, the normal hostname algorithm will be executed.
|
||||
If the `nginx-hostname` plugin has no output, the normal hostname algorithm will be executed.
|
||||
|
||||
## Disabling VHOSTS
|
||||
|
||||
@@ -75,6 +75,54 @@ dokku domains:remove myapp example.com
|
||||
dokku domains:set myapp example.com example.org
|
||||
```
|
||||
|
||||
## Displaying domains reports about an app
|
||||
|
||||
> New as of 0.8.1
|
||||
|
||||
You can get a report about the app's domains status using the `domains:report` command:
|
||||
|
||||
```shell
|
||||
dokku domains:report
|
||||
```
|
||||
|
||||
```
|
||||
=====> node-js-app domains information
|
||||
Domains app enabled: true
|
||||
Domains app vhosts: ruby-sample.example.org
|
||||
Domains global enabled: true
|
||||
Domains global vhosts: example.org
|
||||
=====> python-sample domains information
|
||||
Domains app enabled: true
|
||||
Domains app vhosts: ruby-sample.example.org
|
||||
Domains global enabled: true
|
||||
Domains global vhosts: example.org
|
||||
=====> ruby-sample domains information
|
||||
Domains app enabled: true
|
||||
Domains app vhosts: ruby-sample.example.org
|
||||
Domains global enabled: true
|
||||
Domains global vhosts: example.org
|
||||
```
|
||||
|
||||
You can run the command for a specific app also.
|
||||
|
||||
```shell
|
||||
dokku domains:report node-js-app
|
||||
```
|
||||
|
||||
```
|
||||
=====> node-js-app domains information
|
||||
Domains app enabled: true
|
||||
Domains app vhosts: node-js-app.example.org
|
||||
Domains global enabled: true
|
||||
Domains global vhosts: example.org
|
||||
```
|
||||
|
||||
You can pass flags which will output only the value of the specific information you want. For example:
|
||||
|
||||
```shell
|
||||
dokku domains:report node-js-app --domains-app-enabled
|
||||
```
|
||||
|
||||
## Default site
|
||||
|
||||
By default, Dokku will route any received request with an unknown HOST header value to the lexicographically first site in the nginx config stack. If this is not the desired behavior, you may want to add the following configuration to the global nginx configuration.
|
||||
|
||||
@@ -4,7 +4,7 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
domains_help_content_func () {
|
||||
declare desc="return domains plugin help content"
|
||||
cat<<help_content
|
||||
domains [<app>], List domains
|
||||
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
|
||||
@@ -12,6 +12,7 @@ domains_help_content_func () {
|
||||
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
|
||||
|
||||
@@ -8,6 +8,7 @@ domains_main_cmd() {
|
||||
local cmd="domains"
|
||||
local APP="$2"
|
||||
|
||||
dokku_log_warn "Deprecated: Please use domains:report"
|
||||
if [[ "$(is_global_vhost_enabled)" == "true" ]]; then
|
||||
dokku_log_info2_quiet "Global Domain Name"
|
||||
get_global_vhosts
|
||||
|
||||
92
plugins/domains/subcommands/report
Executable file
92
plugins/domains/subcommands/report
Executable file
@@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/domains/functions"
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
domains_report_single_app() {
|
||||
local APP="$1"; local APP_DIR="$DOKKU_ROOT/$APP"; local 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 "$APP domains information"
|
||||
for flag in "${flag_map[@]}"; do
|
||||
key="$(echo "${flag#--}" | cut -f1 -d' ' | tr - ' ')"
|
||||
dokku_log_verbose "$(printf "%-20s %-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
|
||||
if [[ "$match" == "true" ]]; then
|
||||
[[ "$value_exists" == "true" ]] || dokku_log_fail "not deployed"
|
||||
else
|
||||
dokku_log_fail "Invalid flag passed, valid flags:${valid_flags}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
domains_report_cmd() {
|
||||
declare desc="displays a domains report for one or more apps"
|
||||
local cmd="domains:report"
|
||||
local INSTALLED_APPS=$(dokku_apps); local APP
|
||||
|
||||
if [[ -z $2 ]]; then
|
||||
for APP in $INSTALLED_APPS; do
|
||||
domains_report_single_app "$APP" "true"
|
||||
done
|
||||
else
|
||||
domains_report_single_app "$2" "$3"
|
||||
fi
|
||||
}
|
||||
|
||||
domains_report_cmd "$@"
|
||||
Reference in New Issue
Block a user