def make_index(basePath): ourindex = datapkg.index.SimpleIndex() for root, dirs, files in os.walk(basePath): if 'setup.py' in files or 'metadata.txt' in files: try: pkg = Package.load(root) ourindex.register(pkg) except Exception, inst: logger.warn('Failed to load package at %s because: %s' % (root, inst))
def load(self, path): '''Load a L{Package} object from a path to a package distribution. @return: the Distribution object. ''' pkg = Package() pkg.installed_path = path metadata_path = os.path.join(path, self.metadata_filename) manifest_path = os.path.join(path, self.manifest_filename) fo = open(metadata_path) metadata = json.load(fo) readme_notes = self._get_notes_from_readme(path) if readme_notes: metadata['notes'] = readme_notes pkg.update_metadata(metadata) fo.close() if os.path.exists(manifest_path): fo = open(manifest_path) pkg.manifest = json.load(fo) fo.close() return self(pkg)
def get(self, name): if not name in self: msg = 'No package in %s with name %s. Have you registered/installed it?' % (self, name) raise DatapkgException(msg) path = os.path.join(self.index_path, name) return Package.load(path)