From 67311264d76a87802e3b00e45df6ab4eb20dcae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Justen=20=28=40turicas=29?= Date: Sun, 5 Jan 2025 14:28:31 -0300 Subject: [PATCH] Implement domains:reset --- docs/configuration/domains.md | 4 ++++ docs/development/plugin-triggers.md | 2 +- docs/networking/proxy-management.md | 2 ++ plugins/domains/help-functions | 1 + plugins/domains/subcommands/reset | 22 ++++++++++++++++++++++ tests/unit/domains.bats | 4 ++-- 6 files changed, 32 insertions(+), 3 deletions(-) create mode 100755 plugins/domains/subcommands/reset diff --git a/docs/configuration/domains.md b/docs/configuration/domains.md index 44a7627f8..851dd2894 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 cce2b0835..e10851d7f 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/help-functions b/plugins/domains/help-functions index 72b8d9474..5a43671da 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/reset b/plugins/domains/subcommands/reset new file mode 100755 index 000000000..2136ef5a9 --- /dev/null +++ b/plugins/domains/subcommands/reset @@ -0,0 +1,22 @@ +#!/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" + local APP_VHOST_PATH="$DOKKU_ROOT/$APP/VHOST" + + rm -f "$APP_VHOST_PATH" + domains_setup "$APP" + plugn trigger post-domains-update "$APP" "reset" + dokku_log_info1 "Reset domains for $APP" +} + +cmd-domains-reset "$@" diff --git a/tests/unit/domains.bats b/tests/unit/domains.bats index 24f0571d5..b8fa384eb 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