Allow defaults for config.get_val() in case of missing user-config file.
authorW. Trevor King <wking@drexel.edu>
Fri, 19 Jun 2009 19:16:49 +0000 (15:16 -0400)
committerW. Trevor King <wking@drexel.edu>
Fri, 19 Jun 2009 19:16:49 +0000 (15:16 -0400)
Fixes bug introduced by James Rowe's previous patch:

  $ be list
  Traceback (most recent call last):
    ...
    File ".../libbe/rcs.py", line 34, in _get_matching_rcs
      import arch
    File ".../libbe/arch.py", line 29, in <module>
      client = config.get_val("arch_client")
    File ".../libbe/config.py", line 70, in get_val
    File "/usr/lib/python2.5/codecs.py", line 817, in open
      file = __builtin__.open(filename, mode, buffering)
  IOError: [Errno 2] No such file or directory: '/home/wking/.bugs_everywhere'

libbe/arch.py
libbe/config.py

index b6d01e1c32d149103cc96990104ff90bcb446db8..a2d6bde47bb0036aa16836ee955d7e4d9ada6b17 100644 (file)
@@ -26,9 +26,9 @@ import config
 from beuuid import uuid_gen
 from rcs import RCS, RCStestCase, CommandError
 
-client = config.get_val("arch_client")
-if client is None:
-    client = "tla"
+DEFAULT_CLIENT = "tla"
+
+client = config.get_val("arch_client", default=DEFAULT_CLIENT)
 
 def new():
     return Arch()
index 94c700ec7dcd67b2e900d5b630ab3ca6d2b0f4d8..9b1682a993e67b7ef714a870600bdb7e2cc6a1b4 100644 (file)
@@ -48,7 +48,7 @@ def set_val(name, value, section="DEFAULT", encoding=None):
     config.write(f)
     f.close()
 
-def get_val(name, section="DEFAULT", encoding=None):
+def get_val(name, section="DEFAULT", default=None, encoding=None):
     """
     Get a value from the per-user config file
 
@@ -64,15 +64,18 @@ def get_val(name, section="DEFAULT", encoding=None):
     >>> get_val("junk") is None
     True
     """
-    if encoding == None:
-        encoding = default_encoding
-    config = ConfigParser.ConfigParser()
-    f = codecs.open(path(), "r", encoding)
-    config.readfp(f, path())
-    f.close()
-    try:
-        return config.get(section, name)
-    except ConfigParser.NoOptionError:
-        return None
+    if os.path.exists(path()):
+        if encoding == None:
+            encoding = default_encoding
+        config = ConfigParser.ConfigParser()
+        f = codecs.open(path(), "r", encoding)
+        config.readfp(f, path())
+        f.close()
+        try:
+            return config.get(section, name)
+        except ConfigParser.NoOptionError:
+            return default
+    else:
+        return default
 
 suite = doctest.DocTestSuite()