GRM-7: feat: integrate AnsibleExecutor and i18n into CLI and RunnerManager
This commit is contained in:
@@ -8,55 +8,55 @@ import click
|
||||
from dotenv import load_dotenv # pyright: ignore[reportMissingImports,reportUnknownVariableType]
|
||||
|
||||
from .exceptions import GRMError
|
||||
from .i18n import _
|
||||
from .runner_manager import RunnerManager
|
||||
|
||||
load_dotenv(override=True)
|
||||
|
||||
|
||||
@click.group()
|
||||
@click.group(help=_("Gitea Runner Manager — manage Gitea Actions runners."))
|
||||
@click.version_option(version="0.1.0")
|
||||
def cli() -> None:
|
||||
"""Gitea Runner Manager — manage Gitea Actions runners."""
|
||||
pass
|
||||
|
||||
|
||||
@cli.command()
|
||||
@cli.command(help=_("Install and configure a Gitea Runner on a remote host."))
|
||||
@click.argument("host")
|
||||
@click.option(
|
||||
"--user",
|
||||
"-u",
|
||||
default=lambda: os.getenv("GITEA_RUNNER_USER", os.getlogin()),
|
||||
help="SSH user",
|
||||
help=_("SSH user"),
|
||||
)
|
||||
@click.option("--key", "-k", default=lambda: os.getenv("GITEA_RUNNER_KEY"), help="Path to SSH private key")
|
||||
@click.option("--name", "-n", help="Runner name (default: host)")
|
||||
@click.option("--key", "-k", default=lambda: os.getenv("GITEA_RUNNER_KEY"), help=_("Path to SSH private key"))
|
||||
@click.option("--name", "-n", help=_("Gitea Runner name (default: host)"))
|
||||
@click.option(
|
||||
"--token",
|
||||
"-t",
|
||||
default=lambda: os.getenv("GITEA_REGISTRATION_TOKEN"),
|
||||
help="Registration token (env: GITEA_REGISTRATION_TOKEN)",
|
||||
help=_("Registration token (env: GITEA_REGISTRATION_TOKEN)"),
|
||||
)
|
||||
@click.option(
|
||||
"--mode",
|
||||
"-m",
|
||||
type=click.Choice(["docker", "binary"]),
|
||||
default="docker",
|
||||
help="Runner deployment mode (default: docker)",
|
||||
help=_("Gitea Runner deployment mode (default: docker)"),
|
||||
)
|
||||
@click.option(
|
||||
"--admin-token",
|
||||
"-a",
|
||||
default=lambda: os.getenv("GITEA_ADMIN_TOKEN"),
|
||||
help="Gitea admin API token for integration test (env: GITEA_ADMIN_TOKEN)",
|
||||
help=_("Gitea admin API token for integration test (env: GITEA_ADMIN_TOKEN)"),
|
||||
)
|
||||
@click.option(
|
||||
"--integration-retries",
|
||||
"-r",
|
||||
type=int,
|
||||
default=lambda: int(os.getenv("GITEA_INTEGRATION_RETRIES", "3")),
|
||||
help="Integration test API retries (default: 3, env: GITEA_INTEGRATION_RETRIES)",
|
||||
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", is_flag=True, help=_("Prompt for sudo password"))
|
||||
def install(
|
||||
host: str,
|
||||
user: str,
|
||||
@@ -68,12 +68,9 @@ def install(
|
||||
integration_retries: int,
|
||||
ask_become_pass: bool,
|
||||
) -> None:
|
||||
"""Install and configure a runner on a remote host."""
|
||||
gitea_url = os.getenv("GITEA_URL", "")
|
||||
if not gitea_url:
|
||||
raise click.ClickException("GITEA_URL must be set")
|
||||
if not token:
|
||||
raise click.ClickException("GITEA_REGISTRATION_TOKEN must be set (or pass --token)")
|
||||
raise click.ClickException(_("GITEA_URL must be set (or pass --url)"))
|
||||
manager = RunnerManager()
|
||||
try:
|
||||
manager.install(
|
||||
@@ -89,27 +86,27 @@ def install(
|
||||
ask_become_pass=ask_become_pass,
|
||||
)
|
||||
except GRMError as e:
|
||||
raise click.ClickException(str(e)) from e
|
||||
raise click.ClickException(_("Installation failed: {error}", error=e)) from e
|
||||
|
||||
|
||||
@cli.command()
|
||||
@cli.command(help=_("Update the Gitea Runner binary on a remote host."))
|
||||
@click.argument("host")
|
||||
@click.option(
|
||||
"--user",
|
||||
"-u",
|
||||
default=lambda: os.getenv("GITEA_RUNNER_USER", os.getlogin()),
|
||||
help="SSH user",
|
||||
help=_("SSH user"),
|
||||
)
|
||||
@click.option("--key", "-k", default=lambda: os.getenv("GITEA_RUNNER_KEY"), help="Path to SSH private key")
|
||||
@click.option("--version", "-v", help="Specific gitea_runner version")
|
||||
@click.option("--key", "-k", default=lambda: os.getenv("GITEA_RUNNER_KEY"), help=_("Path to SSH private key"))
|
||||
@click.option("--version", "-v", help=_("Specific Gitea Runner version"))
|
||||
@click.option(
|
||||
"--mode",
|
||||
"-m",
|
||||
type=click.Choice(["docker", "binary"]),
|
||||
default="docker",
|
||||
help="Runner deployment mode (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", is_flag=True, help=_("Prompt for sudo password"))
|
||||
def update(
|
||||
host: str,
|
||||
user: str,
|
||||
@@ -118,7 +115,6 @@ def update(
|
||||
mode: str,
|
||||
ask_become_pass: bool,
|
||||
) -> None:
|
||||
"""Update the gitea_runner binary on a remote host."""
|
||||
manager = RunnerManager()
|
||||
try:
|
||||
manager.update(
|
||||
@@ -130,4 +126,4 @@ def update(
|
||||
ask_become_pass=ask_become_pass,
|
||||
)
|
||||
except GRMError as e:
|
||||
raise click.ClickException(str(e)) from e
|
||||
raise click.ClickException(_("Update failed: {error}", error=e)) from e
|
||||
|
||||
Reference in New Issue
Block a user