diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-06-11 19:54:15 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-06-11 19:54:15 +0100 |
commit | 8d2493c09465f933bf72922b118078813cae8d37 (patch) | |
tree | 5795e93172c3bfa49cc350d397a3a5ac6adcb21a | |
parent | 6dee09fe1b6bf92ae8bd190edc014df84fea19cb (diff) | |
download | summain-8d2493c09465f933bf72922b118078813cae8d37.tar.gz |
Add --checksum option to allow choosing checksums to compute.
Only SHA1 is computed by default.
-rwxr-xr-x | summain | 7 | ||||
-rw-r--r-- | summainlib.py | 3 | ||||
-rw-r--r-- | summainlib_tests.py | 6 |
3 files changed, 12 insertions, 4 deletions
@@ -32,6 +32,8 @@ class Summain(cliapp.Application): self.settings.string_list(['exclude'], 'do not output or compute FIELD', metavar='FIELD') + self.settings.string_list(['checksum', 'c'], + 'which checksums to compute') def files(self, root): if os.path.isdir(root): @@ -50,9 +52,12 @@ class Summain(cliapp.Application): pn = summainlib.PathNormalizer() else: pn = summainlib.SamePath() + checksums = [x.upper() + for x in self.settings['checksum'] or ['SHA1']] for root in args: for filename in self.files(root): - o = summainlib.FilesystemObject(filename, nn, pn, exclude) + o = summainlib.FilesystemObject(filename, nn, pn, exclude, + checksums) self.output.write(o.format(root if relative else None)) self.output.write('\n') diff --git a/summainlib.py b/summainlib.py index 3cc92d5..cf17fe2 100644 --- a/summainlib.py +++ b/summainlib.py @@ -160,7 +160,8 @@ class FilesystemObject(object): ''' - def __init__(self, filename, nn, pn, exclude, stat_result=None, sha1=None, + def __init__(self, filename, nn, pn, exclude, checksums, + stat_result=None, sha1=None, md5=None, open_file=None, readlink=None): self._filename = filename self._exclude = set(self._normalize_key(k) for k in exclude) diff --git a/summainlib_tests.py b/summainlib_tests.py index 7f8c45a..6fe7549 100644 --- a/summainlib_tests.py +++ b/summainlib_tests.py @@ -85,12 +85,13 @@ class FilesystemObjectTests(unittest.TestCase): self.nn = summainlib.NumberNormalizer() self.pn = summainlib.SamePath() self.exclude = [] + self.checksums = ['SHA1'] def new(self, name, mode=None): if mode is not None: self.st.st_mode = mode return summainlib.FilesystemObject(name, self.nn, self.pn, - self.exclude, + self.exclude, self.checksums, stat_result=self.st, sha1=FakeChecksummer(), md5=FakeChecksummer(), @@ -195,6 +196,7 @@ class FilesystemObjectNormalizedNumbersTests(unittest.TestCase): self.nn = summainlib.NumberNormalizer() self.pn = summainlib.SamePath() self.exclude = [] + self.checksums = ['SHA1'] def reset(self): self.dev += 1 @@ -206,7 +208,7 @@ class FilesystemObjectNormalizedNumbersTests(unittest.TestCase): st_uid=0, st_gid=0) self.ino += 1 return summainlib.FilesystemObject(name, self.nn, self.pn, - self.exclude, + self.exclude, self.checksums, stat_result=st, sha1=FakeChecksummer(), md5=FakeChecksummer(), |