mercurial/ui.py
changeset 207 ec327cf0d3a9
child 234 3427806d5ab9
child 237 4f802588cdfb
child 241 afe895fcc0d0
equal deleted inserted replaced
206:3295b6b508de 207:ec327cf0d3a9
       
     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