def __init__(self, path, data=None): """ Load and parse the given XPD """ # Save path self.path = path # Load our data if data is None: self._data = util.load_xpd(path) else: self._data = data # Read fields and define properties self.name = self._data['name'] self.version = self._data['version'] self.dependencies = self._data.get('dependencies', []) self.build_dependencies = self._data.get('build-dependencies', []) self.description = self._data.get('description', '')
def _load_package_info(self, input_val): """ Gets all the package info based on the input value, which can be an the path to a XPD, or XPA file, or package==version string. """ # Get all name version pairs from the input packages = [] if input_val.endswith('.xpa'): # Grab the name out of the XPA metadata xpa = XPA(input_val) name = xpa.info['name'] version = xpa.info['version'] packages.append((name, version)) elif input_val.endswith('.xpd'): # Path is an xpd file load that then install xpd_data = util.load_xpd(input_val) # Check for all those package combinations if 'packages' in xpd_data: for name, data in xpd_data['packages'].iteritems(): # Default to main version if one doesn't exist if data: version = data.get('version', xpd_data['version']) else: version = xpd_data['version'] packages.append((name, version)) else: packages.append((xpd_data['name'], xpd_data['version'])) else: # The input_val must be a package name so try to find the xpd # so first try to find the package in a pre-compile manner name, version = self._parse_install_input(input_val) packages.append((name, version)) return packages