Bowrna commented on code in PR #22713:
URL: https://github.com/apache/airflow/pull/22713#discussion_r841357528


##########
dev/breeze/src/airflow_breeze/breeze.py:
##########
@@ -19,77 +19,414 @@
 import shutil
 import subprocess
 import sys
+from dataclasses import dataclass
 from pathlib import Path
-from typing import Optional, Tuple
+from typing import List, Optional, Tuple
+
+from airflow_breeze.shell.shell_params import ShellParams
 
 try:
+    # We handle ImportError so that click autocomplete works
     import rich_click as click
+
+    click.rich_click.SHOW_METAVARS_COLUMN = False
+    click.rich_click.APPEND_METAVARS_HELP = True
+    click.rich_click.STYLE_ERRORS_SUGGESTION = "bright_blue italic"
+    click.rich_click.ERRORS_SUGGESTION = "\nTry running the '--help' flag for 
more information.\n"
+    click.rich_click.ERRORS_EPILOGUE = (
+        "\nTo find out more, visit 
[bright_blue]https://github.com/apache/airflow/blob/main/BREEZE.rst[/]\n";
+    )
+    click.rich_click.OPTION_GROUPS = {
+        "Breeze2": [
+            {
+                "name": "Basic flags for the default (shell) command",
+                "options": [
+                    "--python",
+                    "--backend",
+                    "--use-airflow-version",
+                    "--postgres-version",
+                    "--mysql-version",
+                    "--mssql-version",
+                    "--forward-credentials",
+                    "--db-reset",
+                ],
+            },
+            {
+                "name": "Advanced flags for the default (shell) command",
+                "options": [
+                    "--force-build",
+                    "--mount-sources",
+                    "--integration",
+                ],
+            },
+        ],
+        "Breeze2 shell": [
+            {
+                "name": "Basic flags",
+                "options": [
+                    "--python",
+                    "--backend",
+                    "--use-airflow-version",
+                    "--postgres-version",
+                    "--mysql-version",
+                    "--mssql-version",
+                    "--forward-credentials",
+                    "--db-reset",
+                ],
+            },
+            {
+                "name": "Advanced flag for running",
+                "options": [
+                    "--force-build",
+                    "--mount-sources",
+                    "--integration",
+                ],
+            },
+        ],
+        "Breeze2 start-airflow": [
+            {
+                "name": "Basic flags",
+                "options": [
+                    "--python",
+                    "--backend",
+                    "--use-airflow-version",
+                    "--postgres-version",
+                    "--mysql-version",
+                    "--mssql-version",
+                    "--load-example-dags",
+                    "--load-default-connections",
+                    "--forward-credentials",
+                    "--db-reset",
+                ],
+            },
+            {
+                "name": "Advanced flag for running",
+                "options": [
+                    "--force-build",
+                    "--mount-sources",
+                    "--integration",
+                ],
+            },
+        ],
+        "Breeze2 build-image": [
+            {
+                "name": "Basic usage",
+                "options": [
+                    "--python",
+                    "--upgrade-to-newer-dependencies",
+                    "--debian-version",
+                    "--image-tag",
+                    "--docker-cache",
+                    "--github-repository",
+                ],
+            },
+            {
+                "name": "Advanced options (for power users)",
+                "options": [
+                    "--install-providers-from-sources",
+                    "--additional-extras",
+                    "--additional-dev-apt-deps",
+                    "--additional-runtime-apt-deps",
+                    "--additional-python-deps",
+                    "--additional-dev-apt-command",
+                    "--runtime-apt-command",
+                    "--additional-dev-apt-env",
+                    "--additional-runtime-apt-env",
+                    "--additional-runtime-apt-command",
+                    "--dev-apt-command",
+                    "--dev-apt-deps",
+                    "--runtime-apt-deps",
+                ],
+            },
+            {
+                "name": "Preparing cache (for maintainers)",
+                "options": [
+                    "--platform",
+                    "--prepare-buildx-cache",
+                ],
+            },
+        ],
+        "Breeze2 build-prod-image": [
+            {
+                "name": "Basic usage",
+                "options": [
+                    "--python",
+                    "--install-airflow-version",
+                    "--upgrade-to-newer-dependencies",
+                    "--debian-version",
+                    "--image-tag",
+                    "--docker-cache",
+                    "--github-repository",
+                ],
+            },
+            {
+                "name": "Options for customizing images",
+                "options": [
+                    "--install-providers-from-sources",
+                    "--extras",
+                    "--additional-extras",
+                    "--additional-dev-apt-deps",
+                    "--additional-runtime-apt-deps",
+                    "--additional-python-deps",
+                    "--additional-dev-apt-command",
+                    "--runtime-apt-command",
+                    "--additional-dev-apt-env",
+                    "--additional-runtime-apt-env",
+                    "--additional-runtime-apt-command",
+                    "--dev-apt-command",
+                    "--dev-apt-deps",
+                    "--runtime-apt-deps",
+                ],
+            },
+            {
+                "name": "Customization options (for specific customization 
needs)",
+                "options": [
+                    "--install-from-docker-context-files",
+                    "--cleanup-docker-context-files",
+                    "--disable-mysql-client-installation",
+                    "--disable-mssql-client-installation",
+                    "--disable-postgres-client-installation",
+                    "--disable-airflow-repo-cache",
+                    "--disable-pypi",
+                    "--install-airflow-reference",
+                    "--installation-method",
+                ],
+            },
+            {
+                "name": "Preparing cache (for maintainers)",
+                "options": [
+                    "--platform",
+                    "--prepare-buildx-cache",
+                ],
+            },
+        ],
+        "Breeze2 static-check": [
+            {
+                "name": "Pre-commit flags",
+                "options": [
+                    "--type",
+                    "--files",
+                    "--all-files",
+                    "--show-diff-on-failure",
+                    "--last-commit",
+                ],
+            },
+        ],
+        "Breeze2 build-docs": [
+            {
+                "name": "Doc flags",
+                "options": [
+                    "--docs-only",
+                    "--spellcheck-only",
+                    "--package-filter",
+                ],
+            },
+        ],
+        "Breeze2 stop": [
+            {
+                "name": "Stop flags",
+                "options": [
+                    "--preserve-volumes",
+                ],
+            },
+        ],
+        "Breeze2 setup-autocomplete": [
+            {
+                "name": "Setup autocomplete flags",
+                "options": [
+                    "--force-setup",
+                ],
+            },
+        ],
+        "Breeze2 config": [
+            {
+                "name": "Config flags",
+                "options": [
+                    "--python",
+                    "--backend",
+                    "--cheatsheet",
+                    "--asciiart",
+                ],
+            },
+        ],
+    }
+
+    click.rich_click.COMMAND_GROUPS = {
+        "Breeze2": [
+            {
+                "name": "Developer tools",
+                "commands": [
+                    "shell",
+                    "start-airflow",
+                    "stop",
+                    "build-image",
+                    "build-prod-image",
+                    "build-docs",
+                    "static-check",
+                ],
+            },
+            {
+                "name": "Configuration & maintenance",
+                "commands": ["cleanup", "setup-autocomplete", "config", 
"version"],
+            },
+        ]
+    }
+

Review Comment:
   Woah this is really cool :)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to