You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
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
|