Mercurial > hg > config
comparison python/tree.py @ 671:eeb38dfa17d0
display directories only
| author | Jeff Hammel <k0scist@gmail.com> |
|---|---|
| date | Tue, 29 Apr 2014 15:06:48 -0700 |
| parents | 93dc0507ab3b |
| children |
comparison
equal
deleted
inserted
replaced
| 670:93dc0507ab3b | 671:eeb38dfa17d0 |
|---|---|
| 115 | 115 |
| 116 abspath = os.path.abspath(dirpath) | 116 abspath = os.path.abspath(dirpath) |
| 117 basename = os.path.basename(abspath) | 117 basename = os.path.basename(abspath) |
| 118 parent = os.path.dirname(abspath) | 118 parent = os.path.dirname(abspath) |
| 119 level = depth(abspath) - top | 119 level = depth(abspath) - top |
| 120 | |
| 121 # omit files if specified | |
| 122 if not display_files: | |
| 123 filenames = [] | |
| 120 | 124 |
| 121 # sort articles of interest | 125 # sort articles of interest |
| 122 for resource in (dirnames, filenames): | 126 for resource in (dirnames, filenames): |
| 123 resource[:] = sorted(resource, key=sort_key) | 127 resource[:] = sorted(resource, key=sort_key) |
| 124 | 128 |
| 157 filename)) | 161 filename)) |
| 158 for index, filename in enumerate(filenames)]) | 162 for index, filename in enumerate(filenames)]) |
| 159 | 163 |
| 160 return '\n'.join(retval) | 164 return '\n'.join(retval) |
| 161 | 165 |
| 166 | |
| 162 def main(args=sys.argv[1:]): | 167 def main(args=sys.argv[1:]): |
| 163 """CLI""" | 168 """CLI""" |
| 164 | 169 |
| 165 # parse command line options | 170 # parse command line options |
| 166 parser = argparse.ArgumentParser(description=__doc__) | 171 parser = argparse.ArgumentParser(description=__doc__) |
| 167 parser.add_argument('-a', '--ascii', dest='use_ascii', | 172 parser.add_argument('-a', '--ascii', dest='use_ascii', |
| 168 action='store_true', default=False, | 173 action='store_true', default=False, |
| 169 help="use ascii delimeters ({})".format(', '.join(ascii_delimeters.values()))) | 174 help="use ascii delimeters ({})".format(', '.join(ascii_delimeters.values()))) |
| 175 parser.add_argument('-d', '--no-files', dest='display_files', | |
| 176 action='store_false', default=True, | |
| 177 help='only display directories') | |
| 170 parser.add_argument('path', nargs='*', | 178 parser.add_argument('path', nargs='*', |
| 171 help="paths to display the tree of") | 179 help="directory paths to display the tree of") |
| 172 options = parser.parse_args(args) | 180 options = parser.parse_args(args) |
| 173 | 181 |
| 174 # get paths to operate on | 182 # get paths to operate on |
| 175 paths = options.path | 183 paths = options.path |
| 176 if not paths: | 184 if not paths: |
| 177 paths = ['.'] | 185 paths = ['.'] |
| 178 | 186 |
| 179 # sanity check | 187 # ensure each path is a directory |
| 180 not_directory = [arg for arg in paths | 188 not_directory = [arg for arg in paths |
| 181 if not os.path.isdir(arg)] | 189 if not os.path.isdir(arg)] |
| 182 if not_directory: | 190 if not_directory: |
| 183 parser.error("Not a directory: %s" % (', '.join(not_directory))) | 191 parser.error("Not a directory: {}".format(', '.join(not_directory))) |
| 184 | 192 |
| 185 delimeters = unicode_delimeters | 193 delimeters = unicode_delimeters |
| 186 if options.use_ascii: | 194 if options.use_ascii: |
| 187 delimeters = ascii_delimeters | 195 delimeters = ascii_delimeters |
| 188 | 196 |
| 197 # build function arguments | |
| 198 kw = delimeters.copy() | |
| 199 kw['display_files'] = options.display_files | |
| 200 | |
| 189 # print the tree | 201 # print the tree |
| 190 for arg in paths: | 202 for arg in paths: |
| 191 print (tree(arg, **delimeters)) | 203 print (tree(arg, **kw)) |
| 192 | 204 |
| 193 if __name__ == '__main__': | 205 if __name__ == '__main__': |
| 194 main() | 206 main() |
