diff --git a/dokku b/dokku index 56e06f169fe..c8232cb1546 100755 --- a/dokku +++ b/dokku @@ -208,10 +208,10 @@ case "$1" in echo "Options:" cat< [-t] Show the last logs for an application (-t follows) - run Run a command in the environment of an application - url Show the first URL for an application (compatibility) - urls Show all URLs for an application - version Print dokku's version + ls Pretty listing of deployed applications and containers + logs [-t] Show the last logs for an application (-t follows) + run Run a command in the environment of an application + url Show the first URL for an application (compatibility) + urls Show all URLs for an application + version Print dokku's version EOF ;; diff --git a/plugins/20_events/commands b/plugins/20_events/commands index 62f0ea47594..ad96119e547 100755 --- a/plugins/20_events/commands +++ b/plugins/20_events/commands @@ -40,10 +40,10 @@ case "$1" in help | events:help) cat && cat< Create a new app - apps:destroy Permanently destroy an app + apps List your apps + apps:create Create a new app + apps:destroy Permanently destroy an app EOF ;; diff --git a/plugins/backup/commands b/plugins/backup/commands index 3eacdde2a04..8d44e14380c 100755 --- a/plugins/backup/commands +++ b/plugins/backup/commands @@ -87,8 +87,8 @@ case "$1" in help | backup:help) cat && cat< $ENV_FILE_TEMP if ! cmp -s $ENV_FILE $ENV_FILE_TEMP; then cp -f $ENV_FILE_TEMP $ENV_FILE @@ -46,14 +46,43 @@ config_write() { rm -f $ENV_FILE_TEMP } +parse_config_args() { + case "$2" in + --global) + ENV_FILE="$DOKKU_ROOT/ENV" + DOKKU_CONFIG_TYPE="global" + DOKKU_CONFIG_RESTART=false + ;; + --no-restart) + APP="$3" + ENV_FILE="$DOKKU_ROOT/$APP/ENV" + DOKKU_CONFIG_RESTART=false + DOKKU_CONFIG_TYPE="app" + set -- "${@:1:1}" "${@:3}" + esac + + APP=${APP:="$2"} + ENV_FILE=${ENV_FILE:="$DOKKU_ROOT/$APP/ENV"} + DOKKU_CONFIG_TYPE=${DOKKU_CONFIG_TYPE:="app"} + DOKKU_CONFIG_RESTART=${DOKKU_CONFIG_RESTART:=true} + + if [[ "$DOKKU_CONFIG_TYPE" = "app" ]]; then + if [[ -z $APP ]]; then + echo "Please specify an app to run the command on" >&2 && exit 1 + else + verify_app_name "$2" + fi + fi + export APP ENV_FILE DOKKU_CONFIG_TYPE DOKKU_CONFIG_RESTART +} + case "$1" in config) - [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 - verify_app_name "$2" - APP="$2" - + parse_config_args "$@" config_create - [[ ! -s $ENV_FILE ]] && echo "$APP has no config vars" && exit 1 + + [[ "$APP" ]] && DOKKU_CONFIG_TYPE=$APP + [[ ! -s $ENV_FILE ]] && echo "no config vars for $DOKKU_CONFIG_TYPE" && exit 1 VARS=$(grep -Eo "export ([a-zA-Z_][a-zA-Z0-9_]*=.*)" $ENV_FILE | cut -d" " -f2-) @@ -64,14 +93,13 @@ case "$1" in fi done - dokku_log_info2_quiet "$APP config vars" + + dokku_log_info2_quiet "$DOKKU_CONFIG_TYPE config vars" config_styled_hash "$VARS" ;; config:get) - [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 - verify_app_name "$2" - APP="$2" + parse_config_args "$@" if [[ -z $3 ]]; then echo "Usage: dokku config:get APP KEY" @@ -90,26 +118,8 @@ case "$1" in ;; config:set) - [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 - verify_app_name "$2" - APP="$2" - - 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 - - shift 2 - dokku config:set-norestart $APP "$@" - dokku_log_info1 "Restarting app $APP" - dokku ps:restart $APP - ;; - - config:set-norestart) - [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 - verify_app_name "$2" - APP="$2" + parse_config_args "$@" + [[ "$2" = "--no-restart" ]] && set -- "${@:1:1}" "${@:3}" if [[ -z "${*:3}" ]]; then echo "Usage: dokku config:set APP KEY1=VALUE1 [KEY2=VALUE2 ...]" @@ -153,29 +163,16 @@ ${var}" config_write "$ENV_TEMP" fi - ;; - config:unset) - [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 - verify_app_name "$2" - APP="$2" - - if [[ -z $3 ]]; then - echo "Usage: dokku config:unset APP KEY1 [KEY2 ...]" - echo "Must specify KEY to unset." - exit 1 + if [[ "$DOKKU_CONFIG_RESTART" == "true" ]]; then + dokku_log_info1 "Restarting app $APP" + dokku ps:restart $APP fi + ;; - shift 2 - dokku config:unset-norestart $APP "$@" - dokku_log_info1 "Restarting app $APP" - dokku ps:restart $APP - ;; - - config:unset-norestart) - [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 - verify_app_name "$2" - APP="$2" + config:unset) + parse_config_args "$@" + [[ "$2" = "--no-restart" ]] && set -- "${@:1:1}" "${@:3}" if [[ -z $3 ]]; then echo "Usage: dokku config:unset APP KEY1 [KEY2 ...]" @@ -193,14 +190,31 @@ ${var}" config_write "$ENV_TEMP" done + + if [[ "$DOKKU_CONFIG_RESTART" == "true" ]]; then + dokku_log_info1 "Restarting app $APP" + dokku ps:restart $APP + fi + ;; + + config:set-norestart) + dokku_log_info2 "$1 is deprecated as of v0.3.22" + shift 1 + dokku config:set --no-restart "$@" + ;; + + config:unset-norestart) + dokku_log_info2 "$1 is deprecated as of v0.3.22" + shift 1 + dokku config:unset --no-restart "$@" ;; help | config:help) cat && cat< Display the config vars for an app - config:get KEY Display a config value for an app - config:set KEY1=VALUE1 [KEY2=VALUE2 ...] Set one or more config vars - config:unset KEY1 [KEY2 ...] Unset one or more config vars + config (|--global) Display all global or app-specific config vars + config:get (|--global) KEY Display a global or app-specific config value + config:set (|--global) KEY1=VALUE1 [KEY2=VALUE2 ...] Set one or more config vars + config:unset (|--global) KEY1 [KEY2 ...] Unset one or more config vars EOF ;; diff --git a/plugins/docker-options/commands b/plugins/docker-options/commands index d3eb5a9ebd8..377fcfd5d74 100755 --- a/plugins/docker-options/commands +++ b/plugins/docker-options/commands @@ -141,10 +141,10 @@ case "$1" in # Display usage help help) cat && cat< Display apps docker options for all phases - docker-options Display apps docker options for phase (comma seperated phase list) - docker-options:add OPTION Add docker option to app for phase (comma seperated phase list) - docker-options:remove OPTION Remove docker option from app for phase (comma seperated phase list) + docker-options Display apps docker options for all phases + docker-options Display apps docker options for phase (comma seperated phase list) + docker-options:add OPTION Add docker option to app for phase (comma seperated phase list) + docker-options:remove OPTION Remove docker option from app for phase (comma seperated phase list) EOF ;; diff --git a/plugins/domains/commands b/plugins/domains/commands index 5de0f426df7..4b2297bdfbc 100755 --- a/plugins/domains/commands +++ b/plugins/domains/commands @@ -133,10 +133,10 @@ case "$1" in help | domains:help) cat && cat< List custom domains for app - domains:add DOMAIN Add a custom domain to app - domains:clear Clear all custom domains for app - domains:remove DOMAIN Remove a custom domain from app + domains List custom domains for app + domains:add DOMAIN Add a custom domain to app + domains:clear Clear all custom domains for app + domains:remove DOMAIN Remove a custom domain from app EOF ;; diff --git a/plugins/nginx-vhosts/commands b/plugins/nginx-vhosts/commands index 126c096cdbc..abb9a94de92 100755 --- a/plugins/nginx-vhosts/commands +++ b/plugins/nginx-vhosts/commands @@ -167,8 +167,8 @@ EOF help | nginx:help) cat && cat< Imports a tarball from stdin; should contain server.crt and server.key - nginx:build-config (Re)builds nginx config for given app + nginx:import-ssl Imports a tarball from stdin; should contain server.crt and server.key + nginx:build-config (Re)builds nginx config for given app EOF ;; diff --git a/plugins/ps/commands b/plugins/ps/commands index 92e28d1cc4b..f5b82464345 100755 --- a/plugins/ps/commands +++ b/plugins/ps/commands @@ -105,14 +105,14 @@ case "$1" in help | ps:help) cat && cat< List processes running in app container(s) - ps:scale = [=] Set how many processes of a given process to run - ps:start Start app container(s) - ps:stop Stop app container(s) - ps:rebuild Rebuild an app - ps:rebuildall Rebuild all apps - ps:restart Restart app container(s) - ps:restartall Restart all deployed app containers + ps List processes running in app container(s) + ps:scale = [=] Set how many processes of a given process to run + ps:start Start app container(s) + ps:stop Stop app container(s) + ps:rebuild Rebuild an app + ps:rebuildall Rebuild all apps + ps:restart Restart app container(s) + ps:restartall Restart all deployed app containers EOF ;; diff --git a/plugins/shell/commands b/plugins/shell/commands index c6dca6ffe5d..3b1d6d60beb 100755 --- a/plugins/shell/commands +++ b/plugins/shell/commands @@ -48,7 +48,7 @@ case "$1" in help | shell:help) cat && cat< $DOKKU_ROOT/ENV" create_app } teardown() { destroy_app - rm -f "$DOKKU_ROOT/ENV" + [[ -f $DOKKU_ROOT/ENV.bak ]] && mv -f $DOKKU_ROOT/ENV.bak $DOKKU_ROOT/ENV +} + +@test "(config) config:set --global" { + run ssh dokku@dokku.me config:set --global test_var=true test_var2=\"hello world\" + echo "output: "$output + echo "status: "$status + assert_success +} + +@test "(config) config:get --global" { + run ssh dokku@dokku.me config:set --global test_var=true test_var2=\"hello world\" test_var3=\"with\\nnewline\" + echo "output: "$output + echo "status: "$status + assert_success + run dokku config:get --global test_var2 + echo "output: "$output + echo "status: "$status + assert_output 'hello world' + run dokku config:get --global test_var3 + echo "output: "$output + echo "status: "$status + assert_output 'with\nnewline' +} + +@test "(config) config:unset --global" { + run ssh dokku@dokku.me config:set --global test_var=true test_var2=\"hello world\" + echo "output: "$output + echo "status: "$status + assert_success + run dokku config:get --global test_var + echo "output: "$output + echo "status: "$status + assert_success + run dokku config:unset --global test_var + echo "output: "$output + echo "status: "$status + assert_success + run dokku config:get --global test_var + echo "output: "$output + echo "status: "$status + assert_output "" } @test "(config) config:set" {