summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-06-11 19:54:15 +0100
committerLars Wirzenius <liw@liw.fi>2011-06-11 19:54:15 +0100
commit8d2493c09465f933bf72922b118078813cae8d37 (patch)
tree5795e93172c3bfa49cc350d397a3a5ac6adcb21a
parent6dee09fe1b6bf92ae8bd190edc014df84fea19cb (diff)
downloadsummain-8d2493c09465f933bf72922b118078813cae8d37.tar.gz
Add --checksum option to allow choosing checksums to compute.
Only SHA1 is computed by default.
-rwxr-xr-xsummain7
-rw-r--r--summainlib.py3
-rw-r--r--summainlib_tests.py6
3 files changed, 12 insertions, 4 deletions
diff --git a/summain b/summain
index 2ff1b21..ac9d7c9 100755
--- a/summain
+++ b/summain
@@ -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(),