Coverage for src/probable_fiesta/cli/builder/parser_builder.py: 42%

33 statements  

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

1from .args_parse import Parser 

2 

3class ParserBuilder: 

4 

5 def __init__(self, args_parser=None): 

6 if args_parser is not None: 

7 self.args_parser = args_parser 

8 else: 

9 self.args_parser = Parser.Factory.new() 

10 

11 @property 

12 def parser(self): 

13 return ParserBuilderParser(self.args_parser) 

14 

15 def build(self): 

16 return self 

17 

18class ParserBuilderParser(ParserBuilder): 

19 

20 def __init__(self, args_parser): 

21 super().__init__(args_parser) 

22 

23 def set_args_parser(self, args_parser): 

24 self.args_parser = args_parser 

25 return self 

26 

27 def create_new_args_parser(self): 

28 self.args_parser = Parser.Factory.new() 

29 return self 

30 

31 def get_args_parser(self): 

32 return self.args_parser.parser 

33 

34 def add_argument(self, *args, **kwargs): 

35 print(f"Adding {args} to parser: {self.args_parser}") 

36 self.args_parser.add_argument(*args, **kwargs) 

37 return self 

38 

39 def parse_args(self, args=None): 

40 if not self.args_parser.parser: 

41 print("No parser found. Creating one for you") 

42 self.args_parser.parser = Parser.Factory.new_parser() 

43 return self.args_parser.parser.parse_args(args) 

44 

45 def get_parsed_args(self): 

46 return self.args_parser.parser.get_parsed_args()