diff options
Diffstat (limited to 'third_party/python/pip/pip/_internal/utils/distutils_args.py')
-rw-r--r-- | third_party/python/pip/pip/_internal/utils/distutils_args.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/third_party/python/pip/pip/_internal/utils/distutils_args.py b/third_party/python/pip/pip/_internal/utils/distutils_args.py new file mode 100644 index 0000000000..2fd1862073 --- /dev/null +++ b/third_party/python/pip/pip/_internal/utils/distutils_args.py @@ -0,0 +1,43 @@ +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 |