This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 5b4e95065e Improve docker-compose tests stability (#34254)
5b4e95065e is described below
commit 5b4e95065ec860b6ea7f398fabf36ef7492b0970
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun Sep 10 23:10:19 2023 +0200
Improve docker-compose tests stability (#34254)
The docker-compose tests are failing occassionally and part of it
is that we were manually waiting and querying for the compose
to be ready. Since we moved to docker compose v2 only we can now
remove the conditional docker-compose v1 code and use `--wait`
and `--wait-timetout` built-in functionality and increase the
timeout a bit. This should be helpful to avoid a race condition
where the docker components are started but not healthy yet, the
flag `--wait` waits not only for the processes to start but also
for the health checks.
Also increased the timeout of waiting for dags to be in
terminal state.
This should help with stability of the test.
---
.../airflow_breeze/commands/testing_commands.py | 10 --
.../commands/testing_commands_config.py | 1 -
dev/breeze/src/airflow_breeze/utils/run_tests.py | 2 -
docker_tests/test_docker_compose_quick_start.py | 69 +++++--------
images/breeze/output-commands-hash.txt | 4 +-
images/breeze/output-commands.svg | 108 ++++++++++-----------
.../breeze/output_testing_docker-compose-tests.svg | 30 +++---
7 files changed, 90 insertions(+), 134 deletions(-)
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index c7c018a0da..ee3b445cb3 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -97,14 +97,6 @@ def group_for_testing():
envvar="SKIP_DOCKER_COMPOSE_DELETION",
is_flag=True,
)
[email protected](
- "--wait-for-containers-timeout",
- help="Time to wait (in seconds) for all containers to start",
- envvar="WAIT_FOR_CONTAINERS_TIMEOUT",
- show_default=True,
- type=IntRange(0, 600),
- default=300,
-)
@option_github_repository
@option_verbose
@option_dry_run
@@ -114,7 +106,6 @@ def docker_compose_tests(
image_name: str,
image_tag: str | None,
skip_docker_compose_deletion: bool,
- wait_for_containers_timeout: int,
github_repository: str,
extra_pytest_args: tuple,
):
@@ -130,7 +121,6 @@ def docker_compose_tests(
image_name=image_name,
extra_pytest_args=extra_pytest_args,
skip_docker_compose_deletion=skip_docker_compose_deletion,
- wait_for_containers_timeout=wait_for_containers_timeout,
)
sys.exit(return_code)
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
index 908843c224..0c91145b5e 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
@@ -104,7 +104,6 @@ TESTING_PARAMETERS: dict[str, list[dict[str, str |
list[str]]]] = {
"--image-tag",
"--python",
"--skip-docker-compose-deletion",
- "--wait-for-containers-timeout",
"--github-repository",
],
}
diff --git a/dev/breeze/src/airflow_breeze/utils/run_tests.py
b/dev/breeze/src/airflow_breeze/utils/run_tests.py
index c431155842..fb06dae54b 100644
--- a/dev/breeze/src/airflow_breeze/utils/run_tests.py
+++ b/dev/breeze/src/airflow_breeze/utils/run_tests.py
@@ -65,7 +65,6 @@ def run_docker_compose_tests(
image_name: str,
extra_pytest_args: tuple,
skip_docker_compose_deletion: bool,
- wait_for_containers_timeout: int,
) -> tuple[int, str]:
command_result = run_command(["docker", "inspect", image_name],
check=False, stdout=DEVNULL)
if command_result.returncode != 0:
@@ -77,7 +76,6 @@ def run_docker_compose_tests(
env["DOCKER_IMAGE"] = image_name
if skip_docker_compose_deletion:
env["SKIP_DOCKER_COMPOSE_DELETION"] = "true"
- env["WAIT_FOR_CONTAINERS_TIMEOUT"] = str(wait_for_containers_timeout)
command_result = run_command(
[sys.executable, "-m", "pytest", str(test_path), *pytest_args,
*extra_pytest_args],
env=env,
diff --git a/docker_tests/test_docker_compose_quick_start.py
b/docker_tests/test_docker_compose_quick_start.py
index 5add1176d1..7c70c39f05 100644
--- a/docker_tests/test_docker_compose_quick_start.py
+++ b/docker_tests/test_docker_compose_quick_start.py
@@ -102,7 +102,7 @@ def wait_for_terminal_dag_state(dag_id, dag_run_id):
pprint(api_request("GET", f"dags/{DAG_ID}/details"))
# Wait 80 seconds
- for _ in range(80):
+ for _ in range(400):
dag_state = api_request("GET",
f"dags/{dag_id}/dagRuns/{dag_run_id}").get("state")
print(f"Waiting for DAG Run: dag_state={dag_state}")
sleep(1)
@@ -134,61 +134,38 @@ def
test_trigger_dag_and_wait_for_result(tmp_path_factory, monkeypatch):
compose_command = ["docker", "compose"]
success = run_command([*compose_command, "version"], check=False)
if not success:
- compose_command = ["docker-compose"]
- success = run_command([*compose_command, "--version"], check=False)
- if not success:
- print("ERROR: Neither `docker compose` nor `docker-compose` is
available")
- sys.exit(1)
+ print("ERROR: `docker compose` not available. Make sure compose plugin
is installed")
+ sys.exit(1)
compose_command.extend(["--project-name", "quick-start"])
run_command([*compose_command, "config"])
run_command([*compose_command, "down", "--volumes", "--remove-orphans"])
+ run_command([*compose_command, "up", "-d", "--wait"])
+ api_request("PATCH", path=f"dags/{DAG_ID}", json={"is_paused": False})
+ api_request("POST", path=f"dags/{DAG_ID}/dagRuns", json={"dag_run_id":
DAG_RUN_ID})
try:
- run_command([*compose_command, "up", "-d"])
- # The --wait condition was released in docker-compose v2.1.1, but we
want to support
- # docker-compose v1 yet.
- # See:
- # https://github.com/docker/compose/releases/tag/v2.1.1
- # https://github.com/docker/compose/pull/8777
- wait_for_containers_timeout =
int(os.getenv("WAIT_FOR_CONTAINERS_TIMEOUT", "300"))
- # the time to wait is total, not per container
- start_time = monotonic()
- for container_id in (
- subprocess.check_output([*compose_command, "ps",
"-q"]).decode().strip().splitlines()
- ):
- current_time = monotonic()
- wait_for_container(container_id, wait_for_containers_timeout -
int(current_time - start_time))
- api_request("PATCH", path=f"dags/{DAG_ID}", json={"is_paused": False})
- api_request("POST", path=f"dags/{DAG_ID}/dagRuns", json={"dag_run_id":
DAG_RUN_ID})
- try:
- wait_for_terminal_dag_state(dag_id=DAG_ID, dag_run_id=DAG_RUN_ID)
- dag_state = api_request("GET",
f"dags/{DAG_ID}/dagRuns/{DAG_RUN_ID}").get("state")
- assert dag_state == "success"
- except Exception:
- print("HTTP: GET health")
- pprint(api_request("GET", "health"))
- print(f"HTTP: GET dags/{DAG_ID}/dagRuns")
- pprint(api_request("GET", f"dags/{DAG_ID}/dagRuns"))
- print(f"HTTP: GET
dags/{DAG_ID}/dagRuns/{DAG_RUN_ID}/taskInstances")
- pprint(api_request("GET",
f"dags/{DAG_ID}/dagRuns/{DAG_RUN_ID}/taskInstances"))
- raise
+ wait_for_terminal_dag_state(dag_id=DAG_ID, dag_run_id=DAG_RUN_ID)
+ dag_state = api_request("GET",
f"dags/{DAG_ID}/dagRuns/{DAG_RUN_ID}").get("state")
+ assert dag_state == "success"
except Exception:
+ print("HTTP: GET health")
+ pprint(api_request("GET", "health"))
+ print(f"HTTP: GET dags/{DAG_ID}/dagRuns")
+ pprint(api_request("GET", f"dags/{DAG_ID}/dagRuns"))
+ print(f"HTTP: GET dags/{DAG_ID}/dagRuns/{DAG_RUN_ID}/taskInstances")
+ pprint(api_request("GET",
f"dags/{DAG_ID}/dagRuns/{DAG_RUN_ID}/taskInstances"))
print(f"Current working directory: {os.getcwd()}")
run_command(["docker", "version"])
run_command([*compose_command, "version"])
run_command(["docker", "ps"])
run_command([*compose_command, "logs"])
-
- if compose_command == ["docker", "compose"]:
- # JSON output is only available for docker compose v2
- ps_output = run_command([*compose_command, "ps", "--format",
"json"], return_output=True)
- container_names = [container["Name"] for container in
json.loads(ps_output)]
- for container in container_names:
- print(f"Health check for {container}")
- result = run_command(
- ["docker", "inspect", "--format", "{{json .State}}",
container], return_output=True
- )
- pprint(json.loads(result))
-
+ ps_output = run_command([*compose_command, "ps", "--format", "json"],
return_output=True)
+ container_names = [container["Name"] for container in
json.loads(ps_output)]
+ for container in container_names:
+ print(f"Health check for {container}")
+ result = run_command(
+ ["docker", "inspect", "--format", "{{json .State}}",
container], return_output=True
+ )
+ pprint(json.loads(result))
raise
finally:
if not os.environ.get("SKIP_DOCKER_COMPOSE_DELETION"):
diff --git a/images/breeze/output-commands-hash.txt
b/images/breeze/output-commands-hash.txt
index 021b5060cf..3d22259a4b 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -65,8 +65,8 @@ setup:fd391bab5277ad3aca65987a84144d51
shell:1462cde6f7e11a73cb42d4eec93c598e
start-airflow:d4815dea2cfc0af7038697c1d9a13996
static-checks:19926b8fcea5784b28d4a0d99865363c
-testing:docker-compose-tests:a4dfe7dadbe3e95fdf2b8d2107f7e208
+testing:docker-compose-tests:fd154a058082fcfda12eb877a9a89338
testing:helm-tests:0669be17b744ba057adbf38681bd8e68
testing:integration-tests:e745af9dd595adaa6f17ef02fbaae3b5
testing:tests:29da9579379b1d013c02dd6c4471b958
-testing:3c04cf53fedc5ed321ff10c6ecc76204
+testing:355a33f1e38298dba301d638d956fb55
diff --git a/images/breeze/output-commands.svg
b/images/breeze/output-commands.svg
index 51829ca34b..8b9d38fa91 100644
--- a/images/breeze/output-commands.svg
+++ b/images/breeze/output-commands.svg
@@ -35,8 +35,8 @@
.breeze-help-r1 { fill: #c5c8c6;font-weight: bold }
.breeze-help-r2 { fill: #c5c8c6 }
.breeze-help-r3 { fill: #d0b344;font-weight: bold }
-.breeze-help-r4 { fill: #68a0b3;font-weight: bold }
-.breeze-help-r5 { fill: #868887 }
+.breeze-help-r4 { fill: #868887 }
+.breeze-help-r5 { fill: #68a0b3;font-weight: bold }
.breeze-help-r6 { fill: #98a84b;font-weight: bold }
.breeze-help-r7 { fill: #8d7b39 }
</style>
@@ -217,59 +217,59 @@
<g class="breeze-help-matrix">
<text class="breeze-help-r2" x="1464" y="20" textLength="12.2"
clip-path="url(#breeze-help-line-0)">
-</text><text class="breeze-help-r3" x="12.2" y="44.4" textLength="85.4"
clip-path="url(#breeze-help-line-1)">Usage: </text><text
class="breeze-help-r1" x="97.6" y="44.4" textLength="97.6"
clip-path="url(#breeze-help-line-1)">breeze [</text><text
class="breeze-help-r4" x="195.2" y="44.4" textLength="85.4"
clip-path="url(#breeze-help-line-1)">OPTIONS</text><text class="breeze-help-r1"
x="280.6" y="44.4" textLength="24.4"
clip-path="url(#breeze-help-line-1)">] </text><text cl [...]
+</text><text class="breeze-help-r3" x="12.2" y="44.4" textLength="85.4"
clip-path="url(#breeze-help-line-1)">Usage: </text><text
class="breeze-help-r1" x="97.6" y="44.4" textLength="414.8"
clip-path="url(#breeze-help-line-1)">breeze [OPTIONS] COMMAND [ARGS]...</text><text
class="breeze-help-r2" x="1464" y="44.4" textLength="12.2"
clip-path="url(#breeze-help-line-1)">
</text><text class="breeze-help-r2" x="1464" y="68.8" textLength="12.2"
clip-path="url(#breeze-help-line-2)">
-</text><text class="breeze-help-r5" x="0" y="93.2" textLength="24.4"
clip-path="url(#breeze-help-line-3)">╭─</text><text class="breeze-help-r5"
x="24.4" y="93.2" textLength="158.6"
clip-path="url(#breeze-help-line-3)"> Basic flags </text><text
class="breeze-help-r5" x="183" y="93.2" textLength="1256.6"
clip-path="url(#breeze-help-line-3)">───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="breeze-help-r [...]
-</text><text class="breeze-help-r5" x="0" y="117.6" textLength="12.2"
clip-path="url(#breeze-help-line-4)">│</text><text class="breeze-help-r4"
x="24.4" y="117.6" textLength="12.2"
clip-path="url(#breeze-help-line-4)">-</text><text class="breeze-help-r4"
x="36.6" y="117.6" textLength="85.4"
clip-path="url(#breeze-help-line-4)">-python</text><text class="breeze-help-r6"
x="305" y="117.6" textLength="24.4"
clip-path="url(#breeze-help-line-4)">-p</text><text class="breeze-help-r2"
x="353.8" [...]
-</text><text class="breeze-help-r5" x="0" y="142" textLength="12.2"
clip-path="url(#breeze-help-line-5)">│</text><text class="breeze-help-r5"
x="353.8" y="142" textLength="732"
clip-path="url(#breeze-help-line-5)">[default: 3.8]                                           &
[...]
-</text><text class="breeze-help-r5" x="0" y="166.4" textLength="12.2"
clip-path="url(#breeze-help-line-6)">│</text><text class="breeze-help-r4"
x="24.4" y="166.4" textLength="12.2"
clip-path="url(#breeze-help-line-6)">-</text><text class="breeze-help-r4"
x="36.6" y="166.4" textLength="97.6"
clip-path="url(#breeze-help-line-6)">-backend</text><text
class="breeze-help-r6" x="305" y="166.4" textLength="24.4"
clip-path="url(#breeze-help-line-6)">-b</text><text class="breeze-help-r2"
x="353.8 [...]
-</text><text class="breeze-help-r5" x="0" y="190.8" textLength="12.2"
clip-path="url(#breeze-help-line-7)">│</text><text class="breeze-help-r4"
x="24.4" y="190.8" textLength="12.2"
clip-path="url(#breeze-help-line-7)">-</text><text class="breeze-help-r4"
x="36.6" y="190.8" textLength="109.8"
clip-path="url(#breeze-help-line-7)">-postgres</text><text
class="breeze-help-r4" x="146.4" y="190.8" textLength="97.6"
clip-path="url(#breeze-help-line-7)">-version</text><text class="breeze-help-r6
[...]
-</text><text class="breeze-help-r5" x="0" y="215.2" textLength="12.2"
clip-path="url(#breeze-help-line-8)">│</text><text class="breeze-help-r4"
x="24.4" y="215.2" textLength="12.2"
clip-path="url(#breeze-help-line-8)">-</text><text class="breeze-help-r4"
x="36.6" y="215.2" textLength="73.2"
clip-path="url(#breeze-help-line-8)">-mysql</text><text class="breeze-help-r4"
x="109.8" y="215.2" textLength="97.6"
clip-path="url(#breeze-help-line-8)">-version</text><text
class="breeze-help-r6" x= [...]
-</text><text class="breeze-help-r5" x="0" y="239.6" textLength="12.2"
clip-path="url(#breeze-help-line-9)">│</text><text class="breeze-help-r4"
x="24.4" y="239.6" textLength="12.2"
clip-path="url(#breeze-help-line-9)">-</text><text class="breeze-help-r4"
x="36.6" y="239.6" textLength="73.2"
clip-path="url(#breeze-help-line-9)">-mssql</text><text class="breeze-help-r4"
x="109.8" y="239.6" textLength="97.6"
clip-path="url(#breeze-help-line-9)">-version</text><text
class="breeze-help-r6" x= [...]
-</text><text class="breeze-help-r5" x="0" y="264" textLength="12.2"
clip-path="url(#breeze-help-line-10)">│</text><text class="breeze-help-r4"
x="24.4" y="264" textLength="12.2"
clip-path="url(#breeze-help-line-10)">-</text><text class="breeze-help-r4"
x="36.6" y="264" textLength="146.4"
clip-path="url(#breeze-help-line-10)">-integration</text><text
class="breeze-help-r2" x="353.8" y="264" textLength="1085.8"
clip-path="url(#breeze-help-line-10)">Integration(s) to enable w
[...]
-</text><text class="breeze-help-r5" x="0" y="288.4" textLength="12.2"
clip-path="url(#breeze-help-line-11)">│</text><text class="breeze-help-r7"
x="353.8" y="288.4" textLength="1085.8"
clip-path="url(#breeze-help-line-11)">(all | all-testable | cassandra | celery | kafka | kerberos | mongo | otel | pinot |     </text><text
class="breeze-help-r5" x="1451.8" y="288.4" textLength="1 [...]
-</text><text class="breeze-help-r5" x="0" y="312.8" textLength="12.2"
clip-path="url(#breeze-help-line-12)">│</text><text class="breeze-help-r7"
x="353.8" y="312.8" textLength="1085.8"
clip-path="url(#breeze-help-line-12)">statsd | statsd | trino)                                     
[...]
-</text><text class="breeze-help-r5" x="0" y="337.2" textLength="12.2"
clip-path="url(#breeze-help-line-13)">│</text><text class="breeze-help-r4"
x="24.4" y="337.2" textLength="12.2"
clip-path="url(#breeze-help-line-13)">-</text><text class="breeze-help-r4"
x="36.6" y="337.2" textLength="97.6"
clip-path="url(#breeze-help-line-13)">-forward</text><text
class="breeze-help-r4" x="134.2" y="337.2" textLength="146.4"
clip-path="url(#breeze-help-line-13)">-credentials</text><text class="breeze-
[...]
-</text><text class="breeze-help-r5" x="0" y="361.6" textLength="12.2"
clip-path="url(#breeze-help-line-14)">│</text><text class="breeze-help-r4"
x="24.4" y="361.6" textLength="12.2"
clip-path="url(#breeze-help-line-14)">-</text><text class="breeze-help-r4"
x="36.6" y="361.6" textLength="36.6"
clip-path="url(#breeze-help-line-14)">-db</text><text class="breeze-help-r4"
x="73.2" y="361.6" textLength="73.2"
clip-path="url(#breeze-help-line-14)">-reset</text><text class="breeze-help-r6"
x="3 [...]
-</text><text class="breeze-help-r5" x="0" y="386" textLength="12.2"
clip-path="url(#breeze-help-line-15)">│</text><text class="breeze-help-r4"
x="24.4" y="386" textLength="12.2"
clip-path="url(#breeze-help-line-15)">-</text><text class="breeze-help-r4"
x="36.6" y="386" textLength="48.8"
clip-path="url(#breeze-help-line-15)">-max</text><text class="breeze-help-r4"
x="85.4" y="386" textLength="61"
clip-path="url(#breeze-help-line-15)">-time</text><text class="breeze-help-r2"
x="353.8" y="3 [...]
-</text><text class="breeze-help-r5" x="0" y="410.4" textLength="12.2"
clip-path="url(#breeze-help-line-16)">│</text><text class="breeze-help-r7"
x="353.8" y="410.4" textLength="1049.2"
clip-path="url(#breeze-help-line-16)">(INTEGER RANGE)                                         
[...]
-</text><text class="breeze-help-r5" x="0" y="434.8" textLength="12.2"
clip-path="url(#breeze-help-line-17)">│</text><text class="breeze-help-r4"
x="24.4" y="434.8" textLength="12.2"
clip-path="url(#breeze-help-line-17)">-</text><text class="breeze-help-r4"
x="36.6" y="434.8" textLength="85.4"
clip-path="url(#breeze-help-line-17)">-github</text><text
class="breeze-help-r4" x="122" y="434.8" textLength="134.2"
clip-path="url(#breeze-help-line-17)">-repository</text><text
class="breeze-help [...]
-</text><text class="breeze-help-r5" x="0" y="459.2" textLength="12.2"
clip-path="url(#breeze-help-line-18)">│</text><text class="breeze-help-r4"
x="24.4" y="459.2" textLength="12.2"
clip-path="url(#breeze-help-line-18)">-</text><text class="breeze-help-r4"
x="36.6" y="459.2" textLength="97.6"
clip-path="url(#breeze-help-line-18)">-builder</text><text
class="breeze-help-r2" x="353.8" y="459.2" textLength="756.4"
clip-path="url(#breeze-help-line-18)">Buildx builder used to&#
[...]
-</text><text class="breeze-help-r5" x="0" y="483.6" textLength="12.2"
clip-path="url(#breeze-help-line-19)">│</text><text class="breeze-help-r5"
x="353.8" y="483.6" textLength="756.4"
clip-path="url(#breeze-help-line-19)">[default: autodetect]                                        
[...]
-</text><text class="breeze-help-r5" x="0" y="508" textLength="1464"
clip-path="url(#breeze-help-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="508" textLength="12.2"
clip-path="url(#breeze-help-line-20)">
-</text><text class="breeze-help-r5" x="0" y="532.4" textLength="24.4"
clip-path="url(#breeze-help-line-21)">╭─</text><text class="breeze-help-r5"
x="24.4" y="532.4" textLength="195.2"
clip-path="url(#breeze-help-line-21)"> Common options </text><text
class="breeze-help-r5" x="219.6" y="532.4" textLength="1220"
clip-path="url(#breeze-help-line-21)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="breeze- [...]
-</text><text class="breeze-help-r5" x="0" y="556.8" textLength="12.2"
clip-path="url(#breeze-help-line-22)">│</text><text class="breeze-help-r4"
x="24.4" y="556.8" textLength="12.2"
clip-path="url(#breeze-help-line-22)">-</text><text class="breeze-help-r4"
x="36.6" y="556.8" textLength="97.6"
clip-path="url(#breeze-help-line-22)">-verbose</text><text
class="breeze-help-r6" x="158.6" y="556.8" textLength="24.4"
clip-path="url(#breeze-help-line-22)">-v</text><text class="breeze-help-r2" x=
[...]
-</text><text class="breeze-help-r5" x="0" y="581.2" textLength="12.2"
clip-path="url(#breeze-help-line-23)">│</text><text class="breeze-help-r4"
x="24.4" y="581.2" textLength="12.2"
clip-path="url(#breeze-help-line-23)">-</text><text class="breeze-help-r4"
x="36.6" y="581.2" textLength="48.8"
clip-path="url(#breeze-help-line-23)">-dry</text><text class="breeze-help-r4"
x="85.4" y="581.2" textLength="48.8"
clip-path="url(#breeze-help-line-23)">-run</text><text class="breeze-help-r6"
x="15 [...]
-</text><text class="breeze-help-r5" x="0" y="605.6" textLength="12.2"
clip-path="url(#breeze-help-line-24)">│</text><text class="breeze-help-r4"
x="24.4" y="605.6" textLength="12.2"
clip-path="url(#breeze-help-line-24)">-</text><text class="breeze-help-r4"
x="36.6" y="605.6" textLength="85.4"
clip-path="url(#breeze-help-line-24)">-answer</text><text
class="breeze-help-r6" x="158.6" y="605.6" textLength="24.4"
clip-path="url(#breeze-help-line-24)">-a</text><text class="breeze-help-r2" x="
[...]
-</text><text class="breeze-help-r5" x="0" y="630" textLength="12.2"
clip-path="url(#breeze-help-line-25)">│</text><text class="breeze-help-r4"
x="24.4" y="630" textLength="12.2"
clip-path="url(#breeze-help-line-25)">-</text><text class="breeze-help-r4"
x="36.6" y="630" textLength="61"
clip-path="url(#breeze-help-line-25)">-help</text><text class="breeze-help-r6"
x="158.6" y="630" textLength="24.4"
clip-path="url(#breeze-help-line-25)">-h</text><text class="breeze-help-r2"
x="207.4" y="63 [...]
-</text><text class="breeze-help-r5" x="0" y="654.4" textLength="1464"
clip-path="url(#breeze-help-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="654.4" textLength="12.2"
clip-path="url(#breeze-help-line-26)">
-</text><text class="breeze-help-r5" x="0" y="678.8" textLength="24.4"
clip-path="url(#breeze-help-line-27)">╭─</text><text class="breeze-help-r5"
x="24.4" y="678.8" textLength="244"
clip-path="url(#breeze-help-line-27)"> Developer commands </text><text
class="breeze-help-r5" x="268.4" y="678.8" textLength="1171.2"
clip-path="url(#breeze-help-line-27)">────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="breeze- [...]
-</text><text class="breeze-help-r5" x="0" y="703.2" textLength="12.2"
clip-path="url(#breeze-help-line-28)">│</text><text class="breeze-help-r4"
x="24.4" y="703.2" textLength="219.6"
clip-path="url(#breeze-help-line-28)">start-airflow     </text><text
class="breeze-help-r2" x="268.4" y="703.2" textLength="1171.2"
clip-path="url(#breeze-help-line-28)">Enter breeze environment and starts all Airflow components in the
[...]
-</text><text class="breeze-help-r5" x="0" y="727.6" textLength="12.2"
clip-path="url(#breeze-help-line-29)">│</text><text class="breeze-help-r2"
x="268.4" y="727.6" textLength="1171.2"
clip-path="url(#breeze-help-line-29)">if contents of www directory changed.                                  
[...]
-</text><text class="breeze-help-r5" x="0" y="752" textLength="12.2"
clip-path="url(#breeze-help-line-30)">│</text><text class="breeze-help-r4"
x="24.4" y="752" textLength="219.6"
clip-path="url(#breeze-help-line-30)">static-checks     </text><text
class="breeze-help-r2" x="268.4" y="752" textLength="1171.2"
clip-path="url(#breeze-help-line-30)">Run static checks.               &#
[...]
-</text><text class="breeze-help-r5" x="0" y="776.4" textLength="12.2"
clip-path="url(#breeze-help-line-31)">│</text><text class="breeze-help-r4"
x="24.4" y="776.4" textLength="219.6"
clip-path="url(#breeze-help-line-31)">build-docs        </text><text
class="breeze-help-r2" x="268.4" y="776.4" textLength="1171.2"
clip-path="url(#breeze-help-line-31)">Build documents.             
[...]
-</text><text class="breeze-help-r5" x="0" y="800.8" textLength="12.2"
clip-path="url(#breeze-help-line-32)">│</text><text class="breeze-help-r4"
x="24.4" y="800.8" textLength="219.6"
clip-path="url(#breeze-help-line-32)">down              </text><text
class="breeze-help-r2" x="268.4" y="800.8" textLength="1171.2"
clip-path="url(#breeze-help-line-32)">Stop running breeze environment.   
[...]
-</text><text class="breeze-help-r5" x="0" y="825.2" textLength="12.2"
clip-path="url(#breeze-help-line-33)">│</text><text class="breeze-help-r4"
x="24.4" y="825.2" textLength="219.6"
clip-path="url(#breeze-help-line-33)">shell             </text><text
class="breeze-help-r2" x="268.4" y="825.2" textLength="1171.2"
clip-path="url(#breeze-help-line-33)">Enter breeze environment. this is the defaul
[...]
-</text><text class="breeze-help-r5" x="0" y="849.6" textLength="12.2"
clip-path="url(#breeze-help-line-34)">│</text><text class="breeze-help-r4"
x="24.4" y="849.6" textLength="219.6"
clip-path="url(#breeze-help-line-34)">exec              </text><text
class="breeze-help-r2" x="268.4" y="849.6" textLength="1171.2"
clip-path="url(#breeze-help-line-34)">Joins the interactive shell of running 
[...]
-</text><text class="breeze-help-r5" x="0" y="874" textLength="12.2"
clip-path="url(#breeze-help-line-35)">│</text><text class="breeze-help-r4"
x="24.4" y="874" textLength="219.6"
clip-path="url(#breeze-help-line-35)">compile-www-assets</text><text
class="breeze-help-r2" x="268.4" y="874" textLength="1171.2"
clip-path="url(#breeze-help-line-35)">Compiles www assets.                   &
[...]
-</text><text class="breeze-help-r5" x="0" y="898.4" textLength="12.2"
clip-path="url(#breeze-help-line-36)">│</text><text class="breeze-help-r4"
x="24.4" y="898.4" textLength="219.6"
clip-path="url(#breeze-help-line-36)">cleanup           </text><text
class="breeze-help-r2" x="268.4" y="898.4" textLength="805.2"
clip-path="url(#breeze-help-line-36)">Cleans the cache of parameters, docker cache and&#
[...]
-</text><text class="breeze-help-r5" x="0" y="922.8" textLength="1464"
clip-path="url(#breeze-help-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="922.8" textLength="12.2"
clip-path="url(#breeze-help-line-37)">
-</text><text class="breeze-help-r5" x="0" y="947.2" textLength="24.4"
clip-path="url(#breeze-help-line-38)">╭─</text><text class="breeze-help-r5"
x="24.4" y="947.2" textLength="219.6"
clip-path="url(#breeze-help-line-38)"> Testing commands </text><text
class="breeze-help-r5" x="244" y="947.2" textLength="1195.6"
clip-path="url(#breeze-help-line-38)">──────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="breeze- [...]
-</text><text class="breeze-help-r5" x="0" y="971.6" textLength="12.2"
clip-path="url(#breeze-help-line-39)">│</text><text class="breeze-help-r4"
x="24.4" y="971.6" textLength="183"
clip-path="url(#breeze-help-line-39)">testing        </text><text
class="breeze-help-r2" x="231.8" y="971.6" textLength="1207.8"
clip-path="url(#breeze-help-line-39)">Tools that developers can use to run tests    
[...]
-</text><text class="breeze-help-r5" x="0" y="996" textLength="12.2"
clip-path="url(#breeze-help-line-40)">│</text><text class="breeze-help-r4"
x="24.4" y="996" textLength="183"
clip-path="url(#breeze-help-line-40)">k8s            </text><text
class="breeze-help-r2" x="231.8" y="996" textLength="1207.8"
clip-path="url(#breeze-help-line-40)">Tools that developers use to run Kubernetes tests 
[...]
-</text><text class="breeze-help-r5" x="0" y="1020.4" textLength="1464"
clip-path="url(#breeze-help-line-41)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="1020.4" textLength="12.2"
clip-path="url(#breeze-help-line-41)">
-</text><text class="breeze-help-r5" x="0" y="1044.8" textLength="24.4"
clip-path="url(#breeze-help-line-42)">╭─</text><text class="breeze-help-r5"
x="24.4" y="1044.8" textLength="195.2"
clip-path="url(#breeze-help-line-42)"> Image commands </text><text
class="breeze-help-r5" x="219.6" y="1044.8" textLength="1220"
clip-path="url(#breeze-help-line-42)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="bree [...]
-</text><text class="breeze-help-r5" x="0" y="1069.2" textLength="12.2"
clip-path="url(#breeze-help-line-43)">│</text><text class="breeze-help-r4"
x="24.4" y="1069.2" textLength="207.4"
clip-path="url(#breeze-help-line-43)">ci-image         </text><text
class="breeze-help-r2" x="256.2" y="1069.2" textLength="597.8"
clip-path="url(#breeze-help-line-43)">Tools that developers can use to manually manage </te
[...]
-</text><text class="breeze-help-r5" x="0" y="1093.6" textLength="12.2"
clip-path="url(#breeze-help-line-44)">│</text><text class="breeze-help-r4"
x="24.4" y="1093.6" textLength="207.4"
clip-path="url(#breeze-help-line-44)">prod-image       </text><text
class="breeze-help-r2" x="256.2" y="1093.6" textLength="597.8"
clip-path="url(#breeze-help-line-44)">Tools that developers can use to manually manage </text><text
c [...]
-</text><text class="breeze-help-r5" x="0" y="1118" textLength="1464"
clip-path="url(#breeze-help-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="1118" textLength="12.2"
clip-path="url(#breeze-help-line-45)">
-</text><text class="breeze-help-r5" x="0" y="1142.4" textLength="24.4"
clip-path="url(#breeze-help-line-46)">╭─</text><text class="breeze-help-r5"
x="24.4" y="1142.4" textLength="353.8"
clip-path="url(#breeze-help-line-46)"> Release management commands </text><text
class="breeze-help-r5" x="378.2" y="1142.4" textLength="1061.4"
clip-path="url(#breeze-help-line-46)">───────────────────────────────────────────────────────────────────────────────────────</text><text
clas [...]
-</text><text class="breeze-help-r5" x="0" y="1166.8" textLength="12.2"
clip-path="url(#breeze-help-line-47)">│</text><text class="breeze-help-r4"
x="24.4" y="1166.8" textLength="280.6"
clip-path="url(#breeze-help-line-47)">release-management     </text><text
class="breeze-help-r2" x="329.4" y="1166.8" textLength="1110.2"
clip-path="url(#breeze-help-line-47)">Tools that release managers can use to prepare and manage
[...]
-</text><text class="breeze-help-r5" x="0" y="1191.2" textLength="12.2"
clip-path="url(#breeze-help-line-48)">│</text><text class="breeze-help-r4"
x="24.4" y="1191.2" textLength="280.6"
clip-path="url(#breeze-help-line-48)">sbom                   </text><text
class="breeze-help-r2" x="329.4" y="1191.2" textLength="1110.2"
clip-path="url(#breeze-help-line-48)">Tools that release ma [...]
-</text><text class="breeze-help-r5" x="0" y="1215.6" textLength="1464"
clip-path="url(#breeze-help-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="1215.6" textLength="12.2"
clip-path="url(#breeze-help-line-49)">
-</text><text class="breeze-help-r5" x="0" y="1240" textLength="24.4"
clip-path="url(#breeze-help-line-50)">╭─</text><text class="breeze-help-r5"
x="24.4" y="1240" textLength="195.2"
clip-path="url(#breeze-help-line-50)"> Other commands </text><text
class="breeze-help-r5" x="219.6" y="1240" textLength="1220"
clip-path="url(#breeze-help-line-50)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="breeze-hel [...]
-</text><text class="breeze-help-r5" x="0" y="1264.4" textLength="12.2"
clip-path="url(#breeze-help-line-51)">│</text><text class="breeze-help-r4"
x="24.4" y="1264.4" textLength="122"
clip-path="url(#breeze-help-line-51)">setup     </text><text
class="breeze-help-r2" x="170.8" y="1264.4" textLength="1268.8"
clip-path="url(#breeze-help-line-51)">Tools that developers can use to configure Breeze      &
[...]
-</text><text class="breeze-help-r5" x="0" y="1288.8" textLength="12.2"
clip-path="url(#breeze-help-line-52)">│</text><text class="breeze-help-r4"
x="24.4" y="1288.8" textLength="122"
clip-path="url(#breeze-help-line-52)">ci        </text><text
class="breeze-help-r2" x="170.8" y="1288.8" textLength="134.2"
clip-path="url(#breeze-help-line-52)">Tools that </text><text
class="breeze-help-r4" x="305" y="1288.8" textLength="24.4" clip-path="ur [...]
-</text><text class="breeze-help-r5" x="0" y="1313.2" textLength="1464"
clip-path="url(#breeze-help-line-53)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="1313.2" textLength="12.2"
clip-path="url(#breeze-help-line-53)">
+</text><text class="breeze-help-r4" x="0" y="93.2" textLength="24.4"
clip-path="url(#breeze-help-line-3)">╭─</text><text class="breeze-help-r4"
x="24.4" y="93.2" textLength="158.6"
clip-path="url(#breeze-help-line-3)"> Basic flags </text><text
class="breeze-help-r4" x="183" y="93.2" textLength="1256.6"
clip-path="url(#breeze-help-line-3)">───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="breeze-help-r [...]
+</text><text class="breeze-help-r4" x="0" y="117.6" textLength="12.2"
clip-path="url(#breeze-help-line-4)">│</text><text class="breeze-help-r5"
x="24.4" y="117.6" textLength="12.2"
clip-path="url(#breeze-help-line-4)">-</text><text class="breeze-help-r5"
x="36.6" y="117.6" textLength="85.4"
clip-path="url(#breeze-help-line-4)">-python</text><text class="breeze-help-r6"
x="305" y="117.6" textLength="24.4"
clip-path="url(#breeze-help-line-4)">-p</text><text class="breeze-help-r2"
x="353.8" [...]
+</text><text class="breeze-help-r4" x="0" y="142" textLength="12.2"
clip-path="url(#breeze-help-line-5)">│</text><text class="breeze-help-r4"
x="353.8" y="142" textLength="732"
clip-path="url(#breeze-help-line-5)">[default: 3.8]                                           &
[...]
+</text><text class="breeze-help-r4" x="0" y="166.4" textLength="12.2"
clip-path="url(#breeze-help-line-6)">│</text><text class="breeze-help-r5"
x="24.4" y="166.4" textLength="12.2"
clip-path="url(#breeze-help-line-6)">-</text><text class="breeze-help-r5"
x="36.6" y="166.4" textLength="97.6"
clip-path="url(#breeze-help-line-6)">-backend</text><text
class="breeze-help-r6" x="305" y="166.4" textLength="24.4"
clip-path="url(#breeze-help-line-6)">-b</text><text class="breeze-help-r2"
x="353.8 [...]
+</text><text class="breeze-help-r4" x="0" y="190.8" textLength="12.2"
clip-path="url(#breeze-help-line-7)">│</text><text class="breeze-help-r5"
x="24.4" y="190.8" textLength="12.2"
clip-path="url(#breeze-help-line-7)">-</text><text class="breeze-help-r5"
x="36.6" y="190.8" textLength="109.8"
clip-path="url(#breeze-help-line-7)">-postgres</text><text
class="breeze-help-r5" x="146.4" y="190.8" textLength="97.6"
clip-path="url(#breeze-help-line-7)">-version</text><text class="breeze-help-r6
[...]
+</text><text class="breeze-help-r4" x="0" y="215.2" textLength="12.2"
clip-path="url(#breeze-help-line-8)">│</text><text class="breeze-help-r5"
x="24.4" y="215.2" textLength="12.2"
clip-path="url(#breeze-help-line-8)">-</text><text class="breeze-help-r5"
x="36.6" y="215.2" textLength="73.2"
clip-path="url(#breeze-help-line-8)">-mysql</text><text class="breeze-help-r5"
x="109.8" y="215.2" textLength="97.6"
clip-path="url(#breeze-help-line-8)">-version</text><text
class="breeze-help-r6" x= [...]
+</text><text class="breeze-help-r4" x="0" y="239.6" textLength="12.2"
clip-path="url(#breeze-help-line-9)">│</text><text class="breeze-help-r5"
x="24.4" y="239.6" textLength="12.2"
clip-path="url(#breeze-help-line-9)">-</text><text class="breeze-help-r5"
x="36.6" y="239.6" textLength="73.2"
clip-path="url(#breeze-help-line-9)">-mssql</text><text class="breeze-help-r5"
x="109.8" y="239.6" textLength="97.6"
clip-path="url(#breeze-help-line-9)">-version</text><text
class="breeze-help-r6" x= [...]
+</text><text class="breeze-help-r4" x="0" y="264" textLength="12.2"
clip-path="url(#breeze-help-line-10)">│</text><text class="breeze-help-r5"
x="24.4" y="264" textLength="12.2"
clip-path="url(#breeze-help-line-10)">-</text><text class="breeze-help-r5"
x="36.6" y="264" textLength="146.4"
clip-path="url(#breeze-help-line-10)">-integration</text><text
class="breeze-help-r2" x="353.8" y="264" textLength="1085.8"
clip-path="url(#breeze-help-line-10)">Integration(s) to enable w
[...]
+</text><text class="breeze-help-r4" x="0" y="288.4" textLength="12.2"
clip-path="url(#breeze-help-line-11)">│</text><text class="breeze-help-r7"
x="353.8" y="288.4" textLength="1085.8"
clip-path="url(#breeze-help-line-11)">(all | all-testable | cassandra | celery | kafka | kerberos | mongo | otel | pinot |     </text><text
class="breeze-help-r4" x="1451.8" y="288.4" textLength="1 [...]
+</text><text class="breeze-help-r4" x="0" y="312.8" textLength="12.2"
clip-path="url(#breeze-help-line-12)">│</text><text class="breeze-help-r7"
x="353.8" y="312.8" textLength="1085.8"
clip-path="url(#breeze-help-line-12)">statsd | statsd | trino)                                     
[...]
+</text><text class="breeze-help-r4" x="0" y="337.2" textLength="12.2"
clip-path="url(#breeze-help-line-13)">│</text><text class="breeze-help-r5"
x="24.4" y="337.2" textLength="12.2"
clip-path="url(#breeze-help-line-13)">-</text><text class="breeze-help-r5"
x="36.6" y="337.2" textLength="97.6"
clip-path="url(#breeze-help-line-13)">-forward</text><text
class="breeze-help-r5" x="134.2" y="337.2" textLength="146.4"
clip-path="url(#breeze-help-line-13)">-credentials</text><text class="breeze-
[...]
+</text><text class="breeze-help-r4" x="0" y="361.6" textLength="12.2"
clip-path="url(#breeze-help-line-14)">│</text><text class="breeze-help-r5"
x="24.4" y="361.6" textLength="12.2"
clip-path="url(#breeze-help-line-14)">-</text><text class="breeze-help-r5"
x="36.6" y="361.6" textLength="36.6"
clip-path="url(#breeze-help-line-14)">-db</text><text class="breeze-help-r5"
x="73.2" y="361.6" textLength="73.2"
clip-path="url(#breeze-help-line-14)">-reset</text><text class="breeze-help-r6"
x="3 [...]
+</text><text class="breeze-help-r4" x="0" y="386" textLength="12.2"
clip-path="url(#breeze-help-line-15)">│</text><text class="breeze-help-r5"
x="24.4" y="386" textLength="12.2"
clip-path="url(#breeze-help-line-15)">-</text><text class="breeze-help-r5"
x="36.6" y="386" textLength="48.8"
clip-path="url(#breeze-help-line-15)">-max</text><text class="breeze-help-r5"
x="85.4" y="386" textLength="61"
clip-path="url(#breeze-help-line-15)">-time</text><text class="breeze-help-r2"
x="353.8" y="3 [...]
+</text><text class="breeze-help-r4" x="0" y="410.4" textLength="12.2"
clip-path="url(#breeze-help-line-16)">│</text><text class="breeze-help-r7"
x="353.8" y="410.4" textLength="1049.2"
clip-path="url(#breeze-help-line-16)">(INTEGER RANGE)                                         
[...]
+</text><text class="breeze-help-r4" x="0" y="434.8" textLength="12.2"
clip-path="url(#breeze-help-line-17)">│</text><text class="breeze-help-r5"
x="24.4" y="434.8" textLength="12.2"
clip-path="url(#breeze-help-line-17)">-</text><text class="breeze-help-r5"
x="36.6" y="434.8" textLength="85.4"
clip-path="url(#breeze-help-line-17)">-github</text><text
class="breeze-help-r5" x="122" y="434.8" textLength="134.2"
clip-path="url(#breeze-help-line-17)">-repository</text><text
class="breeze-help [...]
+</text><text class="breeze-help-r4" x="0" y="459.2" textLength="12.2"
clip-path="url(#breeze-help-line-18)">│</text><text class="breeze-help-r5"
x="24.4" y="459.2" textLength="12.2"
clip-path="url(#breeze-help-line-18)">-</text><text class="breeze-help-r5"
x="36.6" y="459.2" textLength="97.6"
clip-path="url(#breeze-help-line-18)">-builder</text><text
class="breeze-help-r2" x="353.8" y="459.2" textLength="756.4"
clip-path="url(#breeze-help-line-18)">Buildx builder used to&#
[...]
+</text><text class="breeze-help-r4" x="0" y="483.6" textLength="12.2"
clip-path="url(#breeze-help-line-19)">│</text><text class="breeze-help-r4"
x="353.8" y="483.6" textLength="756.4"
clip-path="url(#breeze-help-line-19)">[default: autodetect]                                        
[...]
+</text><text class="breeze-help-r4" x="0" y="508" textLength="1464"
clip-path="url(#breeze-help-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="508" textLength="12.2"
clip-path="url(#breeze-help-line-20)">
+</text><text class="breeze-help-r4" x="0" y="532.4" textLength="24.4"
clip-path="url(#breeze-help-line-21)">╭─</text><text class="breeze-help-r4"
x="24.4" y="532.4" textLength="195.2"
clip-path="url(#breeze-help-line-21)"> Common options </text><text
class="breeze-help-r4" x="219.6" y="532.4" textLength="1220"
clip-path="url(#breeze-help-line-21)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="breeze- [...]
+</text><text class="breeze-help-r4" x="0" y="556.8" textLength="12.2"
clip-path="url(#breeze-help-line-22)">│</text><text class="breeze-help-r5"
x="24.4" y="556.8" textLength="12.2"
clip-path="url(#breeze-help-line-22)">-</text><text class="breeze-help-r5"
x="36.6" y="556.8" textLength="97.6"
clip-path="url(#breeze-help-line-22)">-verbose</text><text
class="breeze-help-r6" x="158.6" y="556.8" textLength="24.4"
clip-path="url(#breeze-help-line-22)">-v</text><text class="breeze-help-r2" x=
[...]
+</text><text class="breeze-help-r4" x="0" y="581.2" textLength="12.2"
clip-path="url(#breeze-help-line-23)">│</text><text class="breeze-help-r5"
x="24.4" y="581.2" textLength="12.2"
clip-path="url(#breeze-help-line-23)">-</text><text class="breeze-help-r5"
x="36.6" y="581.2" textLength="48.8"
clip-path="url(#breeze-help-line-23)">-dry</text><text class="breeze-help-r5"
x="85.4" y="581.2" textLength="48.8"
clip-path="url(#breeze-help-line-23)">-run</text><text class="breeze-help-r6"
x="15 [...]
+</text><text class="breeze-help-r4" x="0" y="605.6" textLength="12.2"
clip-path="url(#breeze-help-line-24)">│</text><text class="breeze-help-r5"
x="24.4" y="605.6" textLength="12.2"
clip-path="url(#breeze-help-line-24)">-</text><text class="breeze-help-r5"
x="36.6" y="605.6" textLength="85.4"
clip-path="url(#breeze-help-line-24)">-answer</text><text
class="breeze-help-r6" x="158.6" y="605.6" textLength="24.4"
clip-path="url(#breeze-help-line-24)">-a</text><text class="breeze-help-r2" x="
[...]
+</text><text class="breeze-help-r4" x="0" y="630" textLength="12.2"
clip-path="url(#breeze-help-line-25)">│</text><text class="breeze-help-r5"
x="24.4" y="630" textLength="12.2"
clip-path="url(#breeze-help-line-25)">-</text><text class="breeze-help-r5"
x="36.6" y="630" textLength="61"
clip-path="url(#breeze-help-line-25)">-help</text><text class="breeze-help-r6"
x="158.6" y="630" textLength="24.4"
clip-path="url(#breeze-help-line-25)">-h</text><text class="breeze-help-r2"
x="207.4" y="63 [...]
+</text><text class="breeze-help-r4" x="0" y="654.4" textLength="1464"
clip-path="url(#breeze-help-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="654.4" textLength="12.2"
clip-path="url(#breeze-help-line-26)">
+</text><text class="breeze-help-r4" x="0" y="678.8" textLength="24.4"
clip-path="url(#breeze-help-line-27)">╭─</text><text class="breeze-help-r4"
x="24.4" y="678.8" textLength="244"
clip-path="url(#breeze-help-line-27)"> Developer commands </text><text
class="breeze-help-r4" x="268.4" y="678.8" textLength="1171.2"
clip-path="url(#breeze-help-line-27)">────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="breeze- [...]
+</text><text class="breeze-help-r4" x="0" y="703.2" textLength="12.2"
clip-path="url(#breeze-help-line-28)">│</text><text class="breeze-help-r5"
x="24.4" y="703.2" textLength="219.6"
clip-path="url(#breeze-help-line-28)">start-airflow     </text><text
class="breeze-help-r2" x="268.4" y="703.2" textLength="1171.2"
clip-path="url(#breeze-help-line-28)">Enter breeze environment and starts all Airflow components in the
[...]
+</text><text class="breeze-help-r4" x="0" y="727.6" textLength="12.2"
clip-path="url(#breeze-help-line-29)">│</text><text class="breeze-help-r2"
x="268.4" y="727.6" textLength="1171.2"
clip-path="url(#breeze-help-line-29)">if contents of www directory changed.                                  
[...]
+</text><text class="breeze-help-r4" x="0" y="752" textLength="12.2"
clip-path="url(#breeze-help-line-30)">│</text><text class="breeze-help-r5"
x="24.4" y="752" textLength="219.6"
clip-path="url(#breeze-help-line-30)">static-checks     </text><text
class="breeze-help-r2" x="268.4" y="752" textLength="1171.2"
clip-path="url(#breeze-help-line-30)">Run static checks.               &#
[...]
+</text><text class="breeze-help-r4" x="0" y="776.4" textLength="12.2"
clip-path="url(#breeze-help-line-31)">│</text><text class="breeze-help-r5"
x="24.4" y="776.4" textLength="219.6"
clip-path="url(#breeze-help-line-31)">build-docs        </text><text
class="breeze-help-r2" x="268.4" y="776.4" textLength="1171.2"
clip-path="url(#breeze-help-line-31)">Build documents.             
[...]
+</text><text class="breeze-help-r4" x="0" y="800.8" textLength="12.2"
clip-path="url(#breeze-help-line-32)">│</text><text class="breeze-help-r5"
x="24.4" y="800.8" textLength="219.6"
clip-path="url(#breeze-help-line-32)">down              </text><text
class="breeze-help-r2" x="268.4" y="800.8" textLength="1171.2"
clip-path="url(#breeze-help-line-32)">Stop running breeze environment.   
[...]
+</text><text class="breeze-help-r4" x="0" y="825.2" textLength="12.2"
clip-path="url(#breeze-help-line-33)">│</text><text class="breeze-help-r5"
x="24.4" y="825.2" textLength="219.6"
clip-path="url(#breeze-help-line-33)">shell             </text><text
class="breeze-help-r2" x="268.4" y="825.2" textLength="1171.2"
clip-path="url(#breeze-help-line-33)">Enter breeze environment. this is the defaul
[...]
+</text><text class="breeze-help-r4" x="0" y="849.6" textLength="12.2"
clip-path="url(#breeze-help-line-34)">│</text><text class="breeze-help-r5"
x="24.4" y="849.6" textLength="219.6"
clip-path="url(#breeze-help-line-34)">exec              </text><text
class="breeze-help-r2" x="268.4" y="849.6" textLength="1171.2"
clip-path="url(#breeze-help-line-34)">Joins the interactive shell of running 
[...]
+</text><text class="breeze-help-r4" x="0" y="874" textLength="12.2"
clip-path="url(#breeze-help-line-35)">│</text><text class="breeze-help-r5"
x="24.4" y="874" textLength="219.6"
clip-path="url(#breeze-help-line-35)">compile-www-assets</text><text
class="breeze-help-r2" x="268.4" y="874" textLength="1171.2"
clip-path="url(#breeze-help-line-35)">Compiles www assets.                   &
[...]
+</text><text class="breeze-help-r4" x="0" y="898.4" textLength="12.2"
clip-path="url(#breeze-help-line-36)">│</text><text class="breeze-help-r5"
x="24.4" y="898.4" textLength="219.6"
clip-path="url(#breeze-help-line-36)">cleanup           </text><text
class="breeze-help-r2" x="268.4" y="898.4" textLength="1171.2"
clip-path="url(#breeze-help-line-36)">Cleans the cache of parameters, docker cache and&
[...]
+</text><text class="breeze-help-r4" x="0" y="922.8" textLength="1464"
clip-path="url(#breeze-help-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="922.8" textLength="12.2"
clip-path="url(#breeze-help-line-37)">
+</text><text class="breeze-help-r4" x="0" y="947.2" textLength="24.4"
clip-path="url(#breeze-help-line-38)">╭─</text><text class="breeze-help-r4"
x="24.4" y="947.2" textLength="219.6"
clip-path="url(#breeze-help-line-38)"> Testing commands </text><text
class="breeze-help-r4" x="244" y="947.2" textLength="1195.6"
clip-path="url(#breeze-help-line-38)">──────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="breeze- [...]
+</text><text class="breeze-help-r4" x="0" y="971.6" textLength="12.2"
clip-path="url(#breeze-help-line-39)">│</text><text class="breeze-help-r5"
x="24.4" y="971.6" textLength="183"
clip-path="url(#breeze-help-line-39)">testing        </text><text
class="breeze-help-r2" x="231.8" y="971.6" textLength="1207.8"
clip-path="url(#breeze-help-line-39)">Tools that developers can use to run tests    
[...]
+</text><text class="breeze-help-r4" x="0" y="996" textLength="12.2"
clip-path="url(#breeze-help-line-40)">│</text><text class="breeze-help-r5"
x="24.4" y="996" textLength="183"
clip-path="url(#breeze-help-line-40)">k8s            </text><text
class="breeze-help-r2" x="231.8" y="996" textLength="1207.8"
clip-path="url(#breeze-help-line-40)">Tools that developers use to run Kubernetes tests 
[...]
+</text><text class="breeze-help-r4" x="0" y="1020.4" textLength="1464"
clip-path="url(#breeze-help-line-41)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="1020.4" textLength="12.2"
clip-path="url(#breeze-help-line-41)">
+</text><text class="breeze-help-r4" x="0" y="1044.8" textLength="24.4"
clip-path="url(#breeze-help-line-42)">╭─</text><text class="breeze-help-r4"
x="24.4" y="1044.8" textLength="195.2"
clip-path="url(#breeze-help-line-42)"> Image commands </text><text
class="breeze-help-r4" x="219.6" y="1044.8" textLength="1220"
clip-path="url(#breeze-help-line-42)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="bree [...]
+</text><text class="breeze-help-r4" x="0" y="1069.2" textLength="12.2"
clip-path="url(#breeze-help-line-43)">│</text><text class="breeze-help-r5"
x="24.4" y="1069.2" textLength="207.4"
clip-path="url(#breeze-help-line-43)">ci-image         </text><text
class="breeze-help-r2" x="256.2" y="1069.2" textLength="1183.4"
clip-path="url(#breeze-help-line-43)">Tools that developers can use to manually manage CI&
[...]
+</text><text class="breeze-help-r4" x="0" y="1093.6" textLength="12.2"
clip-path="url(#breeze-help-line-44)">│</text><text class="breeze-help-r5"
x="24.4" y="1093.6" textLength="207.4"
clip-path="url(#breeze-help-line-44)">prod-image       </text><text
class="breeze-help-r2" x="256.2" y="1093.6" textLength="1183.4"
clip-path="url(#breeze-help-line-44)">Tools that developers can use to manually manage PROD ima
[...]
+</text><text class="breeze-help-r4" x="0" y="1118" textLength="1464"
clip-path="url(#breeze-help-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="1118" textLength="12.2"
clip-path="url(#breeze-help-line-45)">
+</text><text class="breeze-help-r4" x="0" y="1142.4" textLength="24.4"
clip-path="url(#breeze-help-line-46)">╭─</text><text class="breeze-help-r4"
x="24.4" y="1142.4" textLength="353.8"
clip-path="url(#breeze-help-line-46)"> Release management commands </text><text
class="breeze-help-r4" x="378.2" y="1142.4" textLength="1061.4"
clip-path="url(#breeze-help-line-46)">───────────────────────────────────────────────────────────────────────────────────────</text><text
clas [...]
+</text><text class="breeze-help-r4" x="0" y="1166.8" textLength="12.2"
clip-path="url(#breeze-help-line-47)">│</text><text class="breeze-help-r5"
x="24.4" y="1166.8" textLength="280.6"
clip-path="url(#breeze-help-line-47)">release-management     </text><text
class="breeze-help-r2" x="329.4" y="1166.8" textLength="1110.2"
clip-path="url(#breeze-help-line-47)">Tools that release managers can use to prepare and manage
[...]
+</text><text class="breeze-help-r4" x="0" y="1191.2" textLength="12.2"
clip-path="url(#breeze-help-line-48)">│</text><text class="breeze-help-r5"
x="24.4" y="1191.2" textLength="280.6"
clip-path="url(#breeze-help-line-48)">sbom                   </text><text
class="breeze-help-r2" x="329.4" y="1191.2" textLength="1110.2"
clip-path="url(#breeze-help-line-48)">Tools that release ma [...]
+</text><text class="breeze-help-r4" x="0" y="1215.6" textLength="1464"
clip-path="url(#breeze-help-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="1215.6" textLength="12.2"
clip-path="url(#breeze-help-line-49)">
+</text><text class="breeze-help-r4" x="0" y="1240" textLength="24.4"
clip-path="url(#breeze-help-line-50)">╭─</text><text class="breeze-help-r4"
x="24.4" y="1240" textLength="195.2"
clip-path="url(#breeze-help-line-50)"> Other commands </text><text
class="breeze-help-r4" x="219.6" y="1240" textLength="1220"
clip-path="url(#breeze-help-line-50)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class="breeze-hel [...]
+</text><text class="breeze-help-r4" x="0" y="1264.4" textLength="12.2"
clip-path="url(#breeze-help-line-51)">│</text><text class="breeze-help-r5"
x="24.4" y="1264.4" textLength="122"
clip-path="url(#breeze-help-line-51)">setup     </text><text
class="breeze-help-r2" x="170.8" y="1264.4" textLength="1268.8"
clip-path="url(#breeze-help-line-51)">Tools that developers can use to configure Breeze      &
[...]
+</text><text class="breeze-help-r4" x="0" y="1288.8" textLength="12.2"
clip-path="url(#breeze-help-line-52)">│</text><text class="breeze-help-r5"
x="24.4" y="1288.8" textLength="122"
clip-path="url(#breeze-help-line-52)">ci        </text><text
class="breeze-help-r2" x="170.8" y="1288.8" textLength="1268.8"
clip-path="url(#breeze-help-line-52)">Tools that CI workflows use to cleanup/manage CI environment 
[...]
+</text><text class="breeze-help-r4" x="0" y="1313.2" textLength="1464"
clip-path="url(#breeze-help-line-53)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-help-r2" x="1464" y="1313.2" textLength="12.2"
clip-path="url(#breeze-help-line-53)">
</text>
</g>
</g>
diff --git a/images/breeze/output_testing_docker-compose-tests.svg
b/images/breeze/output_testing_docker-compose-tests.svg
index 05dbac74ef..d927ea3dfc 100644
--- a/images/breeze/output_testing_docker-compose-tests.svg
+++ b/images/breeze/output_testing_docker-compose-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 635.5999999999999"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 586.8"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-testing-docker-compose-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="584.5999999999999" />
+ <rect x="0" y="0" width="1463.0" height="535.8" />
</clipPath>
<clipPath id="breeze-testing-docker-compose-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -108,15 +108,9 @@
<clipPath id="breeze-testing-docker-compose-tests-line-20">
<rect x="0" y="489.5" width="1464" height="24.65"/>
</clipPath>
-<clipPath id="breeze-testing-docker-compose-tests-line-21">
- <rect x="0" y="513.9" width="1464" height="24.65"/>
- </clipPath>
-<clipPath id="breeze-testing-docker-compose-tests-line-22">
- <rect x="0" y="538.3" width="1464" height="24.65"/>
- </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="633.6" rx="8"/><text
class="breeze-testing-docker-compose-tests-title" fill="#c5c8c6"
text-anchor="middle" x="740"
y="27">Command: testing docker-compose-tests</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="584.8" rx="8"/><text
class="breeze-testing-docker-compose-tests-title" fill="#c5c8c6"
text-anchor="middle" x="740"
y="27">Command: testing docker-compose-tests</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -140,16 +134,14 @@
</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="288.4"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-11)">│</text><text
class="breeze-testing-docker-compose-tests-r7" x="463.6" y="288.4"
textLength="732"
clip-path="url(#breeze-testing-docker-compose-tests-line-11)">(>3.8< | 3.9 | 3.10 | 3.11)                   
[...]
</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="312.8"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-12)">│</text><text
class="breeze-testing-docker-compose-tests-r4" x="463.6" y="312.8"
textLength="732"
clip-path="url(#breeze-testing-docker-compose-tests-line-12)">[default: 3.8]                          &
[...]
</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="337.2"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-13)">│</text><text
class="breeze-testing-docker-compose-tests-r5" x="24.4" y="337.2"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-13)">-</text><text
class="breeze-testing-docker-compose-tests-r5" x="36.6" y="337.2"
textLength="61"
clip-path="url(#breeze-testing-docker-compose-tests-line-13)">-skip</text><text
[...]
-</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="361.6"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-14)">│</text><text
class="breeze-testing-docker-compose-tests-r5" x="24.4" y="361.6"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-14)">-</text><text
class="breeze-testing-docker-compose-tests-r5" x="36.6" y="361.6"
textLength="61"
clip-path="url(#breeze-testing-docker-compose-tests-line-14)">-wait</text><text
[...]
-</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="386"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-15)">│</text><text
class="breeze-testing-docker-compose-tests-r4" x="463.6" y="386"
textLength="646.6"
clip-path="url(#breeze-testing-docker-compose-tests-line-15)">[default: 300; 0<=x<=600]                       
[...]
-</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="410.4"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-16)">│</text><text
class="breeze-testing-docker-compose-tests-r5" x="24.4" y="410.4"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-16)">-</text><text
class="breeze-testing-docker-compose-tests-r5" x="36.6" y="410.4"
textLength="85.4"
clip-path="url(#breeze-testing-docker-compose-tests-line-16)">-github</text><t
[...]
-</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="434.8"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-17)">│</text><text
class="breeze-testing-docker-compose-tests-r4" x="463.6" y="434.8"
textLength="585.6"
clip-path="url(#breeze-testing-docker-compose-tests-line-17)">[default: apache/airflow]                       </text
[...]
-</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="459.2"
textLength="1464"
clip-path="url(#breeze-testing-docker-compose-tests-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-testing-docker-compose-tests-r2" x="1464" y="459.2"
textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-18)">
-</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="483.6"
textLength="24.4"
clip-path="url(#breeze-testing-docker-compose-tests-line-19)">╭─</text><text
class="breeze-testing-docker-compose-tests-r4" x="24.4" y="483.6"
textLength="195.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-19)"> Common options </text><text
class="breeze-testing-docker-compose-tests-r4" x="219.6" y="483.6"
textLength="1220" clip-path="url(#breeze-testing-docker-compose [...]
-</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="508"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-20)">│</text><text
class="breeze-testing-docker-compose-tests-r5" x="24.4" y="508"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-20)">-</text><text
class="breeze-testing-docker-compose-tests-r5" x="36.6" y="508"
textLength="97.6"
clip-path="url(#breeze-testing-docker-compose-tests-line-20)">-verbose</text><text
c [...]
-</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="532.4"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-21)">│</text><text
class="breeze-testing-docker-compose-tests-r5" x="24.4" y="532.4"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-21)">-</text><text
class="breeze-testing-docker-compose-tests-r5" x="36.6" y="532.4"
textLength="48.8"
clip-path="url(#breeze-testing-docker-compose-tests-line-21)">-dry</text><text
[...]
-</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="556.8"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-22)">│</text><text
class="breeze-testing-docker-compose-tests-r5" x="24.4" y="556.8"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-22)">-</text><text
class="breeze-testing-docker-compose-tests-r5" x="36.6" y="556.8"
textLength="61"
clip-path="url(#breeze-testing-docker-compose-tests-line-22)">-help</text><text
[...]
-</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="581.2"
textLength="1464"
clip-path="url(#breeze-testing-docker-compose-tests-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-testing-docker-compose-tests-r2" x="1464" y="581.2"
textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-23)">
+</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="361.6"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-14)">│</text><text
class="breeze-testing-docker-compose-tests-r5" x="24.4" y="361.6"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-14)">-</text><text
class="breeze-testing-docker-compose-tests-r5" x="36.6" y="361.6"
textLength="85.4"
clip-path="url(#breeze-testing-docker-compose-tests-line-14)">-github</text><t
[...]
+</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="386"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-15)">│</text><text
class="breeze-testing-docker-compose-tests-r4" x="463.6" y="386"
textLength="585.6"
clip-path="url(#breeze-testing-docker-compose-tests-line-15)">[default: apache/airflow]                       </text><te
[...]
+</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="410.4"
textLength="1464"
clip-path="url(#breeze-testing-docker-compose-tests-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-testing-docker-compose-tests-r2" x="1464" y="410.4"
textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-16)">
+</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="434.8"
textLength="24.4"
clip-path="url(#breeze-testing-docker-compose-tests-line-17)">╭─</text><text
class="breeze-testing-docker-compose-tests-r4" x="24.4" y="434.8"
textLength="195.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-17)"> Common options </text><text
class="breeze-testing-docker-compose-tests-r4" x="219.6" y="434.8"
textLength="1220" clip-path="url(#breeze-testing-docker-compose [...]
+</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="459.2"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-18)">│</text><text
class="breeze-testing-docker-compose-tests-r5" x="24.4" y="459.2"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-18)">-</text><text
class="breeze-testing-docker-compose-tests-r5" x="36.6" y="459.2"
textLength="97.6"
clip-path="url(#breeze-testing-docker-compose-tests-line-18)">-verbose</text><
[...]
+</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="483.6"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-19)">│</text><text
class="breeze-testing-docker-compose-tests-r5" x="24.4" y="483.6"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-19)">-</text><text
class="breeze-testing-docker-compose-tests-r5" x="36.6" y="483.6"
textLength="48.8"
clip-path="url(#breeze-testing-docker-compose-tests-line-19)">-dry</text><text
[...]
+</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="508"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-20)">│</text><text
class="breeze-testing-docker-compose-tests-r5" x="24.4" y="508"
textLength="12.2"
clip-path="url(#breeze-testing-docker-compose-tests-line-20)">-</text><text
class="breeze-testing-docker-compose-tests-r5" x="36.6" y="508" textLength="61"
clip-path="url(#breeze-testing-docker-compose-tests-line-20)">-help</text><text
class= [...]
+</text><text class="breeze-testing-docker-compose-tests-r4" x="0" y="532.4"
textLength="1464"
clip-path="url(#breeze-testing-docker-compose-tests-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-testing-docker-compose-tests-r2" x="1464" y="532.4"
textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-21)">
</text>
</g>
</g>