comparison mercurial/ui.py @ 8203:3377fa11af67

ui: privatize cdata vars
author Matt Mackall <mpm@selenic.com>
date Sun, 26 Apr 2009 16:50:44 -0500
parents 4746113269c7
children 797586be575d
comparison
equal deleted inserted replaced
8202:4746113269c7 8203:3377fa11af67
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.report_untrusted = True
20 self.overlay = config.config() 20 self._ocfg = config.config() # overlay
21 self.cdata = config.config() 21 self._tcfg = config.config() # trusted
22 self.ucdata = config.config() 22 self._ucfg = config.config() # untrusted
23 self._trustusers = {} 23 self._trustusers = {}
24 self._trustgroups = {} 24 self._trustgroups = {}
25 25
26 if src: 26 if src:
27 self.cdata = src.cdata.copy() 27 self._tcfg = src._tcfg.copy()
28 self.ucdata = src.ucdata.copy() 28 self._ucfg = src._ucfg.copy()
29 self.overlay = src.overlay.copy() 29 self._ocfg = src._ocfg.copy()
30 self._trustusers = src._trustusers.copy() 30 self._trustusers = src._trustusers.copy()
31 self._trustgroups = src._trustgroups.copy() 31 self._trustgroups = src._trustgroups.copy()
32 self.fixconfig() 32 self.fixconfig()
33 else: 33 else:
34 # we always trust global config files 34 # we always trust global config files
75 except IOError: 75 except IOError:
76 if not sections: # ignore unless we were looking for something 76 if not sections: # ignore unless we were looking for something
77 return 77 return
78 raise 78 raise
79 79
80 cdata = config.config() 80 cfg = config.config()
81 trusted = sections or trust or self._is_trusted(fp, filename) 81 trusted = sections or trust or self._is_trusted(fp, filename)
82 82
83 try: 83 try:
84 cdata.read(filename, fp, sections=sections) 84 cfg.read(filename, fp, sections=sections)
85 except error.ConfigError, inst: 85 except error.ConfigError, inst:
86 if trusted: 86 if trusted:
87 raise 87 raise
88 self.warn(_("Ignored: %s\n") % str(inst)) 88 self.warn(_("Ignored: %s\n") % str(inst))
89 89
90 if trusted: 90 if trusted:
91 self.cdata.update(cdata) 91 self._tcfg.update(cfg)
92 self.cdata.update(self.overlay) 92 self._tcfg.update(self._ocfg)
93 self.ucdata.update(cdata) 93 self._ucfg.update(cfg)
94 self.ucdata.update(self.overlay) 94 self._ucfg.update(self._ocfg)
95 95
96 if root is None: 96 if root is None:
97 root = os.path.expanduser('~') 97 root = os.path.expanduser('~')
98 self.fixconfig(root=root) 98 self.fixconfig(root=root)
99 99
100 def fixconfig(self, root=None): 100 def fixconfig(self, root=None):
101 # translate paths relative to root (or home) into absolute paths 101 # translate paths relative to root (or home) into absolute paths
102 root = root or os.getcwd() 102 root = root or os.getcwd()
103 for c in self.cdata, self.ucdata, self.overlay: 103 for c in self._tcfg, self._ucfg, self._ocfg:
104 for n, p in c.items('paths'): 104 for n, p in c.items('paths'):
105 if p and "://" not in p and not os.path.isabs(p): 105 if p and "://" not in p and not os.path.isabs(p):
106 c.set("paths", n, os.path.normpath(os.path.join(root, p))) 106 c.set("paths", n, os.path.normpath(os.path.join(root, p)))
107 107
108 # update ui options 108 # update ui options
120 self._trustusers[user] = 1 120 self._trustusers[user] = 1
121 for group in self.configlist('trusted', 'groups'): 121 for group in self.configlist('trusted', 'groups'):
122 self._trustgroups[group] = 1 122 self._trustgroups[group] = 1
123 123
124 def setconfig(self, section, name, value): 124 def setconfig(self, section, name, value):
125 for cdata in (self.overlay, self.cdata, self.ucdata): 125 for cfg in (self._ocfg, self._tcfg, self._ucfg):
126 cdata.set(section, name, value) 126 cfg.set(section, name, value)
127 self.fixconfig() 127 self.fixconfig()
128 128
129 def _data(self, untrusted): 129 def _data(self, untrusted):
130 return untrusted and self.ucdata or self.cdata 130 return untrusted and self._ucfg or self._tcfg
131 131
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:
138 uvalue = self.ucdata.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.warn(_("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
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:
169 for k,v in self.ucdata.items(section): 169 for k,v in self._ucfg.items(section):
170 if self.cdata.get(section, k) != v: 170 if self._tcfg.get(section, k) != v:
171 self.warn(_("Ignoring untrusted configuration option " 171 self.warn(_("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 cdata = self._data(untrusted) 176 cfg = self._data(untrusted)
177 for section in cdata.sections(): 177 for section in cfg.sections():
178 for name, value in self.configitems(section, untrusted): 178 for name, value in self.configitems(section, untrusted):
179 yield section, name, str(value).replace('\n', '\\n') 179 yield section, name, str(value).replace('\n', '\\n')
180 180
181 def username(self): 181 def username(self):
182 """Return default username to be used in commits. 182 """Return default username to be used in commits.