From 31a2d90df9d644940dba9011e89bc48632dfc615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Thu, 3 Aug 2023 15:22:22 +0200 Subject: [PATCH] cli: fix installation of subpackages --- pkgs/clan-cli/clan_cli/__init__.py | 49 ++++++++++++++++++++++++++-- pkgs/clan-cli/clan_cli/cli.py | 52 ------------------------------ pkgs/clan-cli/pyproject.toml | 6 ++-- 3 files changed, 50 insertions(+), 57 deletions(-) delete mode 100644 pkgs/clan-cli/clan_cli/cli.py diff --git a/pkgs/clan-cli/clan_cli/__init__.py b/pkgs/clan-cli/clan_cli/__init__.py index 7e5cb3451..acb72c483 100644 --- a/pkgs/clan-cli/clan_cli/__init__.py +++ b/pkgs/clan-cli/clan_cli/__init__.py @@ -1,6 +1,51 @@ -# !/usr/bin/env python3 +import argparse +import sys + +from . import admin, secrets, ssh +from .errors import ClanError + +has_argcomplete = True +try: + import argcomplete +except ImportError: + has_argcomplete = False + + +# this will be the entrypoint under /bin/clan (see pyproject.toml config) +def main() -> None: + parser = argparse.ArgumentParser(description="cLAN tool") + subparsers = parser.add_subparsers() + + parser_admin = subparsers.add_parser("admin") + admin.register_parser(parser_admin) + + # Currently broken + # parser_config = subparsers.add_parser("config") + # try: + # config.register_parser(parser_config) + # except subprocess.CalledProcessError as e: + # warn(f"The config command does not work in the nix sandbox: {e}") + + parser_ssh = subparsers.add_parser("ssh", help="ssh to a remote machine") + ssh.register_parser(parser_ssh) + + parser_secrets = subparsers.add_parser("secrets", help="manage secrets") + secrets.register_parser(parser_secrets) + + if has_argcomplete: + argcomplete.autocomplete(parser) + + if len(sys.argv) == 1: + parser.print_help() + + args = parser.parse_args() + if hasattr(args, "func"): + try: + args.func(args) + except ClanError as e: + print(f"{sys.argv[0]}: {e}") + sys.exit(1) -from .cli import main if __name__ == "__main__": main() diff --git a/pkgs/clan-cli/clan_cli/cli.py b/pkgs/clan-cli/clan_cli/cli.py deleted file mode 100644 index 4868c6557..000000000 --- a/pkgs/clan-cli/clan_cli/cli.py +++ /dev/null @@ -1,52 +0,0 @@ -import argparse -import subprocess -import sys - -from . import admin, config, secrets, ssh -from .errors import ClanError -from .tty import warn - -has_argcomplete = True -try: - import argcomplete -except ImportError: - has_argcomplete = False - - -# this will be the entrypoint under /bin/clan (see pyproject.toml config) -def main() -> None: - parser = argparse.ArgumentParser(description="cLAN tool") - subparsers = parser.add_subparsers() - - parser_admin = subparsers.add_parser("admin") - admin.register_parser(parser_admin) - - parser_config = subparsers.add_parser("config") - try: - config.register_parser(parser_config) - except subprocess.CalledProcessError as e: - warn(f"The config command does not work in the nix sandbox: {e}") - - parser_ssh = subparsers.add_parser("ssh", help="ssh to a remote machine") - ssh.register_parser(parser_ssh) - - parser_secrets = subparsers.add_parser("secrets", help="manage secrets") - secrets.register_parser(parser_secrets) - - if has_argcomplete: - argcomplete.autocomplete(parser) - - if len(sys.argv) == 1: - parser.print_help() - - args = parser.parse_args() - if hasattr(args, "func"): - try: - args.func(args) - except ClanError as e: - print(f"{sys.argv[0]}: {e}") - sys.exit(1) - - -if __name__ == "__main__": - main() diff --git a/pkgs/clan-cli/pyproject.toml b/pkgs/clan-cli/pyproject.toml index 58067e661..aefca3dda 100644 --- a/pkgs/clan-cli/pyproject.toml +++ b/pkgs/clan-cli/pyproject.toml @@ -6,10 +6,10 @@ build-backend = "setuptools.build_meta" name = "clan" description = "cLAN CLI tool" dynamic = [ "version" ] -scripts = { clan = "clan_cli:main" } +scripts = { clan = "clan_cli.cli:main" } -[tool.setuptools] -packages = [ "clan_cli" ] +[tool.setuptools.packages] +find = {} [tool.pytest.ini_options] addopts = "--cov . --cov-report term --cov-report html:.reports/html --no-cov-on-fail"