Selective redraw
[pysize.git] / pysize.py
blobff106305767931b0c1034969164e5bcd0a7cb0b3
1 #!/usr/bin/env python
3 import optparse
4 from ui.ascii import ui_ascii
5 from ui.curses import ui_curses
6 from ui.gtk import ui_gtk
8 def _ui_auto(options, args):
9 """Automatically choose the best available UI."""
10 if ui_gtk.is_available():
11 return ui_gtk.run(options, args)
13 if ui_curses.is_available():
14 return ui_curses.run(options, args)
16 if ui_ascii.is_available():
17 return ui_ascii.run(options, args)
19 print 'No UI available'
21 UI = {'ascii': ui_ascii.run, 'curses': ui_curses.run,
22 'gtk': ui_gtk.run, 'auto': _ui_auto}
24 def _main():
25 parser = optparse.OptionParser(usage='pysize [OPTIONS] DIRECTORY')
26 parser.add_option('--ui', type='choice', choices=UI.keys(), default='auto')
27 parser.add_option('--max-depth', type='int', dest='max_depth', default=5)
28 (options, args) = parser.parse_args()
29 if len(args) != 1:
30 print parser.error('A single argument is expected')
32 UI[options.ui](options, args)
34 def _prof():
35 try:
36 import cProfile
37 import pstats
38 cProfile.run('_main()', 'pysize.prof')
39 stats = pstats.Stats('pysize.prof')
40 except ImportError:
41 import hotshot
42 import hotshot.stats
43 prof = hotshot.Profile('pysize.prof')
44 prof.runcall(_main)
45 prof.close()
46 stats = hotshot.stats.load('pysize.prof')
47 stats.strip_dirs()
48 stats.sort_stats('time', 'calls')
49 stats.print_stats(40)
51 if __name__ == '__main__':
52 try:
53 # Try to use psyco if available
54 import psyco
55 psyco.full()
56 except ImportError:
57 pass
58 _main()