class PreferenceLists(object): """Represents a list of preferences lists for apt """ def __init__(self, manifest_vars): """ :param dict manifest_vars: The manifest variables """ # A dictionary with the name of the file in preferences.d as the key # That values are lists of Preference objects self.preferences = {} # Save the manifest variables, we need the later on self.manifest_vars = manifest_vars def add(self, name, preferences): """Adds a preference to the apt preferences list :param str name: Name of the file in preferences.list.d, may contain manifest vars references :param object preferences: The preferences """ name = name.format(**self.manifest_vars) self.preferences[name] = [Preference(p) for p in preferences] class Preference(object): """Represents a single preference """ def __init__(self, preference): """ :param dict preference: A apt preference dictionary """ self.preference = preference def __str__(self): """Convert the object into a preference block :rtype: str """ return "Package: {package}\nPin: {pin}\nPin-Priority: {pin-priority}\n".format(**self.preference)