1111from prime_backup .utils .mcdr_utils import tr
1212
1313
14+ class BadDate (IllegalArgument ):
15+ pass
16+
17+
1418class DateNode (ArgumentNode ):
1519 @override
1620 def parse (self , text : str ) -> ParseResult :
@@ -19,7 +23,11 @@ def parse(self, text: str) -> ParseResult:
1923 ts = conversion_utils .date_to_timestamp_us (result .value .strip ())
2024 return ParseResult (ts , result .char_read )
2125 except ValueError :
22- raise IllegalArgument (tr ('error.node.bad_date' ), result .char_read )
26+ raise BadDate (tr ('error.node.bad_date' ), result .char_read )
27+
28+
29+ class BadBackupId (IllegalArgument ):
30+ pass
2331
2432
2533class BackupIdNode (Text ):
@@ -29,7 +37,7 @@ def parse(self, text: str) -> ParseResult:
2937 try :
3038 _ = BackupIdParser (allow_db_access = True , dry_run = True ).parse (result .value )
3139 except ValueError :
32- raise IllegalArgument (tr ('error.node.bad_backup_id' ), result .char_read )
40+ raise BadBackupId (tr ('error.node.bad_backup_id' ), result .char_read )
3341 return result
3442
3543 @classmethod
@@ -47,6 +55,10 @@ def _on_visited(self, context: CommandContext, parsed_result: ParseResult):
4755 context [key ] = context .get (key , []) + [parsed_result .value ]
4856
4957
58+ class BadIdRange (IllegalArgument ):
59+ pass
60+
61+
5062class IdRangeNode (ArgumentNode ):
5163 @dataclasses .dataclass (frozen = True )
5264 class Range :
@@ -75,10 +87,14 @@ def parse(self, text: str) -> ParseResult:
7587 r = self .Range (start , end )
7688 break
7789 else :
78- raise IllegalArgument (tr ('error.node.bad_id_range' ), result .char_read )
90+ raise BadIdRange (tr ('error.node.bad_id_range' ), result .char_read )
7991 return ParseResult (r , result .char_read )
8092
8193
94+ class BadHexString (IllegalArgument ):
95+ pass
96+
97+
8298class HexStringNode (Text ):
8399 __pattern = re .compile ('[a-f0-9]+' )
84100
@@ -87,7 +103,7 @@ def parse(self, text: str) -> ParseResult:
87103 result = super ().parse (text )
88104 h : str = result .value .lower ()
89105 if not self .__pattern .fullmatch (h ):
90- raise IllegalArgument (tr ('error.node.bad_hex_string' ), result .char_read )
106+ raise BadHexString (tr ('error.node.bad_hex_string' ), result .char_read )
91107 return ParseResult (h , result .char_read )
92108
93109
0 commit comments