#!/usr/bin/env python
# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
-import sys, os
+import sys, os, re
import subprocess
sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
import ftptree
if not os.path.isdir(cachedir):
os.makedirs(cachedir)
+# for rpmlint stats
+packages = specfiles = errors = warnings = 0
+# 1 packages and 0 specfiles checked; 0 errors, 0 warnings.
+lintre = re.compile('(?P<packages>\d+) packages and (?P<specfiles>\d+) specfiles checked; (?P<errors>\d+) errors, (?P<warnings>\d+) warnings.')
+
def rpmlint(file):
+ global packages
+ global specfiles
+ global errors
+ global warnings
(dirname,filename) = os.path.split(file)
cachefile = os.path.join(cachedir, filename+'.txt')
raise
outfd.close()
- # print result (from cache)
- print "".join(open(cachefile, 'r').readlines())
+ # show last line (that contains status)
+ l = (open(cachefile, 'r').readlines())[-1]
+ m = lintre.match(l)
+ if m:
+ packages += int(m.group('packages'))
+ specfiles += int(m.group('specfiles'))
+ errors += int(m.group('errors'))
+ warnings += int(m.group('warnings'))
return rc == 0
print "rpmlint of %d files from %d packages" % (len(files), len(tree.loadedpkgs))
for x in files:
- print "rpmlint %s" % x
+ (n, f) = os.path.split(x)
+ print "\r\033[0K%d packages and %d specfiles checked; %d errors, %d warnings. [%s]" % (packages, specfiles, errors, warnings, f),
+ sys.stdout.flush()
rpmlint(x)
+
+print "\r\033[0K%d packages and %d specfiles checked; %d errors, %d warnings." % (packages, specfiles, errors, warnings)
+print "Done"