X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=roundup%2Finstall_util.py;h=97c16f410ba78c34270424e467c2a66661a0dd26;hb=a843c3dcb4912b1c9554da696238c00c8670b8dc;hp=69fc0490a93e74339250c48709ce3146507e1abf;hpb=5a5d22ea2040e403029c55cb7a85ff333fadff23;p=roundup.git diff --git a/roundup/install_util.py b/roundup/install_util.py index 69fc049..97c16f4 100644 --- a/roundup/install_util.py +++ b/roundup/install_util.py @@ -15,11 +15,11 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: install_util.py,v 1.7 2001-11-24 01:00:13 jhermann Exp $ +# $Id: install_util.py,v 1.10 2004-02-11 23:55:08 richard Exp $ -__doc__ = """ -Support module to generate and check fingerprints of installed files. +"""Support module to generate and check fingerprints of installed files. """ +__docformat__ = 'restructuredtext' import os, sha, shutil @@ -30,29 +30,32 @@ slast_file_types = [".css"] digested_file_types = sgml_file_types + hash_file_types + slast_file_types - -def checkDigest(filename): - """Read file, check for valid fingerprint, return TRUE if ok""" - # open and read file - inp = open(filename, "r") - lines = inp.readlines() - inp.close() - +def extractFingerprint(lines): # get fingerprint from last line - if lines[-1][:6] == "#SHA: ": + if lines[-1].startswith("#SHA: "): # handle .py/.sh comment - fingerprint = lines[-1][6:].strip() - elif lines[-1][:10] == "', '') - fingerprint = fingerprint.strip() - elif lines[-1][:8] == "/* SHA: ": + return fingerprint.strip() + elif lines[-1].startswith("/* SHA: "): # handle css files fingerprint = lines[-1][8:] fingerprint = fingerprint.replace('*/', '') - fingerprint = fingerprint.strip() - else: + return fingerprint.strip() + return None + +def checkDigest(filename): + """Read file, check for valid fingerprint, return TRUE if ok""" + # open and read file + inp = open(filename, "r") + lines = inp.readlines() + inp.close() + + fingerprint = extractFingerprint(lines) + if fingerprint is None: return 0 del lines[-1] @@ -76,6 +79,12 @@ class DigestFile: self.file = open(self.filename, "w") def write(self, data): + lines = data.splitlines() + # if the file is coming from an installed tracker being used as a + # template, then we will want to re-calculate the SHA + fingerprint = extractFingerprint(lines) + if fingerprint is not None: + data = '\n'.join(lines[:-1]) + '\n' self.file.write(data) self.digest.update(data) @@ -147,24 +156,4 @@ def test(): if __name__ == '__main__': test() -# -# $Log: not supported by cvs2svn $ -# Revision 1.6 2001/11/22 15:46:42 jhermann -# Added module docstrings to all modules. -# -# Revision 1.5 2001/11/12 23:17:38 jhermann -# Code using copyDigestedFile() that passes unit tests -# -# Revision 1.4 2001/11/12 23:14:40 jhermann -# Copy function, and proper handling of unknown file types -# -# Revision 1.3 2001/11/12 22:38:48 richard -# bleah typo -# -# Revision 1.2 2001/11/12 22:37:13 richard -# Handle all the various file formats in roundup -# -# Revision 1.1 2001/11/12 22:26:32 jhermann -# Added install utils (digest calculation) -# - +# vim: set filetype=python ts=4 sw=4 et si