43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
from distutils.errors import DistutilsArgError
|
|
from distutils.fancy_getopt import FancyGetopt
|
|
from typing import Dict, List
|
|
|
|
_options = [
|
|
("exec-prefix=", None, ""),
|
|
("home=", None, ""),
|
|
("install-base=", None, ""),
|
|
("install-data=", None, ""),
|
|
("install-headers=", None, ""),
|
|
("install-lib=", None, ""),
|
|
("install-platlib=", None, ""),
|
|
("install-purelib=", None, ""),
|
|
("install-scripts=", None, ""),
|
|
("prefix=", None, ""),
|
|
("root=", None, ""),
|
|
("user", None, ""),
|
|
]
|
|
|
|
|
|
# typeshed doesn't permit Tuple[str, None, str], see python/typeshed#3469.
|
|
_distutils_getopt = FancyGetopt(_options) # type: ignore
|
|
|
|
|
|
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:
|
|
_, match = _distutils_getopt.getopt(args=[arg])
|
|
except DistutilsArgError:
|
|
# We don't care about any other options, which here may be
|
|
# considered unrecognized since our option list is not
|
|
# exhaustive.
|
|
pass
|
|
else:
|
|
result.update(match.__dict__)
|
|
return result
|