Un prompt pour bash avec Bazaar

J’ai vu de nombreux articles indiquant comment afficher les informations de git au sein de son prompt Bash, d’habitude en utilisant la fonction bash qui vient avec git: __git_ps1.

Comme j’utilise un système de contrôle des versions au quotidien (Bazaar, si vous ne connaissez pas, allez donc jeter un oeil), j’ai vite vu l’intérêt de la chose. Malheureusement, je n’ai pas trouvé d’équivalent de __git_ps1 pour Bazaar, j’ai donc écrit ma propre fonction Bash. Elle n’est pas aussi généraliste, mais rend bien service tout de même.

Voici le bout de code pour la fonction elle-même:

bzr_info() {
    status=`bzr status 2> /dev/null`
    revno=`bzr revno 2> /dev/null`
    parent=""
    if [ "$1" == "showparent" ]
    then
        parent=`bzr info | awk '/parent/ {print $3}'`
    fi
    if [ "$revno" != "" ]
    then
        echo -n "("
 
        if [ "$status" != "" ]
        then
            echo -n "*"
        fi
 
        if [ "$parent" != "" ]
        then
            echo -n "$parent:"
        else
            echo -n "bzr:"
        fi
 
        echo -n $revno
        echo -n ")"
    fi
}

Pour s’en servir, il suffit d’ajouter ce morceau de code dans votre prompt: \\$(bzr_info), comme ceci:

PS1="[\\u@\\h \\w\\$(bzr_info) \\$]"

Ce qui affichera ce genre de prompts:

[etenil@cray1 ~/Projects/test(bzr:121) $]
[etenil@cray1 ~/Projects/modified(*bzr:18) $]

Notez que si la branche a subi une modification non commitée, une étoile apparaît devant bzr. Vous pouvez aussi afficher la branche d’origine en passant l’argument showparent, comme ceci:

PS1="[\\u@\\h \\w\\$(bzr_info showparent) \\$]"

Et qui affichera ce genre de lignes:

[etenil@cray1 ~/Projects/test(http://bzr.ath.cx/test/trunk:121) $]
[etenil@cray1 ~/Projects/test(*http://bzr.ath.cx/test/trunk:121) $]

Néanmoins, afficher l’origine est un peu plus lent et peut prendre beaucoup de place sur le prompt. A vous de voir!

Vus : 1963
Publié par Etenil : 58