summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsummain10
-rw-r--r--summainlib.py14
2 files changed, 18 insertions, 6 deletions
diff --git a/summain b/summain
index 8759fd4..de62c4b 100755
--- a/summain
+++ b/summain
@@ -27,6 +27,8 @@ class Summain(cliapp.Application):
def add_settings(self):
self.settings.add_boolean_setting(['relative-paths', 'r'],
'print paths relative to arguments')
+ self.settings.add_boolean_setting(['mangle-paths', 'm'],
+ 'mangle (obfuscate) paths')
def files(self, root):
if os.path.isdir(root):
@@ -39,10 +41,14 @@ class Summain(cliapp.Application):
def process_args(self, args):
relative = self.settings['relative-paths']
- normalizer = summainlib.NumberNormalizer()
+ nn = summainlib.NumberNormalizer()
+ if self.settings['mangle-paths']:
+ pn = summainlib.PathNormalizer()
+ else:
+ pn = summainlib.SamePath()
for root in args:
for filename in self.files(root):
- o = summainlib.FilesystemObject(filename, normalizer)
+ o = summainlib.FilesystemObject(filename, nn, pn)
self.output.write(o.format(root if relative else None))
self.output.write('\n')
diff --git a/summainlib.py b/summainlib.py
index ef7c333..c668e31 100644
--- a/summainlib.py
+++ b/summainlib.py
@@ -142,6 +142,12 @@ class PathNormalizer(object):
return result
+class SamePath(object): # pragma: no cover
+
+ def normalize(self, path):
+ return path
+
+
class FilesystemObject(object):
'''An object in the file system.
@@ -153,7 +159,7 @@ class FilesystemObject(object):
'''
- def __init__(self, filename, normalizer, stat_result=None, sha1=None,
+ def __init__(self, filename, nn, pn, stat_result=None, sha1=None,
open_file=None, readlink=None):
stat_result = stat_result or os.lstat(filename)
sha1 = sha1 or hashlib.sha1()
@@ -161,11 +167,11 @@ class FilesystemObject(object):
readlink = readlink or os.readlink
self.values = dict()
- self['Name'] = filename
+ self['Name'] = pn.normalize(filename)
self['Mtime'] = self.format_time(stat_result.st_mtime)
self['Mode'] = '%o' % stat_result.st_mode
- self['Ino'] = '%d' % normalizer.get_ino(stat_result.st_ino)
- self['Dev'] = '%d' % normalizer.get_dev(stat_result.st_dev)
+ self['Ino'] = '%d' % nn.get_ino(stat_result.st_ino)
+ self['Dev'] = '%d' % nn.get_dev(stat_result.st_dev)
self['Nlink'] = '%d' % stat_result.st_nlink
if not stat.S_ISDIR(stat_result.st_mode):
self['Size'] = '%d' % stat_result.st_size