diff options
-rwxr-xr-x | be | 20 | ||||
-rw-r--r-- | libbe/cmdutil.py | 73 | ||||
-rw-r--r-- | libbe/cmdutil.pyc | bin | 5107 -> 756 bytes |
3 files changed, 16 insertions, 77 deletions
@@ -7,7 +7,9 @@ be comment: append a comment to a bug be set-root: assign the root directory for bug tracking """ from libbe.cmdutil import * +from libbe.bugdir import tree_root import sys +import os def list_bugs(args): bugs = list(tree_root(os.getcwd()).list()) @@ -16,15 +18,19 @@ def list_bugs(args): for bug in bugs: print "%s: %s" % (unique_name(bug, bugs), bug.summary) - - if len(sys.argv) == 1: print __doc__ else: - { - "list": list_bugs - }[sys.argv[1]](sys.argv[2:]) - - + try: + try: + cmd = { + "list": list_bugs + }[sys.argv[1]] + except KeyError, e: + raise UserError("Unknown command \"%s\"" % e.args[0]) + cmd(sys.argv[2:]) + except UserError, e: + print e + sys.exit(1) diff --git a/libbe/cmdutil.py b/libbe/cmdutil.py index 6c5285a..4cc7d12 100644 --- a/libbe/cmdutil.py +++ b/libbe/cmdutil.py @@ -1,73 +1,6 @@ -import os -import os.path - -class NoBugDir(Exception): - def __init__(self, path): - msg = "The directory \"%s\" has no bug directory." % path - Exception.__init__(self, msg) - self.path = path - - -def tree_root(dir): - rootdir = os.path.realpath(dir) - while (True): - versionfile=os.path.join(rootdir, ".be/version") - if os.path.exists(versionfile): - test_version(versionfile) - break; - elif rootdir == "/": - raise NoBugDir(dir) - rootdir=os.path.dirname(rootdir) - return BugDir(os.path.join(rootdir, ".be")) - -def test_version(path): - assert (file(path, "rb").read() == "Bugs Everywhere Tree 0 0\n") - -class BugDir: - def __init__(self, dir): - self.dir = dir - self.bugs_path = os.path.join(self.dir, "bugs") - - - def list(self): - for uuid in os.listdir(self.bugs_path): - if (uuid.startswith('.')): - continue - yield Bug(self.bugs_path, uuid) - def unique_name(bug, bugs): return bug.name -def file_property(name): - def getter(self): - return self._get_value(name) - def setter(self, value): - return self._set_value(name, value) - return property(getter, setter) - -class Bug(object): - def __init__(self, path, uuid): - self.path = os.path.join(path, uuid) - self.uuid = uuid - - def get_path(self, file): - return os.path.join(self.path, file) - - def _get_name(self): - return self._get_value("name") - - def _set_name(self, value): - return self._set_value("name", value) - - name = file_property("name") - summary = file_property("summary") - - def _set_status(self, status): - assert status in ("open", "closed") - - def _get_value(self, name): - return file(self.get_path(name), "rb").read().rstrip("\n") - - def _set_value(self, name, value): - file(self.get_path(name), "wb").write("%s\n" % value) - +class UserError(Exception): + def __init__(self, msg): + Exception.__init__(self, msg) diff --git a/libbe/cmdutil.pyc b/libbe/cmdutil.pyc Binary files differindex 8515fb9..1098304 100644 --- a/libbe/cmdutil.pyc +++ b/libbe/cmdutil.pyc |