-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathunziposgijar
executable file
·154 lines (113 loc) · 4.26 KB
/
unziposgijar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/bin/bash
SCRIPT_FOLDER="$(dirname $BASH_SOURCE[0])"
dirnames() {
python $(dirname "${BASH_SOURCE[0]}")/dirnames.py
}
getmodulepath() {
grep -F $1 ${GIT_ROOT}/.redeploy/bnd_list.txt > ${GIT_ROOT}/.redeploy/bndmatches.txt
# search the bnds for the symbolic name
if [[ 0 -eq $(cat ${GIT_ROOT}/.redeploy/bndmatches.txt | grep -c '^') ]]; then
echo "Could not find Bundle-SymbolicName $1"
return 1
fi
# at this point, we know we have at least a partial match
# now to find out if there is an exact guess we can make
local BND=$(cat ${GIT_ROOT}/.redeploy/bndmatches.txt | cut -d':' -f 1)
if [[ 1 -eq $(echo "$BND" | grep -c '^') ]]; then
MODULE_PATH=$(dirname $BND)
return 0
fi
BND=$(grep -F "$1" ${GIT_ROOT}/.redeploy/bndmatches.txt | cut -d':' -f 1)
if [ "" != "$BND" ] && [[ 1 -eq $(echo "$BND" | grep -c '^') ]]; then
MODULE_PATH=$(dirname $BND)
return 0
fi
BND=$(grep -F "${1}/bnd.bnd" ${GIT_ROOT}/.redeploy/bndmatches.txt | cut -d':' -f 1)
if [ "" != "$BND" ] && [[ 1 -eq $(echo "$BND" | grep -c '^') ]]; then
MODULE_PATH=$(dirname $BND)
return 0
fi
# no exact guesses possible, so report that it is ambiguous
echo "$1 is ambiguous:"
cat ${GIT_ROOT}/.redeploy/bndmatches.txt | cut -d':' -f 2
return 1
}
unziposgijar() {
# generate a cache that maps between the bundle symbolic name and a module path
mkdir -p ${GIT_ROOT}/.redeploy
if [ ! -f ${GIT_ROOT}/.redeploy/bnd_list.txt ]; then
git ls-files modules | grep -vF '/src/' | grep -F '/bnd.bnd' | grep -vF -- '-test/' | xargs grep -F Bundle-SymbolicName | \
grep -vF '{' | sed 's/Bundle-SymbolicName: //g' > ${GIT_ROOT}/.redeploy/bnd_list.txt
fi
local BASE_PATH=
local JAR_PATH=
local BUNDLE_SYMBOLICNAME=
local MODULE_PATH=
if [ -f $1 ]; then
BASE_PATH=$(dirname $1)
JAR_PATH=$1
BUNDLE_SYMBOLICNAME=$(basename $JAR_PATH | sed 's/.jar$//g')
MODULE_PATH=$(grep ":${BUNDLE_SYMBOLICNAME}$" ${GIT_ROOT}/.redeploy/bnd_list.txt | cut -d':' -f 1 | dirnames)
elif [ -d $1 ] && [ -f $1/bnd.bnd ]; then
BUNDLE_SYMBOLICNAME=$(grep -F 'Bundle-SymbolicName' $1/bnd.bnd | cut -d' ' -f 2)
MODULE_PATH=$1
if [ -d $LIFERAY_HOME/osgi ]; then
JAR_PATH=$(find $LIFERAY_HOME/osgi -name ${BUNDLE_SYMBOLICNAME}.jar)
fi
if [ "" == "${JAR_PATH}" ] && [ -d $CATALINA_HOME/lib/ext ]; then
JAR_PATH=$(find $CATALINA_HOME/lib/ext -name ${BUNDLE_SYMBOLICNAME}.jar)
fi
if [ "" == "${JAR_PATH}" ] && [ -d $CATALINA_HOME/webapps/ROOT/WEB-INF/lib ]; then
JAR_PATH=$(find $CATALINA_HOME/webapps/ROOT/WEB-INF/lib -name ${BUNDLE_SYMBOLICNAME}.jar)
fi
if [ "" != "$JAR_PATH" ]; then
BASE_PATH=$(dirname $JAR_PATH)
fi
elif getmodulepath $1; then
BUNDLE_SYMBOLICNAME=$(grep -F 'Bundle-SymbolicName' $MODULE_PATH/bnd.bnd | cut -d' ' -f 2)
if [ -d $LIFERAY_HOME/osgi ]; then
JAR_PATH=$(find $LIFERAY_HOME/osgi -name $BUNDLE_SYMBOLICNAME.jar)
fi
if [ "" == "${JAR_PATH}" ] && [ -d $CATALINA_HOME/lib/ext ]; then
JAR_PATH=$(find $CATALINA_HOME/lib/ext -name ${BUNDLE_SYMBOLICNAME}.jar)
fi
if [ "" != "$JAR_PATH" ]; then
BASE_PATH=$(dirname $JAR_PATH)
fi
else
return 1
fi
# check to see if a matching bnd.bnd exists
if [ "" == "$MODULE_PATH" ] || [ "" == "$JAR_PATH" ]; then
return 1
fi
# add a rebel.xml to the module jar if we see a .jrebel folder
if [ -d $HOME/.jrebel ]; then
local RESOURCE_PATH="$MODULE_PATH/src/main/resources"
mkdir -p $RESOURCE_PATH
if [ -d "$RESOURCE_PATH/META-INF/resources" ]; then
cp -f "$SCRIPT_FOLDER/jrebel-web.xml" "$RESOURCE_PATH/rebel.xml"
else
cp -f "$SCRIPT_FOLDER/jrebel.xml" "$RESOURCE_PATH/rebel.xml"
fi
sed -i.bak "s@MODULE_CLASSES@${PWD}/${MODULE_PATH}/classes@g" "$RESOURCE_PATH/rebel.xml"
sed -i.bak "s@MODULE_RESOURCES@${PWD}/${RESOURCE_PATH}/META-INF/resources@g" "$RESOURCE_PATH/rebel.xml"
rm -f "$RESOURCE_PATH/rebel.xml.bak"
zip -ujqq "${JAR_PATH}" "${RESOURCE_PATH}/rebel.xml"
fi
# unzip the JAR to the classes folder
if [ ! -d ${MODULE_PATH}/classes ]; then
rm -rf $MODULE_PATH/classes
mkdir -p $MODULE_PATH/classes
pushd $MODULE_PATH/classes > /dev/null
unzip -qq "${JAR_PATH}"
popd > /dev/null
fi
if [ -f $MODULE_PATH/.lfrbuild-portal-pre ] && [ ! -f tmp/lib-pre/${BUNDLE_SYMBOLICNAME}.jar ]; then
mkdir -p tmp/lib-pre
cp ${JAR_PATH} tmp/lib-pre/
fi
}
if [ "" != "$1" ]; then
unziposgijar $1
fi