diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-03-20 11:00:26 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-03-20 11:00:26 +0000 |
commit | a19cb0ae64b9ed1b6e4ff1c4b015579904407bb7 (patch) | |
tree | b8b59ac22a42fefd249daeec1838367130c16a8e | |
parent | b134b49b52c0d2bfeaf2a5826bf68a6dad005afc (diff) | |
download | summain-a19cb0ae64b9ed1b6e4ff1c4b015579904407bb7.tar.gz |
Add --mangle-paths option.
-rwxr-xr-x | summain | 10 | ||||
-rw-r--r-- | summainlib.py | 14 |
2 files changed, 18 insertions, 6 deletions
@@ -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 |