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
« prev ^ index » next coverage.py v7.1.0, created at 2023-01-30 18:57 -0500
1from .args_parse import Parser
3class ParserBuilder:
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()
11 @property
12 def parser(self):
13 return ParserBuilderParser(self.args_parser)
15 def build(self):
16 return self
18class ParserBuilderParser(ParserBuilder):
20 def __init__(self, args_parser):
21 super().__init__(args_parser)
23 def set_args_parser(self, args_parser):
24 self.args_parser = args_parser
25 return self
27 def create_new_args_parser(self):
28 self.args_parser = Parser.Factory.new()
29 return self
31 def get_args_parser(self):
32 return self.args_parser.parser
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
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)
45 def get_parsed_args(self):
46 return self.args_parser.parser.get_parsed_args()