Anulando a largura do terminal no comando Mercurial

1

Alguns comandos do Mercurial formatam a saída de maneira diferente, dependendo da largura do terminal. Isso é conveniente quando preciso apenas examinar a saída, mas é muito inconveniente quando a saída não é enviada para o terminal, mas sim para um canal ou arquivo.

Existe alguma maneira em que eu possa sobrescrever a largura do terminal e fazer o Mercurial formatar a saída otimizada para uma largura que eu especifique na linha de comando?

Aqui está um exemplo do problema que estou tendo:

$ hg log --stat -r 4210 | wc
     10      37     375
$ hg log --stat -r 4210 | wc
     10      37     375
$ hg log --stat -r 4210 | wc
     10      37     512
$ hg log --stat -r 4210 | wc
     10      37     512
$ 

Eu mudei o tamanho da janela no meio dessa seqüência de comandos, e o Mercurial começou a produzir resultados diferentes. O que eu gostaria é algo assim:

$ hg log --width 79 --stat -r 4210 | wc
     10      37     374
$ 

Onde eu posso de alguma forma especificar que eu quero a saída formatada como se o terminal tivesse 79 caracteres de largura, independentemente da largura real do terminal.

    
por kasperd 29.03.2015 / 11:25

1 resposta

0

A seguinte função pode ser encontrada em /usr/lib/python2.7/dist-packages/mercurial/ui.py :

def termwidth(self):
    '''how wide is the terminal in columns?
    '''
    if 'COLUMNS' in os.environ:
        try:
            return int(os.environ['COLUMNS'])
        except ValueError:
            pass
    return util.termwidth()

A partir disso, fica claro que a resposta é simplesmente escrever COLUMNS=79 na frente do comando hg para obter o resultado desejado:

$ COLUMNS=79 hg log --stat -r 4210 | wc
     10      37     374
    
por kasperd 16.04.2015 / 13:50