* patch for rebuilddb command from Faik Uygur

This commit is contained in:
Eray Özkural
2005-10-29 18:11:07 +00:00
parent a0b58a8c2a
commit d94496f2e7
2 changed files with 79 additions and 1 deletions
+44 -1
View File
@@ -16,6 +16,8 @@
import os import os
import sys import sys
from os.path import join, exists
ver = sys.version_info ver = sys.version_info
if ver[0] <= 2 and ver[1] < 4: if ver[0] <= 2 and ver[1] < 4:
from sets import Set as set from sets import Set as set
@@ -39,6 +41,8 @@ import pisi.sourcedb
from pisi.index import Index from pisi.index import Index
import pisi.cli import pisi.cli
from pisi.operations import install, remove, upgrade from pisi.operations import install, remove, upgrade
from pisi.metadata import MetaData
from pisi.files import Files
class Error(pisi.Error): class Error(pisi.Error):
pass pass
@@ -179,7 +183,6 @@ def configure_pending():
except ImportError: except ImportError:
raise Error(_("COMAR: comard not fully installed")) raise Error(_("COMAR: comard not fully installed"))
def info(package): def info(package):
if package.endswith(ctx.const.package_suffix): if package.endswith(ctx.const.package_suffix):
return info_file(package) return info_file(package)
@@ -331,3 +334,43 @@ def delete_cache():
util.clean_dir(ctx.config.packages_dir()) util.clean_dir(ctx.config.packages_dir())
util.clean_dir(ctx.config.archives_dir()) util.clean_dir(ctx.config.archives_dir())
util.clean_dir(ctx.config.tmp_dir()) util.clean_dir(ctx.config.tmp_dir())
def resurrect_package(package_fn):
"""Resurrect the package in the PiSi databases"""
metadata_xml = join(ctx.config.lib_dir(), package_fn, ctx.const.metadata_xml)
if not exists(metadata_xml):
return
metadata = MetaData()
metadata.read(metadata_xml)
errs = metadata.has_errors()
if errs:
util.Checks.print_errors(errs)
raise Error, _("MetaData format wrong")
files_xml = join(ctx.config.lib_dir(), package_fn, ctx.const.files_xml)
if not exists(files_xml):
return
files = Files()
files.read(files_xml)
if files.has_errors():
raise Error, _("Invalid %s") % ctx.const.files_xml
pkginfo = metadata.package
# installdb
ctx.installdb.install(metadata.package.name,
metadata.package.version,
metadata.package.release,
metadata.package.build,
metadata.package.distribution)
# filesdb
ctx.filesdb.add_files(metadata.package.name, files)
# installed packages
packagedb.inst_packagedb.add_package(pkginfo)
+35
View File
@@ -581,6 +581,41 @@ Usage: list-installed
ctx.ui.info('%15s - %s ' % (package.name, package.summary)) ctx.ui.info('%15s - %s ' % (package.name, package.summary))
self.finalize() self.finalize()
class RebuildDb(Command):
"""Rebuild Databases
Usage: rebuilddb
Rebuilds the PiSi databases
"""
__metaclass__ = autocommand
def __init__(self):
super(RebuildDb, self).__init__()
name = ("rebuilddb", "rd")
def run(self):
self.init()
#FIXME: Confirm icin init, unlink icin finalize, rebuild_db icin init lazim :)
if ctx.ui.confirm(_('Rebuild PISI databases? ')):
self.finalize()
import os
for db in os.listdir(ctx.config.db_dir()):
os.unlink(os.path.join(ctx.config.db_dir(), db))
self.init()
self.rebuild_db()
self.finalize()
def rebuild_db(self):
import os
for root, dirs, files in os.walk(ctx.config.lib_dir()):
for package_fn in dirs:
ctx.ui.debug(package_fn)
pisi.api.resurrect_package(package_fn)
class UpdateRepo(Command): class UpdateRepo(Command):
"""Update repository databases """Update repository databases