diff options
| author | Olivier Gayot <olivier.gayot@sigexec.com> | 2023-02-11 17:22:55 +0100 | 
|---|---|---|
| committer | Olivier Gayot <olivier.gayot@sigexec.com> | 2023-02-11 17:47:20 +0100 | 
| commit | 13f3018846c8d9fd9fdaa4e3f5c9dcbf3b574fb6 (patch) | |
| tree | 289a9fd2358a1eda39f475438698d4daf84634cc | |
| parent | ee64301c07fe5a8a363d91670f1caddc4a744abd (diff) | |
Drop use of docopt in favor of argparse
Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
| -rwxr-xr-x | monitor-menu.py | 44 | 
1 files changed, 19 insertions, 25 deletions
| diff --git a/monitor-menu.py b/monitor-menu.py index 413b12d..42228ce 100755 --- a/monitor-menu.py +++ b/monitor-menu.py @@ -1,28 +1,26 @@  #!/usr/bin/env python3 -''' -monitor-menu.py -Usage: -    monitor-menu.py [options] -    monitor-menu.py [options] <profile> - -Options: -    --loglevel=LOGLEVEL  Set the log level [default: info] -''' - +import argparse  import json  import logging  from os.path import expanduser  import subprocess  import dialog -import docopt  class NoMatchingProfile(ValueError):      pass +class LogLevel: +    def __init__(self, value: str) -> None: +        try: +            self.numerical_level = logging.getLevelNamesMapping()[value.upper()] +        except KeyError: +            raise ValueError("invalid value") + +  class MonitorMenu():      def __init__(self, config_file='~/.config/monitor-profiles.json'):          with open(expanduser(config_file)) as fh: @@ -72,24 +70,20 @@ class MonitorMenu():          subprocess.run(feh_cmd, check=False) -def main(argv=None): -    args = docopt.docopt(__doc__, version='1', argv=argv) +def main(): +    parser = argparse.ArgumentParser() +    parser.add_argument("--log-level", "--loglevel", type=LogLevel, default="info") +    parser.add_argument("--index", type=int, required=False) +    args = parser.parse_args() +    logging.basicConfig(level=args.log_level.numerical_level)      menu = MonitorMenu() -    numeric_level = getattr(logging, args["--loglevel"].upper(), None) -    if not isinstance(numeric_level, int): -        raise ValueError(f"invalid log level: {args['--loglevel']}") -    logging.basicConfig(level=numeric_level) - -    try: -        if '<profile>' in args and args['<profile>'] is not None: -            menu.run(int(args['<profile>'])) -        else: -            menu.run() +    if args.index is not None: +        menu.run(profile_idx=args.index) +    else: +        menu.run() -    except ValueError as e: -        raise docopt.DocoptExit(str(e))  if __name__ == '__main__':      main() | 
