diff options
Diffstat (limited to 'test/pacman/util.py')
-rw-r--r--[-rwxr-xr-x] | test/pacman/util.py | 127 |
1 files changed, 49 insertions, 78 deletions
diff --git a/test/pacman/util.py b/test/pacman/util.py index 47fde310..60dea9e8 100755..100644 --- a/test/pacman/util.py +++ b/test/pacman/util.py @@ -19,7 +19,6 @@ import os import re import hashlib -import stat # ALPM @@ -48,78 +47,65 @@ def vprint(msg): # Methods to generate files # -def getfilename(name): - """ - """ - filename = name - extra = "" +def getfileinfo(filename): + data = { + 'changed': False, + 'isdir': False, + 'islink': False, + 'link': None, + 'hasperms': False, + 'perms': None, + } if filename[-1] == "*": + data["changed"] = True filename = filename.rstrip("*") if filename.find(" -> ") != -1: - filename, extra = filename.split(" -> ") - elif filename.find("|") != -1: - filename, extra = filename.split("|") - return filename - -def mkfile(name, data = ""): - """ - """ - isdir = 0 - islink = 0 - setperms = 0 - filename = name - link = "" - perms = "" - - if filename[-1] == "*": - filename = filename.rstrip("*") - if filename.find(" -> ") != -1: - islink = 1 filename, link = filename.split(" -> ") + data["islink"] = True + data["link"] = link elif filename.find("|") != -1: - setperms = 1 filename, perms = filename.split("|") + data["hasperms"] = True + data["perms"] = int(perms, 8) if filename[-1] == "/": - isdir = 1 + data["isdir"] = True - if isdir: - path = filename - else: - path = os.path.dirname(filename) - if path and not os.path.isdir(path): - os.makedirs(path, 0755) + data["filename"] = filename + return data + +def mkfile(base, name, data=""): + info = getfileinfo(name) + filename = info["filename"] - if isdir: + path = os.path.join(base, filename) + if info["isdir"]: + if not os.path.isdir(path): + os.makedirs(path, 0755) return - if islink: - curdir = os.getcwd() - if path: - os.chdir(path) - os.symlink(link, os.path.basename(filename)) - os.chdir(curdir) + + dir_path = os.path.dirname(path) + if dir_path and not os.path.isdir(dir_path): + os.makedirs(dir_path, 0755) + + if info["islink"]: + os.symlink(info["link"], path) else: - fd = file(filename, "w") - if data: - fd.write(data) - if data[-1] != "\n": - fd.write("\n") - fd.close() - if setperms: - os.chmod(filename, int(perms, 8)) - -def mkinstallfile(filename, install): - """ - """ - data = [] - for key, value in install.iteritems(): - if value: - data.append("%s() {\n%s\n}" % (key, value)) - - mkfile(filename, "\n".join(data)) + writedata(path, data) + + if info["perms"]: + os.chmod(path, info["perms"]) + +def writedata(filename, data): + if isinstance(data, list): + data = "\n".join(data) + fd = file(filename, "w") + if data: + fd.write(data) + if data[-1] != "\n": + fd.write("\n") + fd.close() def mkcfgfile(filename, root, option, db): - """ - """ # Options data = ["[options]"] for key, value in option.iteritems(): @@ -132,13 +118,14 @@ def mkcfgfile(filename, root, option, db): if key != "local": value = db[key] data.append("[%s]\n" \ + "SigLevel = %s\n" \ "Server = file://%s" \ - % (value.treename, + % (value.treename, value.getverify(), \ os.path.join(root, SYNCREPO, value.treename))) for optkey, optval in value.option.iteritems(): data.extend(["%s = %s" % (optkey, j) for j in optval]) - mkfile(os.path.join(root, filename), "\n".join(data)) + mkfile(root, filename, "\n".join(data)) # @@ -146,8 +133,6 @@ def mkcfgfile(filename, root, option, db): # def getmd5sum(filename): - """ - """ if not os.path.isfile(filename): return "" fd = open(filename, "rb") @@ -161,26 +146,12 @@ def getmd5sum(filename): return checksum.hexdigest() def mkmd5sum(data): - """ - """ checksum = hashlib.md5() checksum.update("%s\n" % data) return checksum.hexdigest() # -# Mtime helpers -# - -def getmtime(filename): - """ - """ - if not os.path.exists(filename): - return None, None, None - st = os.lstat(filename) - return st[stat.ST_ATIME], st[stat.ST_MTIME], st[stat.ST_CTIME] - -# # Miscellaneous # |