diff --git a/plugins/build-env/pre-build b/plugins/build-env/pre-build index b1c7cd8c8..74e11f861 100755 --- a/plugins/build-env/pre-build +++ b/plugins/build-env/pre-build @@ -10,8 +10,8 @@ APP="$1"; IMAGE="dokku/$APP"; BUILD_ENV="" rm "$DOKKU_ROOT/BUILD_ENV" } -dokku config:get --global CURL_CONNECT_TIMEOUT > /dev/null 2>&1 || dokku config:set --global CURL_CONNECT_TIMEOUT=5 -dokku config:get --global CURL_TIMEOUT > /dev/null 2>&1 || dokku config:set --global CURL_TIMEOUT=30 +config_get --global CURL_CONNECT_TIMEOUT > /dev/null 2>&1 || config_set --global CURL_CONNECT_TIMEOUT=5 +config_get --global CURL_TIMEOUT > /dev/null 2>&1 || config_set --global CURL_TIMEOUT=30 if [[ -n $(config_export global) ]]; then BUILD_ENV+=$'\n' diff --git a/plugins/config/commands b/plugins/config/commands index 3d08f2d51..dcb961f7d 100755 --- a/plugins/config/commands +++ b/plugins/config/commands @@ -27,75 +27,11 @@ case "$1" in ;; config:get) - config_parse_args "$@" - - if [[ -z $3 ]]; then - echo "Usage: dokku config:get APP KEY" - echo "Must specify KEY." - exit 1 - fi - - config_create "$ENV_FILE" - if [[ ! -s $ENV_FILE ]] ; then - exit 0 - fi - - KEY="$3" - - grep -Eo "export ([a-zA-Z_][a-zA-Z0-9_]*=.*)" $ENV_FILE | grep "^export $KEY=" | cut -d"=" -f2- | sed -e "s/^'//" -e "s/'$//" + config_get "$@" ;; config:set) - config_parse_args "$@" - [[ "$2" = "--no-restart" ]] && set -- "${@:1:1}" "${@:3}" - - if [[ -z "${*:3}" ]]; then - echo "Usage: dokku config:set APP KEY1=VALUE1 [KEY2=VALUE2 ...]" - echo "Must specify KEY and VALUE to set." - exit 1 - fi - - config_create "$ENV_FILE" - ENV_ADD="" - ENV_TEMP=$(cat "${ENV_FILE}") - RESTART_APP=false - shift 2 - - for var; do - if [[ $var != *"="* ]]; then - echo "Usage: dokku config:set APP KEY1=VALUE1 [KEY2=VALUE2 ...]" - echo "Must specify KEY and VALUE to set." - exit 1 - fi - done - - for var; do - KEY=$(echo ${var} | cut -d"=" -f1) - VALUE=$(echo ${var} | cut -d"=" -f2-) - - if [[ $KEY =~ [a-zA-Z_][a-zA-Z0-9_]* ]]; then - RESTART_APP=true - ENV_TEMP=$(echo "${ENV_TEMP}" | sed "/^export $KEY=/ d") - ENV_TEMP="${ENV_TEMP} -export $KEY='$VALUE'" - ENV_ADD=$(echo -e "${ENV_ADD}" | sed "/^$KEY=/ d") - ENV_ADD="${ENV_ADD}$ -${var}" - fi - done - ENV_ADD=$(echo "$ENV_ADD" | tail -n +2) #remove first empty line - - if [ $RESTART_APP ]; then - dokku_log_info1 "Setting config vars" - config_styled_hash "$ENV_ADD" " " - - config_write "$ENV_TEMP" - fi - - if [[ "$DOKKU_CONFIG_RESTART" == "true" ]]; then - dokku_log_info1 "Restarting app $APP" - dokku ps:restart $APP - fi + config_set "$@" ;; config:unset) diff --git a/plugins/config/functions b/plugins/config/functions index a71f58b02..d829c3591 100644 --- a/plugins/config/functions +++ b/plugins/config/functions @@ -97,3 +97,77 @@ is_config_export() { done return 1 } + +config_get() { + [[ "$1" == "config:get" ]] || set -- "config:get" "$@" + config_parse_args "$@" + + if [[ -z $3 ]]; then + echo "Usage: dokku config:get APP KEY" + echo "Must specify KEY." + exit 1 + fi + + config_create "$ENV_FILE" + if [[ ! -s $ENV_FILE ]] ; then + exit 0 + fi + + KEY="$3" + + grep -Eo "export ([a-zA-Z_][a-zA-Z0-9_]*=.*)" $ENV_FILE | grep "^export $KEY=" | cut -d"=" -f2- | sed -e "s/^'//" -e "s/'$//" +} + +config_set() { + [[ "$1" == "config:set" ]] || set -- "config:set" "$@" + config_parse_args "$@" + [[ "$2" = "--no-restart" ]] && set -- "${@:1:1}" "${@:3}" + + if [[ -z "${*:3}" ]]; then + echo "Usage: dokku config:set APP KEY1=VALUE1 [KEY2=VALUE2 ...]" + echo "Must specify KEY and VALUE to set." + exit 1 + fi + + config_create "$ENV_FILE" + ENV_ADD="" + ENV_TEMP=$(cat "${ENV_FILE}") + RESTART_APP=false + shift 2 + + for var; do + if [[ $var != *"="* ]]; then + echo "Usage: dokku config:set APP KEY1=VALUE1 [KEY2=VALUE2 ...]" + echo "Must specify KEY and VALUE to set." + exit 1 + fi + done + + for var; do + KEY=$(echo ${var} | cut -d"=" -f1) + VALUE=$(echo ${var} | cut -d"=" -f2-) + + if [[ $KEY =~ [a-zA-Z_][a-zA-Z0-9_]* ]]; then + RESTART_APP=true + ENV_TEMP=$(echo "${ENV_TEMP}" | sed "/^export $KEY=/ d") + ENV_TEMP="${ENV_TEMP} +export $KEY='$VALUE'" + ENV_ADD=$(echo -e "${ENV_ADD}" | sed "/^$KEY=/ d") + ENV_ADD="${ENV_ADD}$ +${var}" + fi + done + ENV_ADD=$(echo "$ENV_ADD" | tail -n +2) #remove first empty line + + if [ $RESTART_APP ]; then + dokku_log_info1 "Setting config vars" + config_styled_hash "$ENV_ADD" " " + + config_write "$ENV_TEMP" + fi + + if [[ "$DOKKU_CONFIG_RESTART" == "true" ]]; then + dokku_log_info1 "Restarting app $APP" + dokku ps:restart $APP + fi +} diff --git a/plugins/nginx-vhosts/bind-external-ip b/plugins/nginx-vhosts/bind-external-ip index 40ba4c4e8..f3988c9ae 100755 --- a/plugins/nginx-vhosts/bind-external-ip +++ b/plugins/nginx-vhosts/bind-external-ip @@ -1,8 +1,9 @@ #!/usr/bin/env bash set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_PATH/config/functions" APP="$1" -NO_VHOST=$(dokku config:get $APP NO_VHOST || true) +NO_VHOST=$(config_get $APP NO_VHOST || true) RE_IPV4="([0-9]{1,3}[\.]){3}[0-9]{1,3}" diff --git a/plugins/nginx-vhosts/post-deploy b/plugins/nginx-vhosts/post-deploy index f2987d070..70b033b6e 100755 --- a/plugins/nginx-vhosts/post-deploy +++ b/plugins/nginx-vhosts/post-deploy @@ -1,10 +1,11 @@ #!/usr/bin/env bash set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x source "$PLUGIN_PATH/common/functions" +source "$PLUGIN_PATH/config/functions" APP="$1" if [[ -f "$DOKKU_ROOT/$APP/IP.web.1" ]] && [[ -f "$DOKKU_ROOT/$APP/PORT.web.1" ]]; then - NO_VHOST=$(dokku config:get $APP NO_VHOST || true) + NO_VHOST=$(config_get $APP NO_VHOST || true) if [[ -n "$NO_VHOST" ]]; then dokku_log_info1 "NO_VHOST config detected"