207
|
1 |
# ui.py - user interface bits for mercurial
|
|
2 |
#
|
|
3 |
# Copyright 2005 Matt Mackall <mpm@selenic.com>
|
|
4 |
#
|
|
5 |
# This software may be used and distributed according to the terms
|
|
6 |
# of the GNU General Public License, incorporated herein by reference.
|
|
7 |
|
|
8 |
import os, tempfile, sys, re
|
|
9 |
|
|
10 |
class ui:
|
|
11 |
def __init__(self, verbose=False, debug=False, quiet=False,
|
|
12 |
interactive=True):
|
|
13 |
self.quiet = quiet and not verbose and not debug
|
|
14 |
self.verbose = verbose or debug
|
|
15 |
self.debugflag = debug
|
|
16 |
self.interactive = interactive
|
|
17 |
def write(self, *args):
|
|
18 |
for a in args:
|
|
19 |
sys.stdout.write(str(a))
|
|
20 |
def readline(self):
|
|
21 |
return sys.stdin.readline()[:-1]
|
|
22 |
def prompt(self, msg, pat, default = "y"):
|
|
23 |
if not self.interactive: return default
|
|
24 |
while 1:
|
|
25 |
self.write(msg, " ")
|
|
26 |
r = self.readline()
|
|
27 |
if re.match(pat, r):
|
|
28 |
return r
|
|
29 |
else:
|
|
30 |
self.write("unrecognized response\n")
|
|
31 |
def status(self, *msg):
|
|
32 |
if not self.quiet: self.write(*msg)
|
|
33 |
def warn(self, msg):
|
|
34 |
self.write(*msg)
|
|
35 |
def note(self, *msg):
|
|
36 |
if self.verbose: self.write(*msg)
|
|
37 |
def debug(self, *msg):
|
|
38 |
if self.debugflag: self.write(*msg)
|
|
39 |
def edit(self, text):
|
|
40 |
(fd, name) = tempfile.mkstemp("hg")
|
|
41 |
f = os.fdopen(fd, "w")
|
|
42 |
f.write(text)
|
|
43 |
f.close()
|
|
44 |
|
|
45 |
editor = os.environ.get("HGEDITOR") or os.environ.get("EDITOR", "vi")
|
|
46 |
r = os.system("%s %s" % (editor, name))
|
|
47 |
|
|
48 |
if r:
|
|
49 |
raise "Edit failed!"
|
|
50 |
|
|
51 |
t = open(name).read()
|
|
52 |
t = re.sub("(?m)^HG:.*\n", "", t)
|
|
53 |
|
|
54 |
return t
|
|
55 |
|