From d0374c0d7c04cabfb2889939313f495dd45911ec Mon Sep 17 00:00:00 2001 From: DavHau Date: Mon, 11 Aug 2025 11:28:40 +0700 Subject: [PATCH] vars/keygen: add --no-interactive flags This is useful to force on-interactive mode with automatic key selection. In unit tests this is necessary. When debugging a test on a real terminal interactive mode is not desired --- pkgs/clan-cli/clan_cli/tests/age_keys.py | 1 + pkgs/clan-cli/clan_cli/vars/keygen.py | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/tests/age_keys.py b/pkgs/clan-cli/clan_cli/tests/age_keys.py index b3efb9217..ef10335f6 100644 --- a/pkgs/clan-cli/clan_cli/tests/age_keys.py +++ b/pkgs/clan-cli/clan_cli/tests/age_keys.py @@ -37,6 +37,7 @@ class SopsSetup: str(flake_path), "--user", self.user, + "--no-interactive", ] ) diff --git a/pkgs/clan-cli/clan_cli/vars/keygen.py b/pkgs/clan-cli/clan_cli/vars/keygen.py index c969ff73d..c26813bd1 100644 --- a/pkgs/clan-cli/clan_cli/vars/keygen.py +++ b/pkgs/clan-cli/clan_cli/vars/keygen.py @@ -137,11 +137,18 @@ def create_secrets_user_auto( def _command( args: argparse.Namespace, ) -> None: - create_secrets_user_auto( - flake_dir=args.flake.path, - user=args.user, - force=args.force, - ) + if args.no_interactive: + create_secrets_user( + flake_dir=args.flake.path, + user=args.user, + force=args.force, + ) + else: + create_secrets_user_auto( + flake_dir=args.flake.path, + user=args.user, + force=args.force, + ) def register_keygen_parser(parser: argparse.ArgumentParser) -> None: @@ -155,4 +162,10 @@ def register_keygen_parser(parser: argparse.ArgumentParser) -> None: "-f", "--force", help="overwrite existing user", action="store_true" ) + parser.add_argument( + "--no-interactive", + help="Run in non-interactive mode, using keys from the machine if available", + action="store_true", + ) + parser.set_defaults(func=_command)