Ejemplo n.º 1
0
 def __setattr__(self, name, value):
     option = getattr(self._config, name, None)
     if option is None:
         # unknown config option, store to BaseConfig only
         return super(BaseConfig, self).__setattr__(name, value)
     if isinstance(value, Value):
         priority = value.priority
         value = value.value
     else:
         priority = PRIO_RUNTIME
     if value is None:
         try:
             option().set(priority, value)
         except Exception:
             pass
     else:
         try:
             if isinstance(value, list) or isinstance(value, tuple):
                 option().set(priority, cfg.VectorString(value))
             elif (isinstance(option(), cfg.OptionBool) or isinstance(
                     option(), cfg.OptionChildBool)) and isinstance(
                         value, int):
                 option().set(priority, bool(value))
             else:
                 option().set(priority, value)
         except RuntimeError as e:
             raise dnf.exceptions.ConfigError(_("Error parsing '%s': %s") %
                                              (value, str(e)),
                                              raw_error=str(e))
Ejemplo n.º 2
0
 def _search_inside_installroot(self, optname):
     opt = self._get_option(optname)
     prio = opt._get_priority()
     # dont modify paths specified on commandline
     if prio >= PRIO_COMMANDLINE:
         return
     val = opt._get()
     # if it exists inside installroot use it (i.e. adjust configuration)
     # for lists any component counts
     if not isinstance(val, str):
         if any(os.path.exists(os.path.join(self._get_value('installroot'),
                                            p.lstrip('/'))) for p in val):
             opt._set(cfg.VectorString([self._prepend_installroot_path(p) for p in val]), prio)
     elif os.path.exists(os.path.join(self._get_value('installroot'),
                                      val.lstrip('/'))):
         opt._set(self._prepend_installroot_path(val), prio)
Ejemplo n.º 3
0
 def _set(self, value, priority=PRIO_RUNTIME):
     """Set option's value if priority is equal or higher
        than curent priority."""
     if value is None:
         try:
             self._option.set(priority, value)
         except Exception:
             pass
     else:
         try:
             if isinstance(value, list) or isinstance(value, tuple):
                 self._option.set(priority, cfg.VectorString(value))
             elif (isinstance(self._option, cfg.OptionBool) or
                   isinstance(self._option, cfg.OptionChildBool)) and isinstance(value, int):
                 self._option.set(priority, bool(value))
             else:
                 self._option.set(priority, value)
         except RuntimeError as e:
             raise dnf.exceptions.ConfigError(_("Error parsing '%s': %s")
                                              % (value, str(e)),
                                              raw_error=str(e))
Ejemplo n.º 4
0
 def __init__(self, default=None):
     option = cfg.OptionStringList(cfg.VectorString(default))
     super(ListOption, self).__init__(option)
Ejemplo n.º 5
0
 def __init__(self, default=None, choices=()):
     option = cfg.OptionEnumString(default, cfg.VectorString(choices))
     super(SelectionOption, self).__init__(option)