in build/fbcode_builder/getdeps/manifest.py [0:0]
def __init__(self, file_name, fp=None):
# allow_no_value enables listing parameters in the
# autoconf.args section one per line
config = configparser.RawConfigParser(allow_no_value=True)
config.optionxform = str # make it case sensitive
if fp is None:
with open(file_name, "r") as fp:
config.read_file(fp)
elif isinstance(fp, type("")):
# For testing purposes, parse from a string (str
# or unicode)
config.read_file(io.StringIO(fp))
else:
config.read_file(fp)
# validate against the schema
seen_sections = set()
for section in config.sections():
seen_sections.add(validate_section(file_name, section, config))
for section in SCHEMA.keys():
section_def = SCHEMA[section]
if (
not section_def.get("optional_section", False)
and section not in seen_sections
):
raise Exception(
"manifest file %s is missing required section %s"
% (file_name, section)
)
self._config = config
self.name = config.get("manifest", "name")
self.fbsource_path = self.get("manifest", "fbsource_path")
self.shipit_project = self.get("manifest", "shipit_project")
self.shipit_fbcode_builder = self.get("manifest", "shipit_fbcode_builder")
self.resolved_system_packages = {}
if self.name != os.path.basename(file_name):
raise Exception(
"filename of the manifest '%s' does not match the manifest name '%s'"
% (file_name, self.name)
)