Bug 1415618: Allow specifying extra paths to search for config files mozharness. r=jlund

MozReview-Commit-ID: 3xkUaDwYB6v

--HG--
extra : rebase_source : e80f0f20213e76ee68e62757eab8c788b7d398c6
extra : source : 780f67a36d6d91d4ee35070dc7f8d8c598106929
This commit is contained in:
Tom Prince 2017-11-14 15:15:56 -07:00
Родитель f7c1abbee7
Коммит af723fa237
2 изменённых файлов: 15 добавлений и 5 удалений

Просмотреть файл

@ -280,6 +280,10 @@ class BaseConfig(object):
type="string", default=os.getcwd(), type="string", default=os.getcwd(),
help="Specify the absolute path of the parent of the working directory" help="Specify the absolute path of the parent of the working directory"
) )
self.config_parser.add_option(
"--extra-config-path", action='extend', dest="config_paths",
type="string", help="Specify additional paths to search for config files.",
)
self.config_parser.add_option( self.config_parser.add_option(
"-c", "--config-file", "--cfg", action="extend", dest="config_files", "-c", "--config-file", "--cfg", action="extend", dest="config_files",
type="string", help="Specify a config file; can be repeated" type="string", help="Specify a config file; can be repeated"
@ -433,6 +437,7 @@ class BaseConfig(object):
way that self.config is made up. See way that self.config is made up. See
`mozharness.mozilla.building.buildbase.BuildingConfig` for an example. `mozharness.mozilla.building.buildbase.BuildingConfig` for an example.
""" """
config_paths = options.config_paths or ['.']
all_cfg_files_and_dicts = [] all_cfg_files_and_dicts = []
for cf in all_config_files: for cf in all_config_files:
try: try:
@ -444,7 +449,9 @@ class BaseConfig(object):
(file_path, parse_config_file(file_path, search_path=["."])) (file_path, parse_config_file(file_path, search_path=["."]))
) )
else: else:
all_cfg_files_and_dicts.append((cf, parse_config_file(cf))) all_cfg_files_and_dicts.append(
(cf, parse_config_file(cf, search_path=config_paths + [DEFAULT_CONFIG_PATH]))
)
except Exception: except Exception:
if cf in options.opt_config_files: if cf in options.opt_config_files:
print( print(

Просмотреть файл

@ -399,9 +399,6 @@ class BuildOptionParser(object):
# TODO add nosetests for this class # TODO add nosetests for this class
platform = None platform = None
bits = None bits = None
config_file_search_path = [
DEFAULT_CONFIG_PATH,
]
# add to this list and you can automagically do things like # add to this list and you can automagically do things like
# --custom-build-variant-cfg asan # --custom-build-variant-cfg asan
@ -521,9 +518,15 @@ class BuildOptionParser(object):
# now let's see if we were given a valid pathname # now let's see if we were given a valid pathname
valid_variant_cfg_path = value valid_variant_cfg_path = value
else: else:
# FIXME: We should actually wait until we have parsed all arguments
# before looking at this, otherwise the behavior will depend on the
# order of arguments. But that isn't a problem as long as --extra-config-path
# is always passed first.
extra_config_paths = parser.values.config_paths or []
config_paths = extra_config_paths + [DEFAULT_CONFIG_PATH]
# let's take our prospective_cfg_path and see if we can # let's take our prospective_cfg_path and see if we can
# determine an existing file # determine an existing file
for path in cls.config_file_search_path: for path in config_paths:
if os.path.exists(os.path.join(path, prospective_cfg_path)): if os.path.exists(os.path.join(path, prospective_cfg_path)):
# success! we found a config file # success! we found a config file
valid_variant_cfg_path = os.path.join(path, valid_variant_cfg_path = os.path.join(path,