46 self.quiet = (self.quiet or quiet) and not verbose and not debug |
46 self.quiet = (self.quiet or quiet) and not verbose and not debug |
47 self.verbose = (self.verbose or verbose) or debug |
47 self.verbose = (self.verbose or verbose) or debug |
48 self.debugflag = (self.debugflag or debug) |
48 self.debugflag = (self.debugflag or debug) |
49 self.interactive = (self.interactive and interactive) |
49 self.interactive = (self.interactive and interactive) |
50 |
50 |
51 def readconfig(self, fn): |
51 def readconfig(self, fn, root=None): |
52 if isinstance(fn, basestring): |
52 if isinstance(fn, basestring): |
53 fn = [fn] |
53 fn = [fn] |
54 for f in fn: |
54 for f in fn: |
55 try: |
55 try: |
56 self.cdata.read(f) |
56 self.cdata.read(f) |
57 except ConfigParser.ParsingError, inst: |
57 except ConfigParser.ParsingError, inst: |
58 raise util.Abort(_("Failed to parse %s\n%s") % (f, inst)) |
58 raise util.Abort(_("Failed to parse %s\n%s") % (f, inst)) |
|
59 # translate paths relative to root (or home) into absolute paths |
|
60 if root is None: |
|
61 root = os.path.expanduser('~') |
|
62 for name, path in self.configitems("paths"): |
|
63 if path.find("://") == -1 and not os.path.isabs(path): |
|
64 self.cdata.set("paths", name, os.path.join(root, path)) |
59 |
65 |
60 def setconfig(self, section, name, val): |
66 def setconfig(self, section, name, val): |
61 self.overlay[(section, name)] = val |
67 self.overlay[(section, name)] = val |
62 |
68 |
63 def config(self, section, name, default=None): |
69 def config(self, section, name, default=None): |
151 f = user.find('<') |
157 f = user.find('<') |
152 if f >= 0: |
158 if f >= 0: |
153 user = user[f+1:] |
159 user = user[f+1:] |
154 return user |
160 return user |
155 |
161 |
156 def expandpath(self, loc, root=""): |
162 def expandpath(self, loc): |
157 """Return repository location relative to cwd or from [paths]""" |
163 """Return repository location relative to cwd or from [paths]""" |
158 if os.path.exists(loc): |
164 if loc.find("://") != -1 or os.path.exists(loc): |
159 return loc |
165 return loc |
160 |
166 |
161 paths = {} |
167 return self.config("paths", loc, loc) |
162 for name, path in self.configitems("paths"): |
|
163 m = path.find("://") |
|
164 if m == -1: |
|
165 path = os.path.join(root, path) |
|
166 paths[name] = path |
|
167 |
|
168 return paths.get(loc, loc) |
|
169 |
168 |
170 def write(self, *args): |
169 def write(self, *args): |
171 for a in args: |
170 for a in args: |
172 sys.stdout.write(str(a)) |
171 sys.stdout.write(str(a)) |
173 |
172 |