Switched to exception help handling
[be.git] / be
1 #!/usr/bin/env python
2 from libbe.cmdutil import *
3 from libbe.bugdir import tree_root, create_bug_dir
4 from libbe import names, plugin, cmdutil
5 import sys
6 import os
7 import becommands.severity
8 import becommands.list
9 import becommands.show
10 import becommands.set_root
11 import becommands.new
12 import becommands.close
13 import becommands.open
14 __doc__ = """Bugs Everywhere - Distributed bug tracking
15
16 Supported becommands
17  set-root: assign the root directory for bug tracking
18       new: Create a new bug
19      list: list bugs
20      show: show a particular bug
21     close: close a bug
22      open: re-open a bug
23  severity: %s
24
25 Unimplemented becommands
26   comment: append a comment to a bug
27 """ % becommands.severity.__desc__
28
29
30
31 if len(sys.argv) == 1:
32     cmdlist = []
33     print """Bugs Everywhere - Distributed bug tracking
34     
35 Supported commands"""
36     for name, module in cmdutil.iter_commands():
37         cmdlist.append((name, module.__doc__))
38     for name, desc in cmdlist:
39         print "be %s\n    %s" % (name, desc)
40 else:
41     try:
42         try:
43             sys.exit(execute(sys.argv[1], sys.argv[2:]))
44         except KeyError, e:
45             raise UserError("Unknown command \"%s\"" % e.args[0])
46         except cmdutil.GetHelp:
47             print cmdutil.help(sys.argv[1])
48             sys.exit(0)
49         except cmdutil.UsageError:
50             print cmdutil.help(sys.argv[1])
51             sys.exit(1)
52     except UserError, e:
53         print e
54         sys.exit(1)