view mercurial/ui.py @ 267:497aa6d276d2

Initial import of hgit and hgk -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Initial import of hgit and hgk Support for git compatibility sufficient to run gitk on top of hg repositories. This includes: hgit diff-tree hgit rev-list hgit rev-tree hgit cat-file Signed-off-by: Chris Mason <mason@suse.com> hgk is a slightly modified version of gitk1.1 from Paul Mackerras. It has been changed to use hgit commands, and has support for the extended rev-list -c to speed up the commit listing. Signed-off-by: Chris Mason <mason@suse.com> manifest hash: 5a4a27135bc85bab2a3a1e35018a08a985d8d146 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCpVQ4ywK+sNU5EO8RAl3QAJ9p6VyZ8fCHfgt0p8ksgL2P215DXQCfZU47 d+u5GpZvkOTOc3+LU3Ny3nE= =rjsC -----END PGP SIGNATURE-----
author mpm@selenic.com
date Tue, 07 Jun 2005 00:00:56 -0800
parents 619e775aa7f9
children 5a1e6d27f399
line wrap: on
line source

# 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.

import os, sys, re

class ui:
    def __init__(self, verbose=False, debug=False, quiet=False,
                 interactive=True):
        self.quiet = quiet and not verbose and not debug
        self.verbose = verbose or debug
        self.debugflag = debug
        self.interactive = interactive
    def write(self, *args):
        for a in args:
            sys.stdout.write(str(a))
    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)
    def warn(self, *msg):
        self.write(*msg)
    def note(self, *msg):
        if self.verbose: self.write(*msg)
    def debug(self, *msg):
        if self.debugflag: self.write(*msg)
    def edit(self, text):
        import tempfile
        (fd, name) = tempfile.mkstemp("hg")
        f = os.fdopen(fd, "w")
        f.write(text)
        f.close()

        editor = os.environ.get("HGEDITOR") or os.environ.get("EDITOR", "vi")
        r = os.system("%s %s" % (editor, name))

        if r:
            raise "Edit failed!"

        t = open(name).read()
        t = re.sub("(?m)^HG:.*\n", "", t)

        return t