feat: accept --global on :report subcommands

Every `:report` subcommand now recognizes `--global` as a scope selector that limits the report to globally-configured properties, including in JSON form via `--global --format json`. Previously this combination was rejected because `--global` was treated as an info flag, conflicting with `--format`. The shared `common.ParseReportArgs` helper now returns a `ReportArgs` struct exposing the parsed scope; each Go and bash report selects a global-only flag map when scope is global, and skips per-app verification.
This commit is contained in:
Jose Diaz-Gonzalez
2026-04-29 04:47:15 -04:00
parent ec70e10c5d
commit 8282981361
61 changed files with 1379 additions and 518 deletions

View File

@@ -12,6 +12,31 @@ teardown() {
destroy_app
}
@test "(builder-dockerfile:report) --global --format json" {
run /bin/bash -c "dokku builder-dockerfile:report --global --format json | jq -e ."
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku builder-dockerfile:report --global --format json | jq -r '.\"global-dockerfile-path\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "Dockerfile"
run /bin/bash -c "dokku builder-dockerfile:report --global --format json | jq -r 'has(\"dockerfile-path\")'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "false"
run /bin/bash -c "dokku builder-dockerfile:report --global"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "global builder-dockerfile information"
}
@test "(builder-dockerfile:set)" {
run deploy_app dockerfile
echo "output: $output"

View File

@@ -175,6 +175,40 @@ teardown() {
assert_line 0 "herokuish"
}
@test "(builder:report) --global --format json" {
run /bin/bash -c "dokku builder:set --global selected dockerfile"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku builder:report --global --format json | jq -e ."
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku builder:report --global --format json | jq -r '.\"builder-global-selected\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "dockerfile"
run /bin/bash -c "dokku builder:report --global --format json | jq -r 'has(\"builder-selected\")'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "false"
run /bin/bash -c "dokku builder:report --global"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku builder:set --global selected"
echo "output: $output"
echo "status: $status"
assert_success
}
@test "(builder:set)" {
run deploy_app python
echo "output: $output"

View File

@@ -41,6 +41,20 @@ teardown() {
assert_output "$help_output"
}
@test "(certs:report) --global --format json" {
run /bin/bash -c "dokku certs:report --global --format json | jq -e ."
echo "output: $output"
echo "status: $status"
assert_success
assert_output "{}"
run /bin/bash -c "dokku certs:report --global"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "global ssl information"
}
@test "(certs) certs:add" {
run /bin/bash -c "dokku certs:add $TEST_APP $BATS_TMPDIR/tls/server.crt $BATS_TMPDIR/tls/server.key"
echo "output: $output"

View File

@@ -16,6 +16,41 @@ teardown() {
global_teardown
}
@test "(checks:report) --global --format json" {
run /bin/bash -c "dokku checks:set --global wait-to-retire 90"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku checks:report --global --format json | jq -e ."
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku checks:report --global --format json | jq -r '.\"global-wait-to-retire\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "90"
run /bin/bash -c "dokku checks:report --global --format json | jq -r 'has(\"wait-to-retire\")'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "false"
run /bin/bash -c "dokku checks:report --global"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "global checks information"
run /bin/bash -c "dokku checks:set --global wait-to-retire"
echo "output: $output"
echo "status: $status"
assert_success
}
@test "(checks) checks:help" {
run /bin/bash -c "dokku checks"
echo "output: $output"

View File

@@ -102,6 +102,28 @@ teardown() {
assert_output_contains "python3 task.py daily"
}
@test "(cron:report) --global --format json" {
run /bin/bash -c "dokku cron:set --global mailto admin@example.com"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku cron:report --global --format json | jq -e ."
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku cron:report --global"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku cron:set --global mailto"
echo "output: $output"
echo "status: $status"
assert_success
}
@test "(cron) create [multiple]" {
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP template_cron_file_valid_multiple
echo "output: $output"

View File

@@ -28,6 +28,25 @@ teardown() {
assert_output "$help_output"
}
@test "(domains:report) --global --format json" {
run /bin/bash -c "dokku domains:report --global --format json | jq -e ."
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku domains:report --global --format json | jq -r 'keys[]' | grep -v 'global-' | wc -l"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "0"
run /bin/bash -c "dokku domains:report --global"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Global domains information"
}
@test "(domains) domains" {
run /bin/bash -c "dokku domains:report $TEST_APP 2>/dev/null | grep ${TEST_APP}.${DOKKU_DOMAIN}"
echo "output: $output"

View File

@@ -831,3 +831,31 @@ teardown() {
assert_failure
assert_output_contains "--format flag cannot be specified when specifying an info flag"
}
@test "(git:report) --global" {
run /bin/bash -c "dokku git:report --global"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "global git information"
assert_output_contains "Global deploy branch"
}
@test "(git:report) --global --format json" {
run /bin/bash -c "dokku git:report --global --format json | jq -e ."
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku git:report --global --format json | jq -r '.\"global-deploy-branch\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "master"
run /bin/bash -c "dokku git:report --global --format json | jq -r 'has(\"deploy-branch\")'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "false"
}

View File

@@ -31,6 +31,41 @@ teardown() {
assert_output "$help_output"
}
@test "(network:report) --global --format json" {
run /bin/bash -c "dokku network:set --global tld dokku.test"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku network:report --global --format json | jq -e ."
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku network:report --global --format json | jq -r '.\"network-global-tld\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "dokku.test"
run /bin/bash -c "dokku network:report --global --format json | jq -r 'has(\"network-tld\")'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "false"
run /bin/bash -c "dokku network:report --global"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "--global"
run /bin/bash -c "dokku network:set --global tld"
echo "output: $output"
echo "status: $status"
assert_success
}
@test "(network) network:set bind-all-interfaces" {
run deploy_app
echo "output: $output"

View File

@@ -62,6 +62,25 @@ teardown() {
assert_output_contains "--format flag cannot be specified when specifying an info flag"
}
@test "(nginx:report) --global --format json" {
run /bin/bash -c "dokku nginx:report --global --format json | jq -e ."
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku nginx:report --global --format json | jq -r 'keys[]' | grep -v 'global-' | wc -l"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "0"
run /bin/bash -c "dokku nginx:report --global"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "global nginx information"
}
@test "(nginx-vhosts) proxy:build-config (domains:disable/enable)" {
run deploy_app
echo "output: $output"