diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh index c93f57faf..945baac23 100644 --- a/plugins/mvn/mvn.plugin.zsh +++ b/plugins/mvn/mvn.plugin.zsh @@ -61,7 +61,65 @@ alias mvnjetty='mvn jetty:run' alias mvndt='mvn dependency:tree' alias mvns='mvn site' -function listMavenCompletions { +#realpath replacement for iOS - not always present +function _realpath { + if [[ -f "$1" ]] + then + # file *must* exist + if cd "$(echo "${1%/*}")" &>/dev/null + then + # file *may* not be local + # exception is ./file.ext + # try 'cd .; cd -;' *works!* + local tmppwd="$PWD" + cd - &>/dev/null + else + # file *must* be local + local tmppwd="$PWD" + fi + else + # file *cannot* exist + return 1 # failure + fi + + # reassemble realpath + echo "$tmppwd"/"${1##*/}" + return 1 #success +} + +function __pom_hierarchy { + local file=`_realpath "pom.xml"` + POM_HIERARCHY+=("~/.m2/settings.xml") + POM_HIERARCHY+=("$file") + while [ -n "$file" ] && grep -q "" $file; do + ##look for a new relativePath for parent pom.xml + local new_file=`grep -e ".*" $file | sed 's/.*//' | sed 's/<\/relativePath>.*//g'` + + ## is present but not defined. Asume ../pom.xml + if [ -z "$new_file" ]; then + new_file="../pom.xml" + fi + + ## if file exists continue else break + new_pom=`_realpath "${file%/*}/$new_file"` + if [ -n "$new_pom" ]; then + file=$new_pom + else + break + fi + POM_HIERARCHY+=("$file") + done +} + +function listMavenCompletions { + POM_HIERARCHY=() + __pom_hierarchy + local profiles=() + #current pom profiles + for item in ${POM_HIERARCHY[*]}; do + profiles=($profiles `[ -e $item ] && grep -e "" -A 1 $item | grep -e ".*" | sed 's?.*\(.*\)<\/id>.*?-P\1?'`) + done + reply=( # common lifecycle clean process-resources compile process-test-resources test-compile test package verify install deploy site @@ -174,10 +232,9 @@ function listMavenCompletions { archetype:generate generate-sources cobertura:cobertura -Dtest= `if [ -d ./src/test/java ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dtest=\1?' ; fi` - -P `[ -e "pom.xml" ] && grep -e "" -A 1 "pom.xml" | grep -e ".*" | sed 's?.*\(.*\)<\/id>.*?-P\1?'` + $profiles + ) - - ); } compctl -K listMavenCompletions mvn