Coverage for src/probable_fiesta/cli/v1.py: 85%

27 statements  

« prev     ^ index     » next       coverage.py v7.1.0, created at 2023-01-30 18:57 -0500

1"""CLI v1 Argument Parser.""" 

2import argparse 

3from ..__about__ import __package_name__ as _package_name 

4 

5DESCRIPTION = "There's probably a fiesta somewhere." 

6 

7class MyArgumentParser(argparse.ArgumentParser): 

8 

9 def __init__(self, *args, **kwargs): 

10 super(MyArgumentParser, self).__init__(*args, **kwargs) 

11 

12 self.error_message = '' 

13 

14 def error(self, message): 

15 print("error: ", message) 

16 self.error_message = message 

17 

18 def parse_args(self, *args, **kwargs): 

19 # catch SystemExit exception to prevent closing the application 

20 result = None 

21 if not args: 

22 self.error("invalid empty arguments") 

23 return result 

24 if args[0] is None or args[0] == "": 

25 self.error("invalid empty arguments") 

26 return result 

27 try: 

28 result = super().parse_args(*args, **kwargs) 

29 except SystemExit: 

30 pass 

31 return result 

32 

33def create_argument_parser(): 

34 # Create argument parser 

35 parser = MyArgumentParser(add_help=True, description=DESCRIPTION) 

36 

37 # Add arguments to parser 

38 parser.add_argument("--version", action='store_true', help=f"Current ${_package_name} version") 

39 

40 # Return parser 

41 return parser