def info(package_spec_or_obj): """Retrieve information about a :py:class:`Package <dpm.index.package.Package>` :param package_spec_or_obj: - a string in the form of **<scheme>://<package name>**, where - **<scheme>** identifies the type of index to be used - **<package name>** identifies the name of the package. - Example: *ckan://iso-codes* - the :py:class:`Package <dpm.index.package.Package>` object :type package_spec: str or :py:class:`dpm.index.package.Package` :return: - (:py:class:`Metadata <dpm.metadata.Metadata>`, :py:class:`Manifest <dpm.package.Manifest>`) -- on success - None -- on un-success """ if type(package_spec_or_obj) == str: index, path = index_from_spec(package_spec_or_obj) package = index.get(path) else: # assume package_spec_or_obj is of type Package, will check for it next package = package_spec_or_obj if not type(package) == dpm.package.Package: return None #TODO: raise an exception here? return (package.manifest, package.metadata)
def download(package_spec, destination_path): """Download a `Package <dpm.index.package.Package>` and the connected Resources :param package_spec: a string in the form of **<scheme>://<package name>**, where - **<scheme>** identifies the type of index to be used - **<package name>** identifies the name of the package. - Example: *ckan://iso-codes* :type spec_str: str :param destination_path: the directory in which to save the package :type destination_path: str :see: - :py:class:`dpm.download.PackageDownloader` """ pkg_downloader = dpm.download.PackageDownloader(verbose=True) filterfunc = None index, path = index_from_spec(package_spec) package = index.get(path) os_destination_path = os.path.join(destination_path, package.name) pkg_downloader.download(package, os_destination_path, filterfunc)
def run(self, options, args): spec_from = args[0] index, path = self.index_from_spec(spec_from) if len(args) > 1: spec_to = args[1] index_to, path_to = self.index_from_spec(spec_to) else: index_to = dpm.index.get_default_index() pkg = index.get(path) index_to.update(pkg)
def run(self, options, args): logger.debug('RegisterCommand: %s (options: %s)' % (args, options)) spec_from = args[0] index, path = self.index_from_spec(spec_from) if len(args) == 2: spec_to = args[1] index_to, path_to = self.index_from_spec(spec_to, all_index=True) else: logger.debug('RegisterCommand: Loading default index') index_to = dpm.index.get_default_index() pkg = index.get(path) index_to.register(pkg)
def load(package_path): '''Load a :py:class:`Package <dpm.package.Package>` stored at path :param package_path: The local Package path, e.g. /home/user/packages/iso-codes :type package_path: str :return: :py:class:`Package <dpm.package.Package>` -- The corresponding Package object ''' #TODO: when this issue (https://github.com/okfn/dpm/issues/28) closes, update this function spec_str = "file://" + package_path spec = dpm.spec.Spec.parse_spec(spec_str) index, path = spec.index_from_spec() package = index.get(path) return package