refactor: use a single method for running the ps:*all commands
This reduces the duplication at the cost of slightly more complexity.
This commit is contained in:
@@ -118,6 +118,13 @@ set_scale() {
|
||||
done
|
||||
}
|
||||
|
||||
ps_restore() {
|
||||
declare desc="restores app"
|
||||
local APP="$1"
|
||||
|
||||
ps_start "$APP"
|
||||
}
|
||||
|
||||
ps_start() {
|
||||
declare desc="starts app"
|
||||
local APP="$1"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/docker-options/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
@@ -117,3 +118,53 @@ cmd-ps-report-single() {
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
fn-ps-parallel-cmd() {
|
||||
declare desc="Run a ps command against all apps"
|
||||
declare CMD="$1"
|
||||
local GNU_PARALLEL has_apps=false
|
||||
|
||||
for APP in $(dokku_apps); do
|
||||
has_apps=true
|
||||
break
|
||||
done
|
||||
|
||||
if [[ "$has_apps" == "false" ]]; then
|
||||
dokku_log_info1 "No apps detected"
|
||||
return
|
||||
fi
|
||||
|
||||
if which parallel >/dev/null 2>&1; then
|
||||
dokku_log_info1 "Running 'dokku ps:${CMD}' in parallel"
|
||||
GNU_PARALLEL=$(parallel -V 2>&1 | grep GNU || true)
|
||||
if [[ -z "$GNU_PARALLEL" ]]; then
|
||||
# shellcheck disable=SC2046
|
||||
parallel -i bash -c "dokku ps:${CMD} {}" -- $(dokku_apps)
|
||||
else
|
||||
# shellcheck disable=SC2046
|
||||
dokku_apps | parallel "dokku ps:${CMD} {}"
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
dokku_log_info1 "Running 'dokku ps:${CMD}' in serially"
|
||||
for APP in $(dokku_apps); do
|
||||
if ! (is_deployed "$APP"); then
|
||||
dokku_log_warn "App $APP has not been deployed"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ "$CMD" == "restore" ]]; then
|
||||
local DOKKU_APP_RESTORE=$(config_get "$APP" DOKKU_APP_RESTORE || true)
|
||||
if [[ "$DOKKU_APP_RESTORE" == 0 ]]; then
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
dokku_log_verbose "Running 'dokku ps:${CMD} $APP' ..."
|
||||
if ps_${CMD} "$APP"; then
|
||||
continue
|
||||
fi
|
||||
dokku_log_warn "dokku ps:${CMD} $APP failed"
|
||||
done
|
||||
}
|
||||
|
||||
@@ -2,38 +2,13 @@
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/internal-functions"
|
||||
|
||||
ps_rebuildall_cmd() {
|
||||
declare desc="rebuilds all apps from source"
|
||||
local cmd="ps:rebuildall"
|
||||
local GNU_PARALLEL
|
||||
|
||||
if which parallel >/dev/null 2>&1; then
|
||||
dokku_log_info1 "Rebuilding in parallel"
|
||||
GNU_PARALLEL=$(parallel -V 2>&1 | grep GNU || true)
|
||||
if [[ -z "$GNU_PARALLEL" ]]; then
|
||||
# shellcheck disable=SC2046
|
||||
parallel -i bash -c "dokku ps:rebuild {}" -- $(dokku_apps)
|
||||
else
|
||||
dokku_apps | parallel 'dokku ps:rebuild {}'
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
for app in $(dokku_apps); do
|
||||
if ! (is_deployed "$app"); then
|
||||
dokku_log_warn "App $app has not been deployed"
|
||||
continue
|
||||
fi
|
||||
|
||||
dokku_log_verbose "Rebuilding app $app ..."
|
||||
if ps_rebuild "$app"; then
|
||||
continue
|
||||
fi
|
||||
dokku_log_warn "dokku ps:rebuild ${app} failed"
|
||||
done
|
||||
fn-ps-parallel-cmd "rebuild"
|
||||
}
|
||||
|
||||
ps_rebuildall_cmd "$@"
|
||||
|
||||
@@ -2,38 +2,13 @@
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/internal-functions"
|
||||
|
||||
ps_restartall_cmd() {
|
||||
declare desc="restarts all apps via command line"
|
||||
local cmd="ps:restartall"
|
||||
local GNU_PARALLEL
|
||||
|
||||
if which parallel >/dev/null 2>&1; then
|
||||
dokku_log_info1 "Restarting in parallel"
|
||||
GNU_PARALLEL=$(parallel -V 2>&1 | grep GNU || true)
|
||||
if [[ -z "$GNU_PARALLEL" ]]; then
|
||||
# shellcheck disable=SC2046
|
||||
parallel -i bash -c "dokku ps:restart {}" -- $(dokku_apps)
|
||||
else
|
||||
dokku_apps | parallel 'dokku ps:restart {}'
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
for app in $(dokku_apps); do
|
||||
if ! (is_deployed "$app"); then
|
||||
dokku_log_warn "App $app has not been deployed"
|
||||
continue
|
||||
fi
|
||||
|
||||
dokku_log_verbose "Restarting app $app ..."
|
||||
if ps_restart "$app"; then
|
||||
continue
|
||||
fi
|
||||
dokku_log_warn "dokku ps:restart ${app} failed"
|
||||
done
|
||||
fn-ps-parallel-cmd "restart"
|
||||
}
|
||||
|
||||
ps_restartall_cmd "$@"
|
||||
|
||||
@@ -4,6 +4,7 @@ set -eo pipefail
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/internal-functions"
|
||||
|
||||
ps_restore_cmd() {
|
||||
declare desc="starts all apps with DOKKU_APP_RESTORE not set to 0 via command line"
|
||||
@@ -12,7 +13,7 @@ ps_restore_cmd() {
|
||||
local DOKKU_SCHEDULER
|
||||
|
||||
DOKKU_SCHEDULER=$(get_app_scheduler "$APP")
|
||||
plugn trigger pre-restore "$DOKKU_SCHEDULER"
|
||||
plugn trigger pre-restore "$DOKKU_SCHEDULER" "$APP"
|
||||
|
||||
if [[ -n "$APP" ]]; then
|
||||
if ! (is_deployed "$APP"); then
|
||||
@@ -22,43 +23,11 @@ ps_restore_cmd() {
|
||||
|
||||
DOKKU_APP_RESTORE="$(config_get "$APP" DOKKU_APP_RESTORE || true)"
|
||||
if [[ $DOKKU_APP_RESTORE != 0 ]]; then
|
||||
ps_start "$APP" || dokku_log_warn "dokku ps:restore ${APP} failed"
|
||||
ps_restore "$APP" || dokku_log_warn "dokku ps:restore ${APP} failed"
|
||||
fi
|
||||
else
|
||||
ps_restore_all
|
||||
fn-ps-parallel-cmd "restore"
|
||||
fi
|
||||
}
|
||||
|
||||
ps_restore_all() {
|
||||
local GNU_PARALLEL
|
||||
|
||||
if which parallel >/dev/null 2>&1; then
|
||||
dokku_log_info1 "Restarting in parallel"
|
||||
GNU_PARALLEL=$(parallel -V 2>&1 | grep GNU || true)
|
||||
if [[ -z "$GNU_PARALLEL" ]]; then
|
||||
# shellcheck disable=SC2046
|
||||
parallel -i bash -c "dokku ps:restore {}" -- $(dokku_apps)
|
||||
else
|
||||
dokku_apps | parallel 'dokku ps:restore {}'
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
for app in $(dokku_apps); do
|
||||
if ! (is_deployed "$app"); then
|
||||
dokku_log_warn "App $app has not been deployed"
|
||||
continue
|
||||
fi
|
||||
|
||||
local DOKKU_APP_RESTORE=$(config_get "$app" DOKKU_APP_RESTORE || true)
|
||||
if [[ $DOKKU_APP_RESTORE != 0 ]]; then
|
||||
dokku_log_verbose "Restoring app $app ..."
|
||||
if ps_start "$app"; then
|
||||
continue
|
||||
fi
|
||||
dokku_log_warn "dokku ps:restore ${app} failed"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
ps_restore_cmd "$@"
|
||||
|
||||
@@ -2,38 +2,13 @@
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/internal-functions"
|
||||
|
||||
ps_startall_cmd() {
|
||||
declare desc="starts all apps via command line"
|
||||
local cmd="ps:startall"
|
||||
local GNU_PARALLEL
|
||||
|
||||
if which parallel >/dev/null 2>&1; then
|
||||
dokku_log_info1 "Starting in parallel"
|
||||
GNU_PARALLEL=$(parallel -V 2>&1 | grep GNU || true)
|
||||
if [[ -z "$GNU_PARALLEL" ]]; then
|
||||
# shellcheck disable=SC2046
|
||||
parallel -i bash -c "dokku ps:start {}" -- $(dokku_apps)
|
||||
else
|
||||
dokku_apps | parallel 'dokku ps:start {}'
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
for app in $(dokku_apps); do
|
||||
if ! (is_deployed "$app"); then
|
||||
dokku_log_warn "App $app has not been deployed"
|
||||
continue
|
||||
fi
|
||||
|
||||
dokku_log_verbose "Starting app $app ..."
|
||||
if ps_start "$app"; then
|
||||
continue
|
||||
fi
|
||||
dokku_log_warn "dokku ps:start ${app} failed"
|
||||
done
|
||||
fn-ps-parallel-cmd "start"
|
||||
}
|
||||
|
||||
ps_startall_cmd "$@"
|
||||
|
||||
@@ -2,38 +2,13 @@
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/internal-functions"
|
||||
|
||||
ps_stopall_cmd() {
|
||||
declare desc="stops all apps via command line"
|
||||
local cmd="ps:stopall"
|
||||
local GNU_PARALLEL
|
||||
|
||||
if which parallel >/dev/null 2>&1; then
|
||||
dokku_log_info1 "Stopping in parallel"
|
||||
GNU_PARALLEL=$(parallel -V 2>&1 | grep GNU || true)
|
||||
if [[ -z "$GNU_PARALLEL" ]]; then
|
||||
# shellcheck disable=SC2046
|
||||
parallel -i bash -c "dokku ps:stop {}" -- $(dokku_apps)
|
||||
else
|
||||
dokku_apps | parallel 'dokku ps:stop {}'
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
for app in $(dokku_apps); do
|
||||
if ! (is_deployed "$app"); then
|
||||
dokku_log_warn "App $app has not been deployed"
|
||||
continue
|
||||
fi
|
||||
|
||||
dokku_log_verbose "Stopping app $app ..."
|
||||
if ps_stop "$app"; then
|
||||
continue
|
||||
fi
|
||||
dokku_log_warn "dokku ps:stop ${app} failed"
|
||||
done
|
||||
fn-ps-parallel-cmd "stop"
|
||||
}
|
||||
|
||||
ps_stopall_cmd "$@"
|
||||
|
||||
Reference in New Issue
Block a user