From da0c43c0f950bb2dd862e8f9c28578ee86d80d36 Mon Sep 17 00:00:00 2001 From: hydrargyrum Date: Sun, 26 Feb 2023 09:09:24 +0100 Subject: [PATCH] multiple apps: use argparse to support standard -h help - group-lines - qgifview - password-prompt - tailsleep --- group-lines/group-lines | 8 ++++++-- password-prompt/password-prompt | 11 ++++++----- qgifview/qgifview | 2 +- tailsleep/tailsleep | 8 ++++---- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/group-lines/group-lines b/group-lines/group-lines index 644f3ae..8ecf9b5 100755 --- a/group-lines/group-lines +++ b/group-lines/group-lines @@ -1,11 +1,15 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: WTFPL +import argparse import re -import sys -pattern = re.compile(sys.argv[1]) +parser = argparse.ArgumentParser() +parser.add_argument("pattern") +args = parser.parse_args() + +pattern = re.compile(args.pattern) groups = {} diff --git a/password-prompt/password-prompt b/password-prompt/password-prompt index c581f08..101ab8a 100755 --- a/password-prompt/password-prompt +++ b/password-prompt/password-prompt @@ -3,13 +3,14 @@ # reads a password on TTY (not stdin) and show it on stdout +import argparse import getpass -import sys -try: - prompt = f"{sys.argv[1].rstrip()} " -except IndexError: - prompt = "Password: " +parser = argparse.ArgumentParser() +parser.add_argument("prompt", default="Password:", nargs="?") +args = parser.parse_args() + +prompt = f"{args.prompt.rstrip()} " print(getpass.getpass(prompt)) diff --git a/qgifview/qgifview b/qgifview/qgifview index ce6c5e8..2d9fb58 100755 --- a/qgifview/qgifview +++ b/qgifview/qgifview @@ -13,7 +13,7 @@ from PyQt5.QtWidgets import QApplication, QLabel app = QApplication(sys.argv) args = app.arguments() -if len(args) != 2: +if len(args) != 2 or sys.argv[1] in {'-h', '--help'}: print('usage: %s FILE.GIF' % args[0], file=sys.stderr) sys.exit(1) diff --git a/tailsleep/tailsleep b/tailsleep/tailsleep index 34f3789..12675f0 100755 --- a/tailsleep/tailsleep +++ b/tailsleep/tailsleep @@ -12,20 +12,20 @@ def read_file(filename, sleep_time=1, end_after_inactivity_iter=5, suggested_block_size=4096): """Generates data of a growing file. - + Yields blocks of data. When file end is reached, it waits `sleep_time` seconds `end_after_inactivity_iter` times. If file has no more data within that period, the generator ends. """ - + def _read_some(): for _ in range(end_after_inactivity_iter): block = f.read(suggested_block_size) if block: return block time.sleep(sleep_time) - + with open(filename, 'rb') as f: while True: block = _read_some() @@ -42,7 +42,7 @@ def _quit(signum, stack): def main(): locale.setlocale(locale.LC_ALL, '') - if len(sys.argv) != 2: + if len(sys.argv) != 2 or sys.argv[1] in {'-h', '--help'}: print('usage: %s FILE' % sys.argv[0], file=sys.stderr) sys.exit(os.EX_USAGE)