From 8d6a6a2af58408c4066b753f28d5b13ae6ee587a Mon Sep 17 00:00:00 2001 From: Aaron Bentley Date: Wed, 9 Mar 2005 17:37:13 +0000 Subject: [PATCH] Moved code into bugdir, handled unknown commands --- be | 20 ++++++++----- libbe/cmdutil.py | 73 ++-------------------------------------------- libbe/cmdutil.pyc | Bin 5107 -> 756 bytes 3 files changed, 16 insertions(+), 77 deletions(-) diff --git a/be b/be index f1e6cb3..e87ed0b 100755 --- a/be +++ b/be @@ -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 index 8515fb9105267cb365f42bd43cdf68c3c0d8883d..1098304c6474fb1056f6600091f45f0eef9f90cc 100644 GIT binary patch delta 335 zcmeyY{)N@e`V%h~tFgXQG6NJa18D~!E>;E-DGUrP3=B~~1|vf%BSRV^Lkbf}q?v&s zGKz^Ig_$8(g9WH=vKGe_2}Y1ECLqDUSj-6|LyJ?3T#JhGC$2P}%*-b!U&6qU$;eQ{ zz)-`;(9FcZ2sAuc1Ek3hVn!^Zid-?s`rP7l4Ujp-Aft;@bJAd{XR@7Y90Lkz_jsO4v literal 5107 zcmbtYTW=dh6h5;~?5vwYXlTkss;o+-20_w3AR+Yunxuj!3z3S7NR?%KH^~Ou>+Y;c zEVVBL0Y8La$S>gg&g{jP7VMB{XJ=<;&hxi2N*a z>?TGhMnX?cj0B$iCUPb6({V+D3LlQwBv{kQx&-TTf@9TUQ&obRzN<;Fp_2^>d zZLf^%y!IsZB&x_OkyoBvd1A1Phqfx3k+4micy<;xf+z`lX`Dd9Hmh_RBhVrXc(pKw(hlI|D?&i#nS=_3L!e! zdzkH=#e;CK(+!7dKb-7!!@Yjg#n>AJ<235;jwUl)RH`aTn7Y|Aju(yEZVx+y5MtEz zVGsx7J|EpXCt}HZW&XL(Xb?+RR85a=qpn<2kNkxR+!q;%JX-(C2t0F{NV+cZxtQ!- zl|F*!;HK9mKd?bZ;z0Z^_W9X^`F?m8uEcIn&OM2@@UEUw{?*9P6f|$B-<99X+hU%l zn>k^}twL@fe-sdll(=Py$X%HFmoTyPCiU4kU? zoN`Xe&ysPdlk+$lDwmAINz@N5oflq4HnnyW(=@bcJC}gub4x2(kfdAnkP8~;ahjd% zsKPYyDN#yiFN-r`J59o{O=U>g?qCpe%T%OhZkugDZr$7j?Cv<{=KxUWGaTVyxZSxH z5V*oz9XG1MQ5Av9jM|^#x74^v*M5ix=w=&Fp~>XpEKI`2Glrt zo)b7Cu!ey(QVcsiuNRE&fGv$XK7x+hR`?%~!80M0fOQ}ew z$YQFqW--#@(*aLWz9Lt-Bo?jFicxMzrZJ>n;+7{{sv44&Z4yd~*Bp6FKMRsvnrpkpHYD{P) zJq?kbJN+!9tLEIRcF<~HJn1{Ul4Vt=TR=Vylh1gH5{fCDLRnOv_c191c406rvx++_ zvt5wc(uS(W9JrAA!$$Cz8qD$%h_b=fJ4=c zfXmvLRh*Tho%17xl(d*lZ`0HCiP-32S^wyTeOwl;<6G1DVs{*(8(wERJFW@mRh^?D zb}h1>x5#LQeeG;-uqF^;tzPbF-Vez7zGI#BQ8}uCfws;$L5I$QK%2B&t4hJATNRpA z(>^Df?l@7%l2HL*ofI|odYNtm1oI;BC?_uFgIP4IZdsKqdPGbXF-=tF37t|G;uQ*M zfbtccJBR6F8LwCGv>EW^_azSJF-bG?qK#DxeyF&ZbQQ}5BwxGoTxQ7J=&mm>vPs#b zs7G*cHAz{~+N4HKU*RDal``<6k5$w%eL&P{Q_o4u10^Ul_mz31OcOj+ZY$TZd<_lA zff_s}Rgy-JMT>Dw8(=#g3_8hVCM&91cd-lFKqr)d6LgtX(Js@>cbO!IR5R3|@AYFF z1`aRGO{o6q*uJTWoYk}3d%X(RrlOA76S8%xE^5W>S`YVMsao`*P|D^02M>wxPI zFuYA^sEeAugTy-j<#5r}+Efp|Aq=MIaaG5u zmeMYohMVK=IerAn>wl9GvgFB(4Nnx((YeqiQ(b-Yc414qE^AT-_tzZk76#w=-cHTm K^efxA{MtWZts6Q3 -- 2.26.2