mirror of
https://github.com/dokku/dokku.git
synced 2025-12-29 00:25:08 +01:00
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.
140 lines
3.6 KiB
Bash
Executable File
140 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/apps/functions"
|
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|
|
|
cmd-apps-report() {
|
|
declare desc="displays the app report for one or more apps"
|
|
local cmd="apps: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-apps-report-single "$app" "$INFO_FLAG" | tee || true
|
|
done
|
|
else
|
|
cmd-apps-report-single "$APP" "$INFO_FLAG"
|
|
fi
|
|
}
|
|
|
|
cmd-apps-report-single() {
|
|
declare APP="$1" INFO_FLAG="$2"
|
|
local APP_DIR="$DOKKU_ROOT/$APP"
|
|
local use_echo;
|
|
if [[ "$INFO_FLAG" == "true" ]]; then
|
|
use_echo=true
|
|
INFO_FLAG=""
|
|
fi
|
|
verify_app_name "$APP"
|
|
local flag_map=(
|
|
"--app-dir: $APP_DIR"
|
|
"--git-sha: $(GIT_DIR="$APP_DIR" git rev-parse --short HEAD 2> /dev/null || false)"
|
|
"--deploy-source: $(: | plugn trigger deploy-source "$APP")"
|
|
"--locked: $(apps_is_locked "$APP")"
|
|
)
|
|
|
|
if [[ -z "$INFO_FLAG" ]]; then
|
|
dokku_log_info2_quiet "$APP app information"
|
|
if (is_deployed "$APP"); then
|
|
for flag in "${flag_map[@]}"; do
|
|
key="$(echo "${flag#--}" | cut -f1 -d' ' | tr - ' ')"
|
|
dokku_log_verbose "$(printf "%-30s %-25s" "${key^}" "${flag#*: }")"
|
|
done
|
|
else
|
|
if [[ "$use_echo" ]]; then
|
|
echo "not deployed"
|
|
else
|
|
dokku_log_fail "not deployed"
|
|
fi
|
|
fi
|
|
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
|
|
}
|
|
|
|
|
|
apps_help_content_func() {
|
|
declare desc="return apps plugin help content"
|
|
cat<<help_content
|
|
apps, [DEPRECATED] Alias for apps:list
|
|
apps:clone <old-app> <new-app>, Clones an app
|
|
apps:create <app>, Create a new app
|
|
apps:destroy <app>, Permanently destroy an app
|
|
apps:list, List your apps
|
|
apps:lock <app>, Creates a '.deploy.lock' file in an application's repo
|
|
apps:rename <old-app> <new-app>, Rename an app
|
|
apps:report [<app>] [<flag>], Display report about an app
|
|
apps:unlock <app>, Removes the '.deploy.lock' file from an application's repo
|
|
help_content
|
|
}
|
|
|
|
apps_help_cmd() {
|
|
if [[ $1 = "apps:help" ]] ; then
|
|
echo -e 'Usage: dokku apps[:COMMAND]'
|
|
echo ''
|
|
echo 'Manage Dokku apps'
|
|
echo ''
|
|
echo 'Example:'
|
|
echo ''
|
|
echo '$ dokku apps:list'
|
|
echo '=====> My Apps'
|
|
echo 'example'
|
|
echo 'example2'
|
|
echo ''
|
|
echo 'Additional commands:'
|
|
apps_help_content_func | sort | column -c2 -t -s,
|
|
elif [[ $(ps -o command= $PPID) == *"--all"* ]]; then
|
|
apps_help_content_func
|
|
else
|
|
cat<<help_desc
|
|
apps, Manage Dokku apps
|
|
help_desc
|
|
fi
|
|
}
|
|
|
|
apps_list_cmd() {
|
|
declare desc="lists all apps"
|
|
local cmd="apps"
|
|
local app
|
|
|
|
dokku_log_info2_quiet "My Apps"
|
|
for app in $(dokku_apps); do
|
|
echo "$app"
|
|
done
|
|
}
|
|
|
|
apps_is_locked() {
|
|
declare desc="check if an app is locked"
|
|
declare APP="$1"
|
|
local LOCKED=false
|
|
|
|
if [[ -f "$DOKKU_ROOT/$APP/.deploy.lock" ]]; then
|
|
LOCKED=true
|
|
fi
|
|
|
|
echo "$LOCKED"
|
|
} |