[arch-dev-public] [PATCH 6/7] Move real package processing to a function
Dan McGee
dan at archlinux.org
Mon Sep 28 00:16:25 EDT 2009
Signed-off-by: Dan McGee <dan at archlinux.org>
---
namcap.py | 96 +++++++++++++++++++++++++++++++------------------------------
1 files changed, 49 insertions(+), 47 deletions(-)
diff --git a/namcap.py b/namcap.py
index 06c79ea..d9fccee 100755
--- a/namcap.py
+++ b/namcap.py
@@ -89,6 +89,52 @@ def check_rules_exclude(optlist):
args_used += 1
return args_used
+def process_realpackage(package, modules):
+ extracted = 0
+ pkgtar = verify_package(package)
+
+ if not pkgtar:
+ print "Error: " + package + " is empty or is not a valid package"
+ return 1
+
+ pkginfo = pacman.load(package)
+
+ # Loop through each one, load them apply if possible
+ for i in modules:
+ cur_class = __import__('Namcap.' + i, globals(), locals(), [Namcap])
+ pkg = cur_class.package()
+ ret = [[],[],[]]
+ if pkg.type() == "tarball":
+ if pkg.prereq() == "extract":
+ # If it's not extracted, then extract it and then analyze the package
+ if not extracted:
+ os.mkdir(sandbox_directory)
+ for j in pkgtar.getmembers():
+ pkgtar.extract(j, sandbox_directory)
+ extracted = 1
+ ret = pkg.analyze(pkginfo, sandbox_directory)
+ elif pkg.prereq() == "pkg":
+ ret = pkg.analyze(pkginfo, None)
+ elif pkg.prereq() == "tar":
+ ret = pkg.analyze(pkginfo, pkgtar)
+ else:
+ ret = [['Error running rule (' + i + ')'],[],[]]
+
+ # Output the three types of messages
+ if ret[0] != []:
+ for j in ret[0]:
+ print string.ljust(pkginfo.name, 10) + " E: " + m(j[0]) % j[1]
+ if ret[1] != []:
+ for j in ret[1]:
+ print string.ljust(pkginfo.name, 10) + " W: " + m(j[0]) % j[1]
+ if ret[2] != [] and info_reporting:
+ for j in ret[2]:
+ print string.ljust(pkginfo.name, 10) + " I: " + m(j[0]) % j[1]
+
+ # Clean up if we extracted anything
+ if extracted:
+ shutil.rmtree(sandbox_directory)
+
def process_pkgbuild(package, modules):
# We might want to do some verifying in here... but really... isn't that what pacman.load is for?
pkginfo = pacman.load(package)
@@ -188,54 +234,10 @@ for package in packages:
usage()
if package[-7:] == '.tar.gz':
- extracted = 0
- pkgtar = verify_package(package)
-
- if not pkgtar:
- print "Error: " + package + " is empty or is not a valid package"
- if len(packages) > 1:
- continue
- else:
- sys.exit(2)
-
- pkginfo = pacman.load(package)
-
- # Loop through each one, load them apply if possible
- for i in active_modules:
- cur_class = __import__('Namcap.' + i, globals(), locals(), [Namcap])
- pkg = cur_class.package()
- ret = [[],[],[]]
- if pkg.type() == "tarball":
- if pkg.prereq() == "extract":
- # If it's not extracted, then extract it and then analyze the package
- if not extracted:
- os.mkdir(sandbox_directory)
- for j in pkgtar.getmembers():
- pkgtar.extract(j, sandbox_directory)
- extracted = 1
- ret = pkg.analyze(pkginfo, sandbox_directory)
- elif pkg.prereq() == "pkg":
- ret = pkg.analyze(pkginfo, None)
- elif pkg.prereq() == "tar":
- ret = pkg.analyze(pkginfo, pkgtar)
- else:
- ret = [['Error running rule (' + i + ')'],[],[]]
-
- # Output the three types of messages
- if ret[0] != []:
- for j in ret[0]:
- print string.ljust(pkginfo.name, 10) + " E: " + m(j[0]) % j[1]
- if ret[1] != []:
- for j in ret[1]:
- print string.ljust(pkginfo.name, 10) + " W: " + m(j[0]) % j[1]
- if ret[2] != [] and info_reporting:
- for j in ret[2]:
- print string.ljust(pkginfo.name, 10) + " I: " + m(j[0]) % j[1]
-
- # Clean up if we extracted anything
- if extracted:
- shutil.rmtree(sandbox_directory)
+ process_realpackage(package, active_modules)
elif package[-8:] == 'PKGBUILD':
process_pkgbuild(package, active_modules)
+ else:
+ print "Error: Cannot process %s" % package
# vim: set ts=4 sw=4 noet:
--
1.6.4.4
More information about the arch-dev-public
mailing list