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