Made arch_client configurable
authorAaron Bentley <abentley@panoramicfeedback.com>
Fri, 11 Mar 2005 23:17:01 +0000 (23:17 +0000)
committerAaron Bentley <abentley@panoramicfeedback.com>
Fri, 11 Mar 2005 23:17:01 +0000 (23:17 +0000)
libbe/arch.py
libbe/config.py [new file with mode: 0644]

index 6cc3dbb351dce30fc8eb0a43bf3beab290dbafc1..b1b88fd89c28e18f223524a01bfdf542d8c97ca8 100644 (file)
@@ -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 (file)
index 0000000..bc05e9a
--- /dev/null
@@ -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