commit:     6f8ff85d752f7cbadb9c41e21f43775c902fada7
Author:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 18 23:23:57 2014 +0000
Commit:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
CommitDate: Thu Sep 18 23:23:57 2014 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/layman.git;a=commit;h=6f8ff85d

argparser.py: Fixes override of overlay_defs config option

---
 layman/argsparser.py | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/layman/argsparser.py b/layman/argsparser.py
index 9c29b47..6aeda44 100644
--- a/layman/argsparser.py
+++ b/layman/argsparser.py
@@ -277,7 +277,7 @@ class ArgsParser(BareConfig):
         self.options = self.parser.parse_args()
         self.options = vars(self.options)
         # Applying interpolation of values
-        for v in ['configdir', 'config', 'overlay_defs']:
+        for v in ['configdir', 'config']:
             self.options[v] = self.options[v] % self.options
             self.defaults[v] = self.options[v]
 
@@ -302,11 +302,6 @@ class ArgsParser(BareConfig):
             self.defaults['config'] = self.defaults['config'] \
                 % {'configdir': self.defaults['configdir']}
 
-        if self.options['overlay_defs'] is not None:
-            self.defaults['overlay_defs'] = self.options['overlay_defs']
-            self.output.debug('ARGSPARSER: Got overlay_defs location at ' + \
-                self.defaults['overlay_defs'], 8)
-
         self._options['setup_help'] = self.options['setup_help']
 
         # Now parse the config file
@@ -314,6 +309,21 @@ class ArgsParser(BareConfig):
             self.defaults['config'], 8)
         self.read_config(self.defaults)
 
+
+        # Handle the overlay_defs option:
+        if ('%(configdir)s' in self.options['overlay_defs']
+            and self.config.has_option('MAIN', 'overlay_defs')):
+            # If it hasn't been interpolated then it's not being set as a
+            # command line argument. So we first try to set it to the config
+            # value.
+            self.options['overlay_defs'] = self.config.get('MAIN',
+                                                           'overlay_defs')
+        elif self.defaults['overlay_defs'] == self.options['overlay_defs']:
+            # If it isn't a command line argument and no config option then
+            # set it to the default.
+            self.defaults['overlay_defs'] = self.defaults['overlay_defs'] % 
self.options
+            self.options['overlay_defs'] = self.defaults['overlay_defs']
+
         # handle quietness
         if self.options['quiet']:
             self.set_option('quiet', True)

Reply via email to