Yet another new color theme
[pysize.git] / pysize.py
blobbd63950776b7fe75f45cbc26d2267960300af5e7
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
7 from core.sigquit_traceback import install_sigquit_traceback
9 def _ui_auto(options, args):
10 """Automatically choose the best available UI."""
11 if ui_gtk.is_available():
12 return ui_gtk.run(options, args)
14 if ui_curses.is_available():
15 return ui_curses.run(options, args)
17 if ui_ascii.is_available():
18 return ui_ascii.run(options, args)
20 print 'No UI available'
22 UI = {'ascii': ui_ascii.run, 'curses': ui_curses.run,
23 'gtk': ui_gtk.run, 'auto': _ui_auto}
25 def _main():
26 install_sigquit_traceback()
27 parser = optparse.OptionParser(usage='pysize [OPTIONS] DIRECTORY')
28 parser.add_option('--ui', type='choice', choices=UI.keys(), default='auto')
29 parser.add_option('--max-depth', type='int', dest='max_depth', default=5)
30 (options, args) = parser.parse_args()
31 if len(args) != 1:
32 print parser.error('A single argument is expected')
34 UI[options.ui](options, args)
36 def _prof():
37 try:
38 import cProfile
39 import pstats
40 cProfile.run('_main()', 'pysize.prof')
41 stats = pstats.Stats('pysize.prof')
42 except ImportError:
43 import hotshot
44 import hotshot.stats
45 prof = hotshot.Profile('pysize.prof')
46 prof.runcall(_main)
47 prof.close()
48 stats = hotshot.stats.load('pysize.prof')
49 stats.strip_dirs()
50 stats.sort_stats('time', 'calls')
51 stats.print_stats(40)
53 if __name__ == '__main__':
54 try:
55 # Try to use psyco if available
56 import psyco
57 psyco.full()
58 except ImportError:
59 pass
60 _main()