aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--becommands/list.py2
-rw-r--r--becommands/new.py2
-rw-r--r--becommands/show.py2
-rw-r--r--libbe/cmdutil.py23
4 files changed, 26 insertions, 3 deletions
diff --git a/becommands/list.py b/becommands/list.py
index e89195b..5bd54a2 100644
--- a/becommands/list.py
+++ b/becommands/list.py
@@ -11,7 +11,7 @@ def execute(args):
if bug.severity not in severity:
return False
return True
- all_bugs = list(bugdir.tree_root(os.getcwd()).list())
+ all_bugs = list(cmdutil.bug_tree().list())
bugs = [b for b in all_bugs if filter(b) ]
if len(bugs) == 0:
print "No matching bugs found"
diff --git a/becommands/new.py b/becommands/new.py
index e36bc84..7c3a952 100644
--- a/becommands/new.py
+++ b/becommands/new.py
@@ -3,7 +3,7 @@ from libbe import bugdir, cmdutil, names
def execute(args):
if len(args) != 1:
raise cmdutil.UserError("Please supply a summary message")
- dir = bugdir.tree_root(".")
+ dir = cmdutil.bug_tree()
bug = dir.new_bug()
bug.creator = names.creator()
bug.severity = "minor"
diff --git a/becommands/show.py b/becommands/show.py
index cd74eae..3d1c9ed 100644
--- a/becommands/show.py
+++ b/becommands/show.py
@@ -3,7 +3,7 @@ from libbe import bugdir, cmdutil
import os
def execute(args):
- bug_dir = bugdir.tree_root(os.getcwd())
+ bug_dir = cmdutil.bug_tree()
if len(args) !=1:
raise cmdutil.UserError("Please specify a bug id.")
print cmdutil.bug_summary(cmdutil.get_bug(args[0], bug_dir),
diff --git a/libbe/cmdutil.py b/libbe/cmdutil.py
index ab0e8be..b550eb0 100644
--- a/libbe/cmdutil.py
+++ b/libbe/cmdutil.py
@@ -1,5 +1,7 @@
import bugdir
import plugin
+import os
+
def unique_name(bug, bugs):
chars = 1
for some_bug in bugs:
@@ -90,6 +92,27 @@ def underlined(instring):
return "%s\n%s" % (instring, "="*len(instring))
+
+def bug_tree(dir=None):
+ """Retrieve the bug tree specified by the user. If no directory is
+ specified, the current working directory is used.
+
+ :param dir: The directory to search for the bug tree in.
+
+ >>> bug_tree() is not None
+ True
+ >>> bug_tree("/")
+ Traceback (most recent call last):
+ UserErrorWrap: The directory "/" has no bug directory.
+ """
+ if dir is None:
+ dir = os.getcwd()
+ try:
+ return bugdir.tree_root(dir)
+ except bugdir.NoBugDir, e:
+ raise UserErrorWrap(e)
+
+
def _test():
import doctest
import sys