| from getopt import GetoptError, getopt | |
| from typing import Dict, List | |
| _options = [ | |
| "exec-prefix=", | |
| "home=", | |
| "install-base=", | |
| "install-data=", | |
| "install-headers=", | |
| "install-lib=", | |
| "install-platlib=", | |
| "install-purelib=", | |
| "install-scripts=", | |
| "prefix=", | |
| "root=", | |
| "user", | |
| ] | |
| def parse_distutils_args(args: List[str]) -> Dict[str, str]: | |
| """Parse provided arguments, returning an object that has the matched arguments. | |
| Any unknown arguments are ignored. | |
| """ | |
| result = {} | |
| for arg in args: | |
| try: | |
| parsed_opt, _ = getopt(args=[arg], shortopts="", longopts=_options) | |
| except GetoptError: | |
| # We don't care about any other options, which here may be | |
| # considered unrecognized since our option list is not | |
| # exhaustive. | |
| continue | |
| if not parsed_opt: | |
| continue | |
| option = parsed_opt[0] | |
| name_from_parsed = option[0][2:].replace("-", "_") | |
| value_from_parsed = option[1] or "true" | |
| result[name_from_parsed] = value_from_parsed | |
| return result | |