Skip to content

Instantly share code, notes, and snippets.

@pudney
Created June 9, 2010 17:11
Show Gist options
  • Save pudney/431818 to your computer and use it in GitHub Desktop.
Save pudney/431818 to your computer and use it in GitHub Desktop.
Zsh Completion Function for Maven
#compdef mvn
_mvn_targets () {
local -a commands
commands=('jetty\:run:Run Jetty from the current context.' 'validate:validate the project is correct and all necessary information is available' 'compile:compile the source code of the project' 'test:test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed' 'package:take the compiled code and package it in its distributable format, such as a JAR.' 'integration-test:process and deploy the package if necessary into an environment where integration tests can be run' 'verify:run any checks to verify the package is valid and meets quality criteria' 'install:install the package into the local repository, for use as a dependency in other projects locally' 'deploy:done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.' 'clean:remove all files generated by the previous build')
_describe -t commands 'maven targets' commands
}
_mvn_profiles () {
local -a mvn_profiles
mvn_profiles=($(sed -n 's/\(.*\)\(<id>\)\([[:graph:]]*\)\(<\/id>\)/\3/p' < ./pom.xml))
_describe -t mvn_profiles 'maven profiles' mvn_profiles
}
_mvn_defines () {
local -a commands
commands=('skipTests=true:Skips the Tests.' 'dev=true:Sets the Dev Flag')
_describe -t commands 'maven variables' commands
}
local curcontext=$curcontext ret=1
if [[ $words[1] = mvn ]]
then
_arguments '-P:Set Profiles:_mvn_profiles' \
'-D:Set Environment Variables:_mvn_defines' \
'*:foo:_mvn_targets'
else
_call_function ret _$words[1]
fi
@nicoulaj
Copy link

nicoulaj commented Mar 7, 2011

Hi, I have started writing a full completion function for Maven here: https://github.com/zsh-users/zsh-completions/blob/master/_mvn

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment