From: Aaron Bentley Date: Fri, 11 Mar 2005 23:17:01 +0000 (+0000) Subject: Made arch_client configurable X-Git-Tag: 1.0.0~357 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=3eedd5b584914022b53b59ec6abf0bb4b04aa12c;p=be.git Made arch_client configurable --- diff --git a/libbe/arch.py b/libbe/arch.py index 6cc3dbb..b1b88fd 100644 --- a/libbe/arch.py +++ b/libbe/arch.py @@ -1,15 +1,26 @@ from popen2 import Popen4 import os +import config +client = config.get_val("arch_client") +if client is None: + client = "tla" + config.set_val("arch_client", client) def invoke(args): q=Popen4(args) output = q.fromchild.read() status = q.wait() if os.WIFEXITED(status): - return (os.WEXITSTATUS(status)) + return os.WEXITSTATUS(status) + raise Exception("Command failed") + +def invoke_client(*args, **kwargs): + status = invoke((client,) + args) + if status not in (0,): + raise Exception("Command failed") def add_id(filename): - return invoke(("tla", "add-id", filename)) + invoke_client("add-id", filename) def delete_id(filename): - return invoke(("tla", "delete-id", filename)) + invoke_client("delete-id", filename) diff --git a/libbe/config.py b/libbe/config.py new file mode 100644 index 0000000..bc05e9a --- /dev/null +++ b/libbe/config.py @@ -0,0 +1,44 @@ +import ConfigParser +import os.path +def path(): + """Return the path to the per-user config file""" + return os.path.expanduser("~/.bugs_everywhere") + +def set_val(name, value, section="DEFAULT"): + """Set a value in the per-user config file + + :param name: The name of the value to set + :param value: The new value to set (or None to delete the value) + :param section: The section to store the name/value in + """ + config = ConfigParser.ConfigParser() + config.read(path()) + if value is not None: + config.set(section, name, value) + else: + config.remove_option(section, name) + config.write(file(path(), "wb")) + pass + +def get_val(name, section="DEFAULT"): + """ + Get a value from the per-user config file + + :param name: The name of the value to get + :section: The section that the name is in + :return: The value, or None + >>> get_val("junk") is None + True + >>> set_val("junk", "random") + >>> get_val("junk") + 'random' + >>> set_val("junk", None) + >>> get_val("junk") is None + True + """ + config = ConfigParser.ConfigParser() + config.read(path()) + try: + return config.get(section, name) + except ConfigParser.NoOptionError: + return None