Parse command-line arguments and return typed Args dataclass. Args: argv: Command-line arguments (None = sys.argv) Returns: Parsed Args dataclass with resolved values
(argv: Optional[list[str]] = None)
| 683 | |
| 684 | |
| 685 | def parse_arguments(argv: Optional[list[str]] = None) -> Args: |
| 686 | """Parse command-line arguments and return typed Args dataclass. |
| 687 | |
| 688 | Args: |
| 689 | argv: Command-line arguments (None = sys.argv) |
| 690 | |
| 691 | Returns: |
| 692 | Parsed Args dataclass with resolved values |
| 693 | """ |
| 694 | parser = create_argument_parser() |
| 695 | args = parser.parse_args(argv) |
| 696 | |
| 697 | # Default to interactive mode if no mode specified |
| 698 | interactive = args.interactive or not any([args.datasheet, args.fastled]) |
| 699 | |
| 700 | # Convert lists to tuples for immutability |
| 701 | datasheet = tuple(args.datasheet) if args.datasheet else None |
| 702 | fastled = tuple(args.fastled) if args.fastled else None |
| 703 | |
| 704 | return Args( |
| 705 | interactive=interactive, |
| 706 | datasheet=datasheet, |
| 707 | fastled=fastled, |
| 708 | verbose=args.verbose, |
| 709 | ) |
| 710 | |
| 711 | |
| 712 | def main() -> int: |
no test coverage detected