#!/usr/bin/python # Copyright (C) 2010, 2011 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import cliapp import os import sys import summainlib class Summain(cliapp.Application): def add_settings(self): self.add_boolean_setting(['relative-paths', 'r'], 'print paths relative to arguments') def files(self, root): if os.path.isdir(root): for dirname, dirnames, filenames in os.walk(root): yield dirname for filename in sorted(filenames): yield os.path.join(dirname, filename) else: yield root def process_args(self, args): relative = self['relative-paths'] normalizer = summainlib.NumberNormalizer() for root in args: for filename in self.files(root): o = summainlib.FilesystemObject(filename, normalizer) sys.stdout.write(o.format(root if relative else None)) sys.stdout.write('\n') Summain().run()