diff --git a/pisi/install.py b/pisi/install.py index 18e71630..f30a5f73 100644 --- a/pisi/install.py +++ b/pisi/install.py @@ -75,6 +75,7 @@ class Installer: def check_requirements(self): """check system requirements""" + #TODO: IS THERE ENOUGH SPACE? # what to do if / is split into /usr, /var, etc. pass diff --git a/pisi/metadata.py b/pisi/metadata.py index f5b4ca01..0502879a 100644 --- a/pisi/metadata.py +++ b/pisi/metadata.py @@ -49,7 +49,7 @@ class SourceInfo: def has_errors(self): if not self.name: return [ _("SourceInfo should have a Name") ] - return None + return [] class PackageInfo(specfile.PackageInfo): @@ -88,13 +88,15 @@ class PackageInfo(specfile.PackageInfo): def has_errors(self): # FIXME: there should be real error msgs # and comment the logic here please, it isn't very clear -gurer - ret = (specfile.PackageInfo.has_errors(self) == None) - ret = ret and self.distribution!=None - ret = ret and self.distributionRelease!=None - ret = ret and self.architecture!=None and self.installedSize!=None - if ret: - return None - return [ _("Some error in package metadata") ] + err = Checks() + err.join(specfile.PackageInfo.has_errors(self)) + err.has_tag(self.version, 'Package', 'Version') + err.has_tag(self.release, 'Package', 'Release') + err.has_tag(self.distribution, 'Package', 'Distribution') + err.has_tag(self.distributionRelease, 'Package', 'DistributionRelease') + err.has_tag(self.architecture, 'Package', 'Architecture') + err.has_tag(self.installedSize, 'Package', 'InstalledSize') + return err.list def __str__(self): s = specfile.PackageInfo.__str__(self) diff --git a/pisi/package.py b/pisi/package.py index fac9a7f8..c6c4a33d 100644 --- a/pisi/package.py +++ b/pisi/package.py @@ -27,6 +27,7 @@ import pisi.archive as archive from pisi.uri import URI from pisi.metadata import MetaData from pisi.files import Files +import pisi.util as util class Error(pisi.Error): pass @@ -99,7 +100,9 @@ class Package: self.metadata = MetaData() self.metadata.read( join(outdir, ctx.const.metadata_xml) ) - if self.metadata.has_errors(): + errs = self.metadata.has_errors() + if errs: + util.Checks.print_errors(errs) raise Error, _("MetaData format wrong") self.files = Files() diff --git a/pisi/specfile.py b/pisi/specfile.py index 5eccf157..6e0179fd 100644 --- a/pisi/specfile.py +++ b/pisi/specfile.py @@ -123,7 +123,7 @@ class PatchInfo: def has_errors(self): if not self.filename: return [ _("Patch should have a filename string") ] - return None + return [] def __str__(self): s = self.filename @@ -187,7 +187,7 @@ class PathInfo: def has_errors(self): if not self.pathname: return [ _("Path tag should have a name string") ] - return None + return [] def __str__(self): s = self.pathname @@ -209,7 +209,7 @@ class ComarProvide: def has_errors(self): if not self.om or not self.script: return [ _("COMAR provide should have something :)") ] - return None + return [] def __str__(self): s = self.script diff --git a/pisi/util.py b/pisi/util.py index 96a0b0b7..ac176737 100644 --- a/pisi/util.py +++ b/pisi/util.py @@ -46,25 +46,25 @@ class FileError(Error): class Checks: def __init__(self): - self.list = None + self.list = [] def add(self, err): - if not self.list: - self.list = [] self.list.append(err) def join(self, list): - if list != None: - if not self.list: - self.list = [] - self.list.extend(list) + self.list.extend(list) def has_tag(self, var, section, name): if not var: - if not self.list: - self.list = [] self.list.append(_("%s section should have a '%s' tag") % (section, name)) + def has_error(): + return len(self.list)>0 + + def print_errors(list): + for x in list: + ctx.ui.error(x) + print_errors = staticmethod(print_errors) ######################### # string/list functions #