##// END OF EJS Templates
ui.py: normalize settings every time the configuration changes...
Alexis S. L. Carvalho -
r3347:bce7c1b4 default
parent child Browse files
Show More
@@ -71,21 +71,34 b' class ui(object):'
71 self.cdata.read(f)
71 self.cdata.read(f)
72 except ConfigParser.ParsingError, inst:
72 except ConfigParser.ParsingError, inst:
73 raise util.Abort(_("Failed to parse %s\n%s") % (f, inst))
73 raise util.Abort(_("Failed to parse %s\n%s") % (f, inst))
74 # translate paths relative to root (or home) into absolute paths
75 if root is None:
76 root = os.path.expanduser('~')
77 for name, path in self.configitems("paths"):
78 if path and "://" not in path and not os.path.isabs(path):
79 self.cdata.set("paths", name, os.path.join(root, path))
80 # override data from config files with data set with ui.setconfig
74 # override data from config files with data set with ui.setconfig
81 if self.overlay:
75 if self.overlay:
82 updateconfig(self.overlay, self.cdata)
76 updateconfig(self.overlay, self.cdata)
77 if root is None:
78 root = os.path.expanduser('~')
79 self.fixconfig(root=root)
83 for hook in self.readhooks:
80 for hook in self.readhooks:
84 hook(self)
81 hook(self)
85
82
86 def addreadhook(self, hook):
83 def addreadhook(self, hook):
87 self.readhooks.append(hook)
84 self.readhooks.append(hook)
88
85
86 def fixconfig(self, section=None, name=None, value=None, root=None):
87 # translate paths relative to root (or home) into absolute paths
88 if section is None or section == 'paths':
89 if root is None:
90 root = os.getcwd()
91 items = section and [(name, value)] or []
92 for cdata in self.cdata, self.overlay:
93 if not cdata: continue
94 if not items and cdata.has_section('paths'):
95 pathsitems = cdata.items('paths')
96 else:
97 pathsitems = items
98 for n, path in pathsitems:
99 if path and "://" not in path and not os.path.isabs(path):
100 cdata.set("paths", n, os.path.join(root, path))
101
89 def setconfig(self, section, name, value):
102 def setconfig(self, section, name, value):
90 if not self.overlay:
103 if not self.overlay:
91 self.overlay = ConfigParser.SafeConfigParser()
104 self.overlay = ConfigParser.SafeConfigParser()
@@ -93,6 +106,7 b' class ui(object):'
93 if not cdata.has_section(section):
106 if not cdata.has_section(section):
94 cdata.add_section(section)
107 cdata.add_section(section)
95 cdata.set(section, name, value)
108 cdata.set(section, name, value)
109 self.fixconfig(section, name, value)
96
110
97 def _config(self, section, name, default, funcname):
111 def _config(self, section, name, default, funcname):
98 if self.cdata.has_option(section, name):
112 if self.cdata.has_option(section, name):
General Comments 0
You need to be logged in to leave comments. Login now