mercurial/ui.py
changeset 8204 797586be575d
parent 8203 3377fa11af67
child 8205 00736cd2702a
equal deleted inserted replaced
8203:3377fa11af67 8204:797586be575d
    14 
    14 
    15 class ui(object):
    15 class ui(object):
    16     def __init__(self, src=None):
    16     def __init__(self, src=None):
    17         self._buffers = []
    17         self._buffers = []
    18         self.quiet = self.verbose = self.debugflag = self.traceback = False
    18         self.quiet = self.verbose = self.debugflag = self.traceback = False
    19         self.interactive = self.report_untrusted = True
    19         self.interactive = self._reportuntrusted = True
    20         self._ocfg = config.config() # overlay
    20         self._ocfg = config.config() # overlay
    21         self._tcfg = config.config() # trusted
    21         self._tcfg = config.config() # trusted
    22         self._ucfg = config.config() # untrusted
    22         self._ucfg = config.config() # untrusted
    23         self._trustusers = {}
    23         self._trustusers = {}
    24         self._trustgroups = {}
    24         self._trustgroups = {}
    61         user = util.username(st.st_uid)
    61         user = util.username(st.st_uid)
    62         group = util.groupname(st.st_gid)
    62         group = util.groupname(st.st_gid)
    63         if user in tusers or group in tgroups or user == util.username():
    63         if user in tusers or group in tgroups or user == util.username():
    64             return True
    64             return True
    65 
    65 
    66         if self.report_untrusted:
    66         if self._reportuntrusted:
    67             self.warn(_('Not trusting file %s from untrusted '
    67             self.warn(_('Not trusting file %s from untrusted '
    68                         'user %s, group %s\n') % (f, user, group))
    68                         'user %s, group %s\n') % (f, user, group))
    69         return False
    69         return False
    70 
    70 
    71     def readconfig(self, filename, root=None, trust=False,
    71     def readconfig(self, filename, root=None, trust=False,
   109         self.debugflag = self.configbool('ui', 'debug')
   109         self.debugflag = self.configbool('ui', 'debug')
   110         self.verbose = self.debugflag or self.configbool('ui', 'verbose')
   110         self.verbose = self.debugflag or self.configbool('ui', 'verbose')
   111         self.quiet = not self.debugflag and self.configbool('ui', 'quiet')
   111         self.quiet = not self.debugflag and self.configbool('ui', 'quiet')
   112         if self.verbose and self.quiet:
   112         if self.verbose and self.quiet:
   113             self.quiet = self.verbose = False
   113             self.quiet = self.verbose = False
   114         self.report_untrusted = self.configbool("ui", "report_untrusted", True)
   114         self._reportuntrusted = self.configbool("ui", "report_untrusted", True)
   115         self.interactive = self.configbool("ui", "interactive", self.isatty())
   115         self.interactive = self.configbool("ui", "interactive", self.isatty())
   116         self.traceback = self.configbool('ui', 'traceback', False)
   116         self.traceback = self.configbool('ui', 'traceback', False)
   117 
   117 
   118         # update trust information
   118         # update trust information
   119         for user in self.configlist('trusted', 'users'):
   119         for user in self.configlist('trusted', 'users'):
   132     def configsource(self, section, name, untrusted=False):
   132     def configsource(self, section, name, untrusted=False):
   133         return self._data(untrusted).source(section, name) or 'none'
   133         return self._data(untrusted).source(section, name) or 'none'
   134 
   134 
   135     def config(self, section, name, default=None, untrusted=False):
   135     def config(self, section, name, default=None, untrusted=False):
   136         value = self._data(untrusted).get(section, name, default)
   136         value = self._data(untrusted).get(section, name, default)
   137         if self.debugflag and not untrusted:
   137         if self.debugflag and not untrusted and self._reportuntrusted:
   138             uvalue = self._ucfg.get(section, name)
   138             uvalue = self._ucfg.get(section, name)
   139             if uvalue is not None and uvalue != value:
   139             if uvalue is not None and uvalue != value:
   140                 self.warn(_("Ignoring untrusted configuration option "
   140                 self.debug(_("ignoring untrusted configuration option "
   141                             "%s.%s = %s\n") % (section, name, uvalue))
   141                             "%s.%s = %s\n") % (section, name, uvalue))
   142         return value
   142         return value
   143 
   143 
   144     def configbool(self, section, name, default=False, untrusted=False):
   144     def configbool(self, section, name, default=False, untrusted=False):
   145         v = self.config(section, name, None, untrusted)
   145         v = self.config(section, name, None, untrusted)
   163         '''tell whether section exists in config.'''
   163         '''tell whether section exists in config.'''
   164         return section in self._data(untrusted)
   164         return section in self._data(untrusted)
   165 
   165 
   166     def configitems(self, section, untrusted=False):
   166     def configitems(self, section, untrusted=False):
   167         items = self._data(untrusted).items(section)
   167         items = self._data(untrusted).items(section)
   168         if self.debugflag and not untrusted:
   168         if self.debugflag and not untrusted and self._reportuntrusted:
   169             for k,v in self._ucfg.items(section):
   169             for k,v in self._ucfg.items(section):
   170                 if self._tcfg.get(section, k) != v:
   170                 if self._tcfg.get(section, k) != v:
   171                     self.warn(_("Ignoring untrusted configuration option "
   171                     self.debug(_("ignoring untrusted configuration option "
   172                                 "%s.%s = %s\n") % (section, k, v))
   172                                 "%s.%s = %s\n") % (section, k, v))
   173         return items
   173         return items
   174 
   174 
   175     def walkconfig(self, untrusted=False):
   175     def walkconfig(self, untrusted=False):
   176         cfg = self._data(untrusted)
   176         cfg = self._data(untrusted)