##// END OF EJS Templates
Fix bug involving "hg debugwalk -Ipattern" from repository root.
Fix bug involving "hg debugwalk -Ipattern" from repository root.

File last commit:

r691:61c6b417 default
r892:f481c9b6 default
Show More
ui.py
108 lines | 3.4 KiB | text/x-python | PythonLexer
mpm@selenic.com
Move ui class to its own module...
r207 # ui.py - user interface bits for mercurial
#
# Copyright 2005 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
Bryan O'Sullivan
Demand-load most modules in the commands and ui modules....
r613 import os, ConfigParser
from demandload import *
demandload(globals(), "re socket sys util")
mpm@selenic.com
Move ui class to its own module...
r207
class ui:
def __init__(self, verbose=False, debug=False, quiet=False,
interactive=True):
mpm@selenic.com
ui: add configuration file support...
r285 self.cdata = ConfigParser.SafeConfigParser()
self.cdata.read(os.path.expanduser("~/.hgrc"))
self.quiet = self.configbool("ui", "quiet")
self.verbose = self.configbool("ui", "verbose")
self.debugflag = self.configbool("ui", "debug")
self.interactive = self.configbool("ui", "interactive", True)
self.quiet = (self.quiet or quiet) and not verbose and not debug
self.verbose = (self.verbose or verbose) or debug
self.debugflag = (self.debugflag or debug)
self.interactive = (self.interactive and interactive)
mpm@selenic.com
Add support for .hg/hgrc file...
r337 def readconfig(self, fp):
self.cdata.readfp(fp)
mpm@selenic.com
ui: add configuration file support...
r285 def config(self, section, val, default=None):
if self.cdata.has_option(section, val):
return self.cdata.get(section, val)
return default
def configbool(self, section, val, default=False):
if self.cdata.has_option(section, val):
return self.cdata.getboolean(section, val)
return default
def configitems(self, section):
if self.cdata.has_section(section):
return self.cdata.items(section)
return []
Matt Mackall
Add username/merge/editor to .hgrc...
r608 def username(self):
mpm@selenic.com
HG environment variables take precedence over hgrc...
r691 return (os.environ.get("HGUSER") or
self.config("ui", "username") or
Matt Mackall
Add username/merge/editor to .hgrc...
r608 os.environ.get("EMAIL") or
(os.environ.get("LOGNAME",
os.environ.get("USERNAME", "unknown"))
+ '@' + socket.getfqdn()))
mpm@selenic.com
[PATCH] Add ui.expandpath command...
r506 def expandpath(self, loc):
paths = {}
for name, path in self.configitems("paths"):
paths[name] = path
return paths.get(loc, loc)
mpm@selenic.com
Move ui class to its own module...
r207 def write(self, *args):
for a in args:
sys.stdout.write(str(a))
mpm@selenic.com
[PATCH] Make ui.warn write to stderr...
r565
def write_err(self, *args):
sys.stdout.flush()
for a in args:
sys.stderr.write(str(a))
mpm@selenic.com
Move ui class to its own module...
r207 def readline(self):
return sys.stdin.readline()[:-1]
def prompt(self, msg, pat, default = "y"):
if not self.interactive: return default
while 1:
self.write(msg, " ")
r = self.readline()
if re.match(pat, r):
return r
else:
self.write("unrecognized response\n")
def status(self, *msg):
if not self.quiet: self.write(*msg)
Thomas Arendsen Hein
ui.warn can use more than one argument like the other ui methods.
r234 def warn(self, *msg):
mpm@selenic.com
[PATCH] Make ui.warn write to stderr...
r565 self.write_err(*msg)
mpm@selenic.com
Move ui class to its own module...
r207 def note(self, *msg):
if self.verbose: self.write(*msg)
def debug(self, *msg):
if self.debugflag: self.write(*msg)
def edit(self, text):
mpm@selenic.com
import and startup cleanups...
r249 import tempfile
mpm@selenic.com
Move ui class to its own module...
r207 (fd, name) = tempfile.mkstemp("hg")
f = os.fdopen(fd, "w")
f.write(text)
f.close()
mpm@selenic.com
HG environment variables take precedence over hgrc...
r691 editor = (os.environ.get("HGEDITOR") or
self.config("ui", "editor") or
Matt Mackall
Add username/merge/editor to .hgrc...
r608 os.environ.get("EDITOR", "vi"))
Radoslaw "AstralStorm" Szkodzinski
Pass username to hgeditor, remove temporary file...
r662 os.environ["HGUSER"] = self.username()
mpm@selenic.com
[PATCH] Harden os.system...
r508 util.system("%s %s" % (editor, name), errprefix = "edit failed")
mpm@selenic.com
Move ui class to its own module...
r207
t = open(name).read()
t = re.sub("(?m)^HG:.*\n", "", t)
Radoslaw "AstralStorm" Szkodzinski
Pass username to hgeditor, remove temporary file...
r662 os.unlink(name)
mpm@selenic.com
Move ui class to its own module...
r207 return t