mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-12-29 00:10:12 +08:00
mvn: add dynamic profile support to mvn completion
* Maven profiles for current pom.xml file * Maven profiles for pom hierarchy * Ommiting comments in profiles
This commit is contained in:
parent
d0a0421e10
commit
fff756069f
@ -68,8 +68,66 @@ alias mvntc='mvn tomcat:run'
|
|||||||
alias mvntc7='mvn tomcat7:run'
|
alias mvntc7='mvn tomcat7:run'
|
||||||
alias mvn-updates='mvn versions:display-dependency-updates'
|
alias mvn-updates='mvn versions:display-dependency-updates'
|
||||||
|
|
||||||
|
#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 "<parent>" $file; do
|
||||||
|
##look for a new relativePath for parent pom.xml
|
||||||
|
local new_file=`grep -e "<relativePath>.*</relativePath>" $file | sed 's/.*<relativePath>//' | sed 's/<\/relativePath>.*//g'`
|
||||||
|
|
||||||
|
## <parent> 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 {
|
function listMavenCompletions {
|
||||||
|
POM_HIERARCHY=()
|
||||||
|
__pom_hierarchy
|
||||||
|
|
||||||
|
profiles=()
|
||||||
|
#current pom profiles
|
||||||
|
for item in ${POM_HIERARCHY[*]}; do
|
||||||
|
profiles=($profiles `[ -e $item ] && cat $item | sed 's/<!--.*-->//' | sed '/<!--/,/-->/d' | grep -e "<profile>" -A 1 | grep -e "<id>.*</id>" | sed 's?.*<id>\(.*\)<\/id>.*?-P\1?'`)
|
||||||
|
done
|
||||||
|
|
||||||
reply=(
|
reply=(
|
||||||
# common lifecycle
|
# common lifecycle
|
||||||
clean initialize process-resources compile process-test-resources test-compile test package verify install deploy site
|
clean initialize process-resources compile process-test-resources test-compile test package verify install deploy site
|
||||||
@ -278,7 +336,12 @@ function listMavenCompletions {
|
|||||||
cobertura:cobertura
|
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)
|
-Dtest=$(if [ -d ./src/test/java ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dtest=\1?' ; fi)
|
||||||
-Dit.test=$(if [ -d ./src/test/java ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dit.test=\1?' ; fi)
|
-Dit.test=$(if [ -d ./src/test/java ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dit.test=\1?' ; fi)
|
||||||
|
|
||||||
|
$profiles
|
||||||
)
|
)
|
||||||
|
|
||||||
|
unset POM_HIERARCHY
|
||||||
|
unset profiles
|
||||||
}
|
}
|
||||||
|
|
||||||
compctl -K listMavenCompletions mvn mvnw
|
compctl -K listMavenCompletions mvn mvnw
|
||||||
|
Loading…
Reference in New Issue
Block a user