Keep repo updates in history... add, remove will come

This commit is contained in:
Faik Uygur
2009-01-16 08:03:22 +00:00
parent 4b04c261bb
commit db12695bd7
5 changed files with 42 additions and 5 deletions
+2
View File
@@ -640,6 +640,8 @@ def update_repo(repo, force=False):
repouri = repodb.get_repo(repo).indexuri.get_uri()
try:
index.read_uri_of_repo(repouri, repo)
pisi.db.historydb.HistoryDB().create_history("repoupdate")
pisi.db.historydb.HistoryDB().update_repo(repo, repouri, "update")
except pisi.file.AlreadyHaveException, e:
ctx.ui.info(_('%s repository information is up-to-date.') % repo)
if force:
+4 -1
View File
@@ -25,7 +25,7 @@ import pisi.context as ctx
import pisi.cli.command as command
# Operation names for translation
opttrans = {"upgrade":_("upgrade"),"remove":_("remove"),"emerge":_("emerge"), "install":_("install"), "snapshot":_("snapshot"), "takeback":_("takeback")}
opttrans = {"upgrade":_("upgrade"),"remove":_("remove"),"emerge":_("emerge"), "install":_("install"), "snapshot":_("snapshot"), "takeback":_("takeback"), "repoupdate":_("repository update")}
class History(command.PackageOp):
"""History of pisi operations
@@ -70,6 +70,9 @@ Lists previous operations."""
if operation.type == "snapshot":
print _(" * There are %d packages in this snapshot.") % len(operation.packages)
if operation.type == "repoupdate":
for repo in operation.repos:
print " *", repo
else:
for pkg in operation.packages:
print " *", pkg
+2
View File
@@ -88,6 +88,8 @@ expanded to package names.
repos = pisi.api.list_repos()
for repo in repos:
pisi.api.update_repo(repo)
# reinitialize after update repo operation
pisi.db.historydb.HistoryDB().init()
else:
ctx.ui.info(_('Will not update repositories'))
+8 -2
View File
@@ -25,6 +25,7 @@ class HistoryDB(lazydb.LazyDB):
def init(self):
self.__logs = self.__generate_history()
self.history = None
def __generate_history(self):
logs = filter(lambda x:x.endswith(".xml"), os.listdir(ctx.config.history_dir()))
@@ -33,8 +34,9 @@ class HistoryDB(lazydb.LazyDB):
return logs
def create_history(self, operation):
self.history = pisi.history.History()
self.history.create(operation)
if not self.history:
self.history = pisi.history.History()
self.history.create(operation)
def add_and_update(self, pkgBefore=None, pkgAfter=None, operation=None, otype=None):
self.add_package(pkgBefore, pkgAfter, operation, otype)
@@ -58,6 +60,10 @@ class HistoryDB(lazydb.LazyDB):
destdir = os.path.join(hist_dir, config_file[1:])
pisi.util.copy_file_stat(config_file, destdir);
def update_repo(self, repo, uri, operation = None):
self.history.update_repo(repo, uri, operation)
self.update_history()
def update_history(self):
self.history.update()
+26 -2
View File
@@ -31,6 +31,22 @@ class PackageInfo:
def __str__(self):
return self.version + "-" + self.release + "-" + (self.build or '?')
class Repo:
a_operation = [autoxml.String, autoxml.mandatory]
t_Name = [autoxml.String, autoxml.mandatory]
t_Uri = [autoxml.String, autoxml.mandatory]
def __str__(self):
# "update", "remove", "add"
operation = ""
if self.operation == "update":
return _("%s repository is updated.") % self.name
elif self.operation == "add":
pass # TBD
elif self.operation == "remove":
pass # TBD
class Package:
a_operation = [autoxml.String, autoxml.mandatory]
@@ -65,7 +81,8 @@ class Operation:
a_date = [autoxml.String, autoxml.mandatory]
a_time = [autoxml.String, autoxml.mandatory]
t_Packages = [ [Package], autoxml.mandatory, "Package"]
t_Packages = [ [Package], autoxml.optional, "Package"]
t_Repos = [ [Repo], autoxml.optional, "Repository"]
def __str__(self):
return self.type
@@ -80,7 +97,7 @@ class History(xmlfile.XmlFile):
def create(self, operation):
if operation not in ["upgrade", "remove", "emerge", "install", "snapshot", "takeback"]:
if operation not in ["upgrade", "remove", "emerge", "install", "snapshot", "takeback", "repoupdate"]:
raise Exception("Unknown package operation")
opno = self._get_latest()
@@ -92,6 +109,13 @@ class History(xmlfile.XmlFile):
self.operation.time = "%02d:%02d" % (hour, minute)
self.operation.no = opno
def update_repo(self, name, uri, operation=None):
repo = Repo()
repo.operation = operation
repo.name = name
repo.uri = uri
self.operation.repos.append(repo)
# @param otype is currently only used to hold if an upgrade is from "delta"
def add(self, pkgBefore=None, pkgAfter=None, operation=None, otype=None):