diff --git a/docs/appendices/0.36.0-migration-guide.md b/docs/appendices/0.36.0-migration-guide.md index 2a79b6668..583fbfa75 100644 --- a/docs/appendices/0.36.0-migration-guide.md +++ b/docs/appendices/0.36.0-migration-guide.md @@ -3,4 +3,5 @@ ## Changes - Process stop timeouts are now configured via the `ps` property `stop-timeout-seconds`. Existing `DOKKU_DOCKER_STOP_TIMEOUT` environment variables will be automatically migrated to the new value. -- Processes now default to a `30` second stop timeout. \ No newline at end of file +- Processes now default to a `30` second stop timeout. +- The `domains:clear` command no longer runs domain setup after clearing the domains. Use `domains:reset` or run `domains:setup` manually to have the same effect. \ No newline at end of file diff --git a/docs/configuration/domains.md b/docs/configuration/domains.md index 71ac8a98f..120157f45 100644 --- a/docs/configuration/domains.md +++ b/docs/configuration/domains.md @@ -13,6 +13,7 @@ domains:enable # Enable VHOST support domains:remove [ ...] # Remove domains from app domains:remove-global [ ...] # Remove global domain names domains:report [|--global] [] # Displays a domains report for one or more apps +domains:reset # Reset app domains to global-configured domains domains:set [ ...] # Set domains for app domains:set-global [ ...] # Set global domain names ``` @@ -75,6 +76,9 @@ dokku domains:remove node-js-app dokku.me # set all custom domains for app dokku domains:set node-js-app dokku.me dokku.org + +# delete all app domains and configure available global domains on it +dokku domains:reset node-js-app ``` ## Displaying domains reports for an app diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index c790eec4e..43bbab731 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -1699,7 +1699,7 @@ curl "http://httpstat.us/200" ### `post-domains-update` - Description: Allows you to run commands once the domain for an app has been updated. It also sends in the command that has been used. This can be "add", "clear" or "remove". The third argument will be the optional list of domains -- Invoked by: `dokku domains:add`, `dokku domains:clear`, `dokku domains:remove`, `dokku domains:set` +- Invoked by: `dokku domains:add`, `dokku domains:clear`, `dokku domains:remove`, `dokku domains:reset`, `dokku domains:set` - Arguments: `$APP` `action name` `domains` - Example: diff --git a/docs/networking/proxy-management.md b/docs/networking/proxy-management.md index 6b1ec7f55..173b2e868 100644 --- a/docs/networking/proxy-management.md +++ b/docs/networking/proxy-management.md @@ -158,6 +158,8 @@ At this time, the following dokku commands are used to interact with a complete - triggers: `pre-enable-vhost` - `domains:remove`: Removes a domain from an app. - triggers: `post-domains-update` +- `domains:reset`: Reset app domains to global-configured domains. + - triggers: `post-domains-update` - `domains:set`: Sets all domains for a given app. - triggers: `post-domains-update` - `proxy:build-config`: Builds - or rebuilds - external proxy configuration. diff --git a/plugins/domains/functions b/plugins/domains/functions index 0798f48f3..cf705a243 100755 --- a/plugins/domains/functions +++ b/plugins/domains/functions @@ -24,7 +24,6 @@ fn-domains-clear-app() { local APP_VHOST_PATH="$DOKKU_ROOT/$APP/VHOST" rm -f "$APP_VHOST_PATH" - domains_setup "$APP" plugn trigger post-domains-update "$APP" "clear" dokku_log_info1 "Cleared domains in $APP" } diff --git a/plugins/domains/help-functions b/plugins/domains/help-functions index 0f66a8734..028c11204 100755 --- a/plugins/domains/help-functions +++ b/plugins/domains/help-functions @@ -36,6 +36,7 @@ fn-help-content() { domains:remove [ ...], Remove domains from app domains:remove-global [ ...], Remove global domain names domains:report [|--global] [], Displays a domains report for one or more apps + domains:reset , Reset app domains to global-configured domains domains:set [ ...], Set domains for app domains:set-global [ ...], Set global domain names help_content diff --git a/plugins/domains/subcommands/clear-global b/plugins/domains/subcommands/clear-global index ff7ae757b..400450255 100755 --- a/plugins/domains/subcommands/clear-global +++ b/plugins/domains/subcommands/clear-global @@ -5,7 +5,7 @@ source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" source "$PLUGIN_AVAILABLE_PATH/domains/functions" cmd-domains-clear-global() { - declare desc="clear global domain names via command line" + declare desc="clear global domain names" declare cmd="domains:clear-global" [[ "$1" == "$cmd" ]] && shift 1 diff --git a/plugins/domains/subcommands/reset b/plugins/domains/subcommands/reset new file mode 100755 index 000000000..a01f95957 --- /dev/null +++ b/plugins/domains/subcommands/reset @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_AVAILABLE_PATH/domains/functions" + +cmd-domains-reset() { + declare desc="reset app domains to global-configured domains" + declare cmd="domains:reset" + [[ "$1" == "$cmd" ]] && shift 1 + declare APP="$1" + + verify_app_name "$APP" + fn-domains-clear "$APP" + domains_setup "$APP" + plugn trigger post-domains-update "$APP" "reset" + dokku_log_info1_quiet "Reset domains for $APP" +} + +cmd-domains-reset "$@" diff --git a/plugins/domains/subcommands/setup b/plugins/domains/subcommands/setup index 6458bf6c4..4d0bb19b3 100755 --- a/plugins/domains/subcommands/setup +++ b/plugins/domains/subcommands/setup @@ -12,6 +12,8 @@ cmd-domains-setup() { verify_app_name "$APP" domains_setup "$APP" + plugn trigger post-domains-update "$APP" "reset" + dokku_log_info1_quiet "Setup domains for $APP" } cmd-domains-setup "$@" diff --git a/tests/unit/domains.bats b/tests/unit/domains.bats index 24f0571d5..362131020 100644 --- a/tests/unit/domains.bats +++ b/tests/unit/domains.bats @@ -188,7 +188,7 @@ teardown() { assert_output_contains a--domain.with--hyphens } -@test "(domains) domains:clear" { +@test "(domains) domains:reset" { run /bin/bash -c "dokku domains:add $TEST_APP test.app.${DOKKU_DOMAIN}" echo "output: $output" echo "status: $status" @@ -199,7 +199,7 @@ teardown() { echo "status: $status" assert_success - run /bin/bash -c "dokku domains:clear $TEST_APP" + run /bin/bash -c "dokku domains:reset $TEST_APP" echo "output: $output" echo "status: $status" assert_success @@ -347,8 +347,8 @@ teardown() { echo "status: $status" assert_success - # run domains:clear in order to invoke default vhost creation - run /bin/bash -c "dokku --quiet domains:clear test.dokku.test" + # run domains:reset in order to invoke default vhost creation + run /bin/bash -c "dokku --quiet domains:reset test.dokku.test" echo "output: $output" echo "status: $status" assert_success