diff --git a/plugins/ps/subcommands/rebuildall b/plugins/ps/subcommands/rebuildall index 31809971c..61409e793 100755 --- a/plugins/ps/subcommands/rebuildall +++ b/plugins/ps/subcommands/rebuildall @@ -1,13 +1,37 @@ #!/usr/bin/env bash 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" 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 - (is_deployed "$app") && ps_rebuild "$app" + 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 } diff --git a/plugins/ps/subcommands/restartall b/plugins/ps/subcommands/restartall index bfdeed29a..7f6e8aee2 100755 --- a/plugins/ps/subcommands/restartall +++ b/plugins/ps/subcommands/restartall @@ -1,13 +1,37 @@ #!/usr/bin/env bash 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" 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 - ps_restart "$app" + 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 }