From 5a33ae9ac2aa56686ad041226d4aa00675ab20c2 Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Mon, 23 Oct 2023 21:05:56 +0800 Subject: [PATCH] add commmnad line options --- jpacrepo_uploader/uploader.py | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/jpacrepo_uploader/uploader.py b/jpacrepo_uploader/uploader.py index 95bf08b..0ea6c9e 100644 --- a/jpacrepo_uploader/uploader.py +++ b/jpacrepo_uploader/uploader.py @@ -20,6 +20,7 @@ from progress import Progress from progress.bar import Bar from typing import Optional, Any from typing_extensions import Self +from argparse import ArgumentParser, Action from .config import load_configuration, Config @@ -117,13 +118,16 @@ class XferProgress: class JpacrepoClient: - def __init__(self, config: Config): + def __init__(self, config: Config, **kwargs): self.config: Config = config self.token: Optional[TokenResponse] = None self.provider_config: ProviderConfig = fetch_provider_config(self.config.auth_server_url) self.token_expiry: Optional[int] = None self.cond = Condition() self.thread: Optional[Thread] = None + self.verbose: bool = kwargs.get('verbose', False) + self.http2: bool = kwargs.get('http2', False) + self.http3: bool = kwargs.get('http3', False) def __enter__(self) -> Self: return self @@ -276,8 +280,12 @@ class JpacrepoClient: curl.setopt(pycurl.XFERINFOFUNCTION, progress_callback) curl.setopt(pycurl.NOPROGRESS, False) - curl.setopt(pycurl.VERBOSE, False) + curl.setopt(pycurl.VERBOSE, self.verbose) curl.setopt(pycurl.CAINFO, certifi.where()) + if self.http2: + curl.setopt(pycurl.HTTP_VERSION, pycurl.CURL_HTTP_VERSION_2) + if self.http3: + curl.setopt(pycurl.HTTP_VERSION, pycurl.CURL_HTTP_VERSION_3) with open(str(file_path), 'rb') as file: curl.setopt(pycurl.READDATA, file) @@ -288,8 +296,25 @@ class JpacrepoClient: def main() -> None: + parser = ArgumentParser( + prog='jpacrepo-uploader', + description='CLI utility', + epilog='Text at the bottom of help') + parser.add_argument('-v', '--verbose', + default=False, + action='store_true', + help="Enable verbose output") + parser.add_argument('-2', '--http2', + default=True, + action='store_true', + help="Enable HTTP/2 protocol") + parser.add_argument('-3', '--http3', + default=False, + action='store_true', + help="Enable HTTP/3 protocol") + args = parser.parse_args() logging.basicConfig(encoding='utf-8', level=logging.INFO) - with JpacrepoClient(load_configuration()) as client: + with JpacrepoClient(load_configuration(), **args.__dict__) as client: client.authenticate() files = client.packages_to_upload() if len(files):