Implemented plugin system for viewing commands
[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 "%s: %s" % (name, desc)
40 else:
41     try:
42         try:
43             cmd = {
44                 "list": becommands.list.execute,
45                 "show": becommands.show.execute,
46                 "set-root": becommands.set_root.execute,
47                 "new": becommands.new.execute,
48                 "close": becommands.close.execute,
49                 "open": becommands.open.execute,
50                 "severity": becommands.severity.execute,
51             }[sys.argv[1]]
52         except KeyError, e:
53             raise UserError("Unknown command \"%s\"" % e.args[0])
54         cmd(sys.argv[2:])
55     except UserError, e:
56         print e
57         sys.exit(1)