Mvn: complete -DgroupId, -DartifactId and -Dversion contextually to each other

This commit is contained in:
Julien Nicoulaud 2011-08-07 01:29:24 +02:00
parent 5914bf328a
commit fb5fd3aa6a
1 changed files with 11 additions and 14 deletions

25
_mvn
View File

@ -91,8 +91,6 @@ _mvn() {
"($excl_opts -npu --no-plugin-updates -cpu --check-plugin-updates -up --update-plugins)"{-npu,--no-plugin-updates}'[suppress upToDate check for any relevant registered plugins]' "($excl_opts -npu --no-plugin-updates -cpu --check-plugin-updates -up --update-plugins)"{-npu,--no-plugin-updates}'[suppress upToDate check for any relevant registered plugins]'
"($excl_opts -r --reactor)"{-r,--reactor}'[dynamically build reactor from subdirectories]:reactor:_mvn_reactors' "($excl_opts -r --reactor)"{-r,--reactor}'[dynamically build reactor from subdirectories]:reactor:_mvn_reactors'
) )
else
return 1
fi fi
[[ -n ${(M)words:#"-pl"} || -n ${(M)words:#"--projects"} ]] && opts+=( [[ -n ${(M)words:#"-pl"} || -n ${(M)words:#"--projects"} ]] && opts+=(
@ -126,7 +124,7 @@ _mvn() {
"($excl_opts -U --update-snapshots -nsu --no-snapshot-updates -o --offline)"{-U,--update-snapshots}'[force a check for updated releases and snapshots on remote repositories]' \ "($excl_opts -U --update-snapshots -nsu --no-snapshot-updates -o --offline)"{-U,--update-snapshots}'[force a check for updated releases and snapshots on remote repositories]' \
"($excl_opts -nsu --no-snapshot-updates -U --update-snapshots -o --offline)"{-nsu,--no-snapshot-updates}'[Supress SNAPSHOT updates]' \ "($excl_opts -nsu --no-snapshot-updates -U --update-snapshots -o --offline)"{-nsu,--no-snapshot-updates}'[Supress SNAPSHOT updates]' \
"*"{-D-,--define}'[define a system property]:property:_mvn_properties' \ "*"{-D-,--define}'[define a system property]:property:_mvn_properties' \
"$opts[@]" \ "${opts[@]}" \
"($excl_opts)*: :_mvn_args" "($excl_opts)*: :_mvn_args"
} }
@ -135,13 +133,12 @@ _mvn_args() {
local alternatives; alternatives=( local alternatives; alternatives=(
'phases:phase:_mvn_phases' 'phases:phase:_mvn_phases'
) )
# Complete full form plugins only after the groupId's first dot
if [[ $words[CURRENT] == *.* ]]; then if [[ $words[CURRENT] == *.* ]]; then
alternatives+=('full-form-plugin-colon-goals:full form plugin colon goal:_mvn_full_form_plugin_colon_goals') alternatives+=('full-form-plugin-colon-goals:full form plugin colon goal:_mvn_full_form_plugin_colon_goals')
else else
alternatives+=('plugin-prefix-colon-goals:plugin prefix colon goal:_mvn_plugin_prefix_colon_goals') alternatives+=('plugin-prefix-colon-goals:plugin prefix colon goal:_mvn_plugin_prefix_colon_goals')
fi fi
_alternative $alternatives _alternative "${alternatives[@]}"
} }
(( $+functions[_mvn_phases] )) || (( $+functions[_mvn_phases] )) ||
@ -221,7 +218,7 @@ _mvn_plugin_prefixes() {
: ${cache_dir:=${ZDOTDIR:-$HOME}/.zcompcache} : ${cache_dir:=${ZDOTDIR:-$HOME}/.zcompcache}
plugins+=($cache_dir/mvn/plugins/[^:]#(:t)) plugins+=($cache_dir/mvn/plugins/[^:]#(:t))
fi fi
_describe -t 'plugins' 'plugin' plugins -S ':' _describe -t 'plugin-prefixes' 'plugin prefix' plugins -S ':'
} }
(( $+functions[_mvn_full_form_plugin_colon_goals] )) || (( $+functions[_mvn_full_form_plugin_colon_goals] )) ||
@ -453,8 +450,8 @@ _mvn_property_values() {
((#i)*pomFile*) _wanted pom-file expl 'POM file' _mvn_pom_files && ret=0;; ((#i)*pomFile*) _wanted pom-file expl 'POM file' _mvn_pom_files && ret=0;;
((#i)*file*) _wanted file expl 'file' _files && ret=0;; ((#i)*file*) _wanted file expl 'file' _files && ret=0;;
((#i)*groupId*) _wanted groupId expl 'groupId' _mvn_groupIds && ret=0;; ((#i)*groupId*) _wanted groupId expl 'groupId' _mvn_groupIds && ret=0;;
((#i)*artifactId*) _wanted artifactId expl 'artifactId' _mvn_groupId_artifactIds && ret=0;; ((#i)*artifactId*) _wanted artifactId expl 'artifactId' _mvn_groupId_artifactIds ${${(M)${(ps.:.)opt_args[(K)-D]}:#groupId=*}#groupId=} && ret=0;;
((#i)*version*) _wanted version expl 'version' _mvn_artifact_versions && ret=0;; ((#i)*version*) _wanted version expl 'version' _mvn_artifact_versions ${${(M)${(ps.:.)opt_args[(K)-D]}:#groupId=*}#groupId=}:${${(M)${(ps.:.)opt_args[(K)-D]}:#artifactId=*}#artifactId=} && ret=0;;
((#i)*repositoryId*) _message -e repositoryIds 'repositoryId' && ret=0;; # TODO Not implemented ((#i)*repositoryId*) _message -e repositoryIds 'repositoryId' && ret=0;; # TODO Not implemented
((#i)*classifier*) _message -e classifiers 'classifier' && ret=0;; ((#i)*classifier*) _message -e classifiers 'classifier' && ret=0;;
((#i)*scope*) _wanted scope expl 'scope' _mvn_scopes && ret=0;; ((#i)*scope*) _wanted scope expl 'scope' _mvn_scopes && ret=0;;
@ -478,13 +475,13 @@ _mvn_groupIds() {
[[ -z "$update_policy" ]] && zstyle ":completion:${curcontext}:" cache-policy _mvn_groupIds_caching_policy [[ -z "$update_policy" ]] && zstyle ":completion:${curcontext}:" cache-policy _mvn_groupIds_caching_policy
unset groupIds unset groupIds
if ( [[ ${+groupIds} -eq 0 ]] || _cache_invalid "mvn/repository/groupIds" ) && ! _retrieve_cache "mvn/repository/groupIds"; then if ( [[ ${+groupIds} -eq 0 ]] || _cache_invalid "mvn/repositories/${repository_location}/groupIds" ) && ! _retrieve_cache "mvn/repositories/${repository_location}/groupIds"; then
groupIds=($repository_location/**/) groupIds=($repository_location/**/)
groupIds=(${${${(u)groupIds:h:h}#"$repository_location/"}//\//.}) groupIds=(${${${(u)groupIds:h:h}#"$repository_location/"}//\//.})
[[ $#groupIds -gt 0 ]] && _store_cache "mvn/repository/groupIds" groupIds [[ $#groupIds -gt 0 ]] && _store_cache "mvn/repositories/${repository_location}/groupIds" groupIds
fi fi
[[ $#groupIds -gt 0 ]] && _multi_parts "$@" . groupIds && ret=0 #FIXME [[ $#groupIds -gt 0 ]] && _multi_parts "$@" . groupIds && ret=0
return ret return ret
} }
@ -500,7 +497,7 @@ _mvn_groupId_artifactIds() {
# FIXME Handle case where no groupId given or invalid one # FIXME Handle case where no groupId given or invalid one
local groupId_repository="${repository_location}/${groupId//\.//}" local groupId_repository="${repository_location}/${groupId//\.//}"
artifactIds=($groupId_repository/*/*/*.pom(:h:h:t)) artifactIds=($groupId_repository/*/*/*.pom(:h:h:t))
_describe -t "artifactIds" "artifactId" artifactIds $@[0,-2] _describe -t "artifactIds" "$groupId artifactId" artifactIds $@[0,-2]
} }
(( $+functions[_mvn_artifact_versions] )) || (( $+functions[_mvn_artifact_versions] )) ||
@ -551,9 +548,9 @@ _mvn_properties_caching_policy() {
} }
_mvn_groupIds_caching_policy() { _mvn_groupIds_caching_policy() {
# Rebuild if cache is older than one hour. # Rebuild if cache is older than one month.
local -a oldp local -a oldp
oldp=( "$1"(Nmh+1) ) oldp=( "$1"(NmM+1) )
(( $#oldp )) (( $#oldp ))
} }