Added --config option to bin/hk.py to override built in config file path.
authorW. Trevor King <wking@drexel.edu>
Thu, 2 Sep 2010 19:23:07 +0000 (15:23 -0400)
committerW. Trevor King <wking@drexel.edu>
Thu, 2 Sep 2010 19:23:07 +0000 (15:23 -0400)
doc/config.txt
hooke/config.py
hooke/hooke.py

index 6b72780835f729ae95283b3b580a12e778f0bf60..4d7540bb47d9d91c7f28a70b77a30eb2d6bb9266 100644 (file)
@@ -44,12 +44,10 @@ default path list is
 * :file:`./.hooke.cfg`
 
 but alternatives can be specified from the command line launching
 * :file:`./.hooke.cfg`
 
 but alternatives can be specified from the command line launching
-Hooke.
+Hooke (``--config FILE``).
 
 .. _Filesystem Hierarchy Standard: http://www.pathname.com/fhs/
 
 
 .. _Filesystem Hierarchy Standard: http://www.pathname.com/fhs/
 
-.. todo:: Implement command-line specified config file.
-
 .. warning:: Any changes you make to the configuration during a Hooke
   run will *not be saved* when Hooke exits.  To save the changes,
   either run the `save config` command before closing Hooke, or start
 .. warning:: Any changes you make to the configuration during a Hooke
   run will *not be saved* when Hooke exits.  To save the changes,
   either run the `save config` command before closing Hooke, or start
index a8d006dc53ea69e288083d944d6a242947849f9f..d49841d6e20bc5733d7dbd37c21352a442381a30 100644 (file)
@@ -234,7 +234,7 @@ class HookeConfigParser (configparser.RawConfigParser):
                     self._config_paths.append(filename)
         # Can't use super() because RawConfigParser is a classic class
         #return super(HookeConfigParser, self).read(filenames)
                     self._config_paths.append(filename)
         # Can't use super() because RawConfigParser is a classic class
         #return super(HookeConfigParser, self).read(filenames)
-        return configparser.RawConfigParser.read(self, filenames)
+        return configparser.RawConfigParser.read(self, self._config_paths)
 
     def _write_setting(self, fp, section=None, option=None, value=None,
                        **kwargs):
 
     def _write_setting(self, fp, section=None, option=None, value=None,
                        **kwargs):
index 617ad92dd09209e1c3631d087fb30e7f139cc978..1942ac9d32c1e9fa2c065d934a7a0b267eea8c0e 100644 (file)
@@ -101,6 +101,8 @@ class Hooke (object):
         # Don't attach the logger because it contains an unpicklable
         # thread.lock.  Instead, grab it directly every time you need it.
         #self.log = logging.getLogger('hooke')
         # Don't attach the logger because it contains an unpicklable
         # thread.lock.  Instead, grab it directly every time you need it.
         #self.log = logging.getLogger('hooke')
+        log = logging.getLogger('hooke')
+        log.debug('config paths: %s' % self.config._config_paths)
 
     def load_plugins(self):
         self.plugins = plugin_mod.load_graph(
 
     def load_plugins(self):
         self.plugins = plugin_mod.load_graph(
@@ -230,6 +232,9 @@ def main():
     p.add_option(
         '-u', '--ui', dest='user_interface',
         help="Override the configured user interface (for easy switching).")
     p.add_option(
         '-u', '--ui', dest='user_interface',
         help="Override the configured user interface (for easy switching).")
+    p.add_option(
+        '--config', dest='config', metavar='FILE',
+        help="Override the default config file chain.")
     p.add_option(
         '--save-config', dest='save_config',
         action='store_true', default=False,
     p.add_option(
         '--save-config', dest='save_config',
         action='store_true', default=False,
@@ -243,6 +248,9 @@ def main():
             % (sys.argv[0], arguments)
         p.print_help(sys.stderr)
         sys.exit(1)
             % (sys.argv[0], arguments)
         p.print_help(sys.stderr)
         sys.exit(1)
+    if options.config != None:
+        config_mod.DEFAULT_PATHS = [
+            os.path.abspath(os.path.expanduser(options.config))]
 
     hooke = Hooke(debug=__debug__)
     runner = HookeRunner()
 
     hooke = Hooke(debug=__debug__)
     runner = HookeRunner()