Complétion maven pour zsh
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.