Shared_Processors/InstallsArrayFineTuning.py (41 lines of code) (raw):

#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright (c) Facebook, Inc. and its affiliates. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree.# """See docstring for PackageInfoVersioner class.""" from __future__ import absolute_import from autopkglib import Processor, ProcessorError __all__ = ["InstallsArrayFineTuning"] class InstallsArrayFineTuning(Processor): """Change an installs array to allow fine-tuning of a type.""" description = __doc__ input_variables = { "additional_pkginfo": { "required": True, "description": ("Dictionary containing an installs array."), }, "changes": { "required": True, "description": ( "List of dictionaries containing replacement values " "for installs types. Each dictionary must contain a " "path and the new type." ), }, } output_variables = { "changed_pkginfo": {"description": "Fine tuned additional_pkginfo dictionary."} } __doc__ = description def main(self): """Magic.""" current = self.env["additional_pkginfo"]["installs"] changes = self.env["changes"] for change in changes: path = change.get("path", None) if not path: raise ProcessorError("No path found in change!") newtype = change.get("type", None) if not newtype: raise ProcessorError("No type found in change!") # Replace the installs for install in current: if install["path"] == path: install["type"] = newtype self.output("Replacing type for %s to %s" % (path, newtype)) self.env["changed_pkginfo"] = current if __name__ == "__main__": PROCESSOR = InstallsArrayFineTuning() PROCESSOR.execute_shell()