From 1b9eed87b9a5fe818af24d778838422408b34866 Mon Sep 17 00:00:00 2001 From: klemek Date: Mon, 20 Apr 2026 21:25:51 +0200 Subject: [PATCH] fix: allow args before/after command --- DEVELOPMENT.md | 1 - README.md | 10 ++++------ src/params.py | 34 +++++++++++++++++++++++++--------- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index c8b031e..f9c510d 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -67,6 +67,5 @@ docker-run docker run - [x] X-Proxy - [x] detect root certificate change and update server - [x] detect tokens change and update token_manager -- [ ] allow args before/after command - [x] proper doc diff --git a/README.md b/README.md index 2837a5a..704644b 100644 --- a/README.md +++ b/README.md @@ -49,10 +49,8 @@ See [Docker](#docker) for a quick deployable server. Full CLI Help ```txt -usage: stapler [-h] [--debug | --no-debug] [-d DATA_DIR] [--certificates | --no-certificates] [--certbot | --no-certbot] - [--self-signed-path SELF_SIGNED_PATH] [--certbot-conf CERTBOT_CONF] [--certbot-www CERTBOT_WWW] - [--host HOST] [--http-port HTTP_PORT] [--https-port HTTPS_PORT] [--https | --no-https] [-t TOKEN_SALT] - [--max-size-bytes MAX_SIZE] [-b BIND] +usage: stapler [-h] [--debug | --no-debug] [-d DATA_DIR] [--certificates | --no-certificates] [--self-signed-path SELF_SIGNED_PATH] [--certbot | --no-certbot] [--certbot-conf CERTBOT_CONF] [--certbot-www CERTBOT_WWW] [--host HOST] + [--http-port HTTP_PORT] [--https-port HTTPS_PORT] [--https | --no-https] [-t TOKEN_SALT] [--max-size-bytes MAX_SIZE] [-b BIND] COMMAND ... Static pages as simple as a gzip file @@ -70,10 +68,10 @@ options: directory where pages are/will be stored (default: ./data) --certificates, --no-certificates Handle certificates (default: true) - --certbot, --no-certbot - Use Certbot (default: true) --self-signed-path SELF_SIGNED_PATH Self-signed certificates dir (default: ./data/.certificates) + --certbot, --no-certbot + Use Certbot (default: true) --certbot-conf CERTBOT_CONF Certbot config dir (default: /etc/letsencrypt) --certbot-www CERTBOT_WWW diff --git a/src/params.py b/src/params.py index 531a50d..e70b986 100644 --- a/src/params.py +++ b/src/params.py @@ -75,6 +75,22 @@ def __add_arg_int( ) +def __add_arg_bool( + parser: argparse.ArgumentParser, + *flags: str, + default: bool, + help_txt: str, + dest: str | None = None, +) -> None: + parser.add_argument( + *flags, + action=argparse.BooleanOptionalAction, + help=f"{help_txt} (default: {str(default).lower()})", + default=default, + dest=dest, + ) + + def parse_parameters(args: typing.Sequence[str]) -> Parameters: default_values = Parameters() parser = argparse.ArgumentParser( @@ -94,11 +110,11 @@ def parse_parameters(args: typing.Sequence[str]) -> Parameters: default=default_values.data_dir, help_txt="directory where pages are/will be stored", ) - parser.add_argument( + __add_arg_bool( + parser, "--certificates", - action=argparse.BooleanOptionalAction, - help="Handle certificates (default: true)", default=default_values.with_certificates, + help_txt="Handle certificates", dest="with_certificates", ) __add_arg_str( @@ -108,11 +124,11 @@ def parse_parameters(args: typing.Sequence[str]) -> Parameters: default=default_values.self_signed_path, help_txt="Self-signed certificates dir", ) - parser.add_argument( + __add_arg_bool( + parser, "--certbot", - action=argparse.BooleanOptionalAction, - help="Use Certbot (default: true)", default=default_values.with_certbot, + help_txt="Use Certbot", dest="with_certbot", ) __add_arg_str( @@ -150,11 +166,11 @@ def parse_parameters(args: typing.Sequence[str]) -> Parameters: default=default_values.https_port, help_txt="server https port", ) - parser.add_argument( + __add_arg_bool( + parser, "--https", - action=argparse.BooleanOptionalAction, - help="Use https (implies --certificates) (default: true)", default=default_values.https, + help_txt="Use https (implies --certificates)", ) __add_arg_str( parser,