GRM-18: feat: make --ask-become-pass the default behavior

- Change --ask-become-pass from opt-in to opt-out across all commands
  (install, update, start, stop, enable, disable, status, remove)
- Use Click toggle pattern: --ask-become-pass/--no-ask-become-pass with
  default=True so users are always prompted for sudo unless they
  explicitly opt out
- Update i18n translations for both help texts
- Update all CLI tests to expect ask_become_pass=True as default and
  add test for --no-ask-become-pass
- Update README: remove --ask-become-pass from examples, document
  --no-ask-become-pass for passwordless-sudo setups
- 120 tests, 100% coverage, pyright clean, ruff clean
This commit is contained in:
Emil Simeonov
2026-06-19 02:11:38 +02:00
parent 18760f6a2a
commit ebb1088a8c
4 changed files with 71 additions and 31 deletions
+15 -3
View File
@@ -20,7 +20,11 @@ load_dotenv(override=True)
def _runner_options(func: Callable[..., Any]) -> Callable[..., Any]:
"""Apply common override options for registry-based lifecycle commands."""
func = click.option("--ask-become-pass", is_flag=True, help=_("Prompt for sudo password"))(func)
func = click.option(
"--ask-become-pass/--no-ask-become-pass",
default=True,
help=_("Prompt for sudo password (default)"),
)(func)
func = click.option("--key", "-k", help=_("Override SSH key from registry"))(func)
func = click.option("--user", "-u", help=_("Override user from registry"))(func)
func = click.option("--host", help=_("Override host from registry"))(func)
@@ -85,7 +89,11 @@ def cli() -> None:
default=lambda: int(os.getenv("GITEA_INTEGRATION_RETRIES", "3")),
help=_("Integration test API retries (default: 3, env: GITEA_INTEGRATION_RETRIES)"),
)
@click.option("--ask-become-pass", is_flag=True, help=_("Prompt for sudo password"))
@click.option(
"--ask-become-pass/--no-ask-become-pass",
default=True,
help=_("Prompt for sudo password (default)"),
)
def install(
host: str,
user: str,
@@ -132,7 +140,11 @@ def install(
default="docker",
help=_("Gitea Runner deployment mode (default: docker)"),
)
@click.option("--ask-become-pass", is_flag=True, help=_("Prompt for sudo password"))
@click.option(
"--ask-become-pass/--no-ask-become-pass",
default=True,
help=_("Prompt for sudo password (default)"),
)
@_handle_errors("Update failed: {error}")
def update(
host: str,