[PATCH 4 of 5 V2] ui: echo prompt choice only if formatted output is acceptable
Yuya Nishihara
yuya at tcha.org
Sat Oct 11 00:53:50 CDT 2014
On Fri, 10 Oct 2014 19:17:41 +0200, Mads Kiilerich wrote:
> On 10/10/2014 05:09 PM, Yuya Nishihara wrote:
> > # HG changeset patch
> > # User Yuya Nishihara <yuya at tcha.org>
> > # Date 1412950877 -32400
> > # Fri Oct 10 23:21:17 2014 +0900
> > # Node ID 6dcb36c1781c7afbdcee20c793be20e90854e391
> > # Parent 80977d0b038a9a42a9b6819e77b80d343c1f711e
> > ui: echo prompt choice only if formatted output is acceptable
> >
> > 9ab18a912c44 is nice for test output, but it also affects command-server
> > clients or scripts that have to parse the output. So enables it only if
> > formatted output is acceptable.
> >
> > This should cover most of command-server clients but chg.
> >
> > diff --git a/mercurial/ui.py b/mercurial/ui.py
> > --- a/mercurial/ui.py
> > +++ b/mercurial/ui.py
> > @@ -684,7 +684,8 @@ class ui(object):
> > r = default
> > # sometimes self.interactive disagrees with isatty,
> > # show response provided on stdin when simulating
> > - if not self._isatty(self.fin):
> > + # but not for commandserver and other scripting
> > + if not self._isatty(self.fin) and self.formatted():
>
> This change is apparently on top of your change from self.isatty to
> self._isatty which isn't on selenic yet? I thought the change to _isatty
> already addressed the command server issue? Why is additional changes on
> top of that needed?
self._isatty() does nothing different than util.isatty() in this case.
I wrote that patch just because self.interactive() calls self._isatty().
But, it seems the original patch was already ninja queued?
> I liked the idea of automagically showing the selected option in the
> right cases. I do not so much like to piggy-back on ui.formatted and
> then explicitly set it all the places where we needed. Then it would be
> better to add a ui.shownonttypromptchoice configuration option ;-)
>
> Other tools scripting Mercurial might want to see the chosen output,
> just like the test suite. I agree that other tools doing the same thing
> (such as command server) don't want it. It would perhaps not be so bad
> to have a separate option for controlling this behaviour ... but I
> really like to have it this way in the test suite.
Right. Some tools will want to see the choice + '\n',
$ yes | hg xxx > output.log
but others won't
p = Popen('hg xxx', stdin=PIPE, stdout=PIPE)
do_some_interactive_thing(p)
...
Regards,
More information about the Mercurial-devel
mailing list