* make info/search show installed packages as well, phew

This commit is contained in:
Eray Özkural
2005-12-24 00:24:28 +00:00
parent 06cc9389f9
commit 25b0fc88ba
2 changed files with 32 additions and 10 deletions
+8 -4
View File
@@ -232,17 +232,21 @@ def info_file(package_fn):
package.read() package.read()
return package.metadata, package.files return package.metadata, package.files
def info_name(package_name): def info_name(package_name, installed=False):
"""fetch package information for a package""" """fetch package information for a package"""
if packagedb.has_package(package_name): if installed:
package = packagedb.get_package(package_name) pkgdb = packagedb.inst_packagedb
else:
pkgdb = packagedb
if pkgdb.has_package(package_name):
package = pkgdb.get_package(package_name)
from pisi.metadata import MetaData from pisi.metadata import MetaData
metadata = MetaData() metadata = MetaData()
metadata.package = package metadata.package = package
#FIXME: get it from sourcedb #FIXME: get it from sourcedb
metadata.source = None metadata.source = None
#TODO: fetch the files from server if possible #TODO: fetch the files from server if possible
if ctx.installdb.is_installed(package.name): if installed and ctx.installdb.is_installed(package.name):
files = ctx.installdb.files(package.name) files = ctx.installdb.files(package.name)
else: else:
files = None files = None
+23 -5
View File
@@ -513,6 +513,8 @@ class Info(Command):
Usage: info <package1> <package2> ... <packagen> Usage: info <package1> <package2> ... <packagen>
<packagei> is either a package name or a .pisi file,
""" """
__metaclass__ = autocommand __metaclass__ = autocommand
@@ -543,15 +545,30 @@ Usage: info <package1> <package2> ... <packagen>
#if self.options.long: #if self.options.long:
ctx.ui.info(unicode(component)) ctx.ui.info(unicode(component))
else: # then assume it was a package else: # then assume it was a package
self.printinfo_package(arg) info_package(arg)
self.finalize() self.finalize()
def printinfo_package(self, arg):
def info_package(self, arg):
if arg.endswith(ctx.const.package_suffix):
metadata, files = pisi.api.info_file(arg)
ctx.ui.info(_('Package file: %s') % arg)
self.print_pkginfo(metadata, files)
else:
if ctx.installdb.is_installed(arg, True):
metadata, files = pisi.api.info_name(arg)
ctx.ui.info(_('Installed package:'))
self.print_pkginfo(metadata, files)
if packagedb.has_package(arg):
metadata, files = pisi.api.info_name(arg, False)
ctx.ui.info(_('Package found in repository:'))
self.print_pkginfo(metadata, files)
def print_pkginfo(self, metadata, files):
import os.path import os.path
metadata, files = pisi.api.info(arg)
ctx.ui.info(unicode(metadata.package)) ctx.ui.info(unicode(metadata.package))
revdeps = [x[0] for x in packagedb.get_rev_deps(arg)] revdeps = [x[0] for x in packagedb.get_rev_deps(metadata.package.name)]
print _('Reverse Dependencies:'), util.strlist(revdeps) print _('Reverse Dependencies:'), util.strlist(revdeps)
if self.options.files or self.options.files_path: if self.options.files or self.options.files_path:
if files: if files:
@@ -563,6 +580,7 @@ Usage: info <package1> <package2> ... <packagen>
print fileinfo.path print fileinfo.path
else: else:
ctx.ui.warning(_('File information not available')) ctx.ui.warning(_('File information not available'))
print
class Check(Command): class Check(Command):
@@ -1013,7 +1031,7 @@ Finds a package in repository containing specified search terms
r = pisi.api.search_package_terms(self.args, self.get_lang()) r = pisi.api.search_package_terms(self.args, self.get_lang())
for pkg in r: for pkg in r:
self.printinfo_package(pkg) self.info_package(pkg)
self.finalize() self.finalize()