Complétion maven pour zsh

by Maxime Biais on octobre 3rd, 2009

A ma grande déception zsh ne complète pas la commande maven. A force de taper des commandes mvn qqhcose, j’en avais assez, j’ai donc fait un petit script pour compléter les commandes que j’utilise le plus souvent avec maven et le plugin Scala :

function mainClasses {
    if [ -d ./src ] ; then
	find ./src/main -type f -iname "*.scala"  -o -iname "*.java" \
             | sed 's?.*src/main/[^/]*/\(.*\)\..*?-DmainClass=\1?' | sed 's+/+.+g'
    fi
}
 
function mainTests {
    if [ -d ./src ] ; then
	find ./src/test -type f -iname "*test*.scala"  -o -iname "*test*.java"  \
             | sed 's?.*src/test/[^/]*/\(.*\)\..*?-Dtest=\1?' | sed 's+/+.+g'
    fi
}
 
function listMavenCompletions {
reply=(archetype:generate compile clean package install test
    test-compile deploy release scala:run scala:cc
    -Dmaven.test.skip=true
    -DarchetypeCatalog=http://www.scala-tools.org/
    `mainClasses`
    `mainTests`
    -q -o
    );
 
}
 
compctl -K listMavenCompletions mvn%

Le script n’est pas idéal mais il permet de compléter les commandes que j’utilise le plus souvent mais aussi les -Dtest= et -DmainClass= automatiquement en listant les fichiers de l’arborescence de votre projet. L’ideal serait d’avoir une option dans maven pour lister les commandes disponibles, mais ça n’existe pas à ma connaissance.

Si vous utilisez d’autres commandes maven, ajouter les dans la liste reply (séparer par des espaces ou saut de lignes).

Vous pouvez copier ce script dans votre ~/.zshrc.

Post to Twitter Post to Delicious Post to Digg Post to Facebook Post to Reddit Post to StumbleUpon

Categorie : Compilation

Laisser un commentaire

Note: format XHTML. Votre adresse email ne sera pas publiee.

Subscribe to this comment feed via RSS