1
1
#! /bin/bash
2
2
# ############################################################################################
3
- # Script to add Java parts to a CICS bundle
3
+ # Script to add Java pre-built arhcive files to a CICS bundle
4
4
#
5
5
# Licensed Materials - Property of IBM.
6
6
# (c) Copyright IBM Corporation 2017. All Rights Reserved.
@@ -30,17 +30,20 @@ show_help () {
30
30
# Function to create an empty CICS bundle
31
31
create_bundle () {
32
32
# Create the CICS bundle directory
33
- echo " Creating directory ${MANIFEST_DIRECTORY} "
34
33
mkdir -p " ${MANIFEST_DIRECTORY} "
35
34
36
35
if [[ ! -d " ${DIRECTORY} " ]] ; then
37
- echo " Could not create directory ${MANIFEST_DIRECTORY} "
36
+ echo " Could not create CICS bundle manifest directory ${MANIFEST_DIRECTORY} "
38
37
exit 1
39
38
fi
40
39
41
40
# Create the CICS bundle manifest file
42
41
MANIFEST_TIMESTAMP=$( date +" %Y-%m-%dT%T.%3N%:z" )
43
42
43
+ if [[ $VERBOSE == 1 ]] ; then
44
+ echo " Creating CICS bundle manifest file ${MANIFEST} "
45
+ fi
46
+
44
47
cat > " ${MANIFEST} " << EOF
45
48
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
46
49
<manifest xmlns="http://www.ibm.com/xmlns/prod/cics/bundle" id="${SYMBOLICNAME} " bundleMajorVer="1" bundleMinorVer="0" bundleMicroVer="0" bundleVersion="1" bundleRelease="0">
@@ -51,6 +54,17 @@ create_bundle() {
51
54
EOF
52
55
}
53
56
57
+ # Get the value from a property in a .properties file
58
+ # Modified technique from http://shrubbery.homeip.net/c/display/W/Reading+Java-style+Properties+Files+with+Shell
59
+ get_property () {
60
+ # If properties file does not exist, just exit
61
+ if [[ ! -f $2 ]] ; then
62
+ exit
63
+ fi
64
+
65
+ echo ` sed ' /^\#/d' $2 | grep " ${1} *=" | tail -n 1 | cut -d " =" -f2- | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' `
66
+ }
67
+
54
68
# Function to add a file to a CICS bundle
55
69
add_file_to_cics_bundle () {
56
70
FILENAME=$( basename " ${FILE} " )
@@ -72,34 +86,35 @@ add_file_to_cics_bundle() {
72
86
create_bundle
73
87
fi
74
88
75
- # Set bundle part JVMSERVER
89
+ # Set the bundle part JVMSERVER
76
90
if [[ -z " ${JVMSERVER} " ]] ; then
77
- if [[ " ${FILEEXTENSION} " -eq " jar" ]] ; then
91
+ if [[ " ${FILEEXTENSION} " = " jar" ]] ; then
78
92
BUNDLEPARTJVMSERVER=" DFHOSGI"
79
93
else
80
94
BUNDLEPARTJVMSERVER=" DFHWLP"
81
95
fi
82
96
else
83
97
BUNDLEPARTJVMSERVER=" ${JVMSERVER} "
84
98
fi
99
+ BUNDLEPARTJVMSERVERPROPERTY=" jvmserver.${BUNDLEPARTJVMSERVER} "
85
100
86
101
# Relate the file type to the CICS bundle part type
87
102
case " ${FILEEXTENSION} " in
88
103
" jar" )
89
104
BUNDLEPARTEXTENSION=" osgibundle"
90
- BUNDLEPART=$' <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n <' ${BUNDLEPARTEXTENSION} ' symbolicname="' ${SYMBOLICNAME} ' " version="' ${BUNDLEPARTVERSION} ' " jvmserver="' ${BUNDLEPARTJVMSERVER} ' "/>'
105
+ BUNDLEPART=$' <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n <' ${BUNDLEPARTEXTENSION} ' symbolicname="' ${SYMBOLICNAME} ' " version="' ${BUNDLEPARTVERSION} ' " jvmserver="${ ' ${BUNDLEPARTJVMSERVERPROPERTY} ' } "/>'
91
106
;;
92
107
" war" )
93
108
BUNDLEPARTEXTENSION=" warbundle"
94
- BUNDLEPART=$' <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n <' ${BUNDLEPARTEXTENSION} ' symbolicname="' ${SYMBOLICNAME} ' " jvmserver="' ${BUNDLEPARTJVMSERVER} ' "/>'
109
+ BUNDLEPART=$' <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n <' ${BUNDLEPARTEXTENSION} ' symbolicname="' ${SYMBOLICNAME} ' " jvmserver="${ ' ${BUNDLEPARTJVMSERVERPROPERTY} ' } "/>'
95
110
;;
96
111
" ear" )
97
112
BUNDLEPARTEXTENSION=" earbundle"
98
- BUNDLEPART=$' <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n <' ${BUNDLEPARTEXTENSION} ' symbolicname="' ${SYMBOLICNAME} ' " jvmserver="' ${BUNDLEPARTJVMSERVER} ' "/>'
113
+ BUNDLEPART=$' <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n <' ${BUNDLEPARTEXTENSION} ' symbolicname="' ${SYMBOLICNAME} ' " jvmserver="${ ' ${BUNDLEPARTJVMSERVERPROPERTY} ' } "/>'
99
114
;;
100
115
" eba" )
101
116
BUNDLEPARTEXTENSION=" ebabundle"
102
- BUNDLEPART=$' <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n <' ${BUNDLEPARTEXTENSION} ' symbolicname="' ${SYMBOLICNAME} ' " jvmserver="' ${BUNDLEPARTJVMSERVER} ' "/>'
117
+ BUNDLEPART=$' <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n <' ${BUNDLEPARTEXTENSION} ' symbolicname="' ${SYMBOLICNAME} ' " jvmserver="${ ' ${BUNDLEPARTJVMSERVERPROPERTY} ' } "/>'
103
118
;;
104
119
* )
105
120
BUNDLEPARTEXTENSION=" "
@@ -112,30 +127,45 @@ add_file_to_cics_bundle() {
112
127
fi
113
128
114
129
BUNDLEPARTTYPE=" http://www.ibm.com/xmlns/prod/cics/bundle/${BUNDLEPARTEXTENSION^^} "
115
- BUNDLEPARTFILE=" ${DIRECTORY} /${FILENAME } .${BUNDLEPARTEXTENSION} "
130
+ BUNDLEPARTFILE=" ${DIRECTORY} /${SYMBOLICNAME } .${BUNDLEPARTEXTENSION} "
116
131
117
132
# Check if bundle part already exists
118
- ENTRY=$( xmlstarlet sel -t -c ' //_:define[@name="' " ${FILENAME } " ' "][@type="' " ${BUNDLEPARTTYPE} " ' "]' " ${MANIFEST} " )
133
+ ENTRY=$( xmlstarlet sel -t -c ' //_:define[@name="' " ${SYMBOLICNAME } " ' "][@type="' " ${BUNDLEPARTTYPE} " ' "]' " ${MANIFEST} " )
119
134
if [[ ! -z " ${ENTRY} " ]] ; then
120
- echo " Error - CICS bundle part ${FILENAME} for type ${BUNDLEPARTTYPE} in ${MANIFEST} already exists"
121
- exit 8
122
- fi
135
+ if [[ $VERBOSE == 1 ]] ; then
136
+ echo " CICS bundle part ${SYMBOLICNAME} for type ${BUNDLEPARTTYPE} in ${MANIFEST} already exists"
137
+ fi
138
+ else
139
+ # Create bundle part file
140
+ if [[ $VERBOSE == 1 ]] ; then
141
+ echo " Creating CICS bundle part file ${BUNDLEPARTFILE} "
142
+ fi
143
+ echo " ${BUNDLEPART} " > " ${BUNDLEPARTFILE} "
123
144
124
- # Create bundle part file
125
- if [[ $VERBOSE == 1 ]] ; then
126
- echo " Creating file ${BUNDLEPARTFILE} "
127
- fi
128
- echo " ${BUNDLEPART} " > " ${BUNDLEPARTFILE} "
145
+ # Add part to the CICS bundle manifest
146
+ if [[ $VERBOSE == 1 ]] ; then
147
+ echo " Adding bundle part to the CICS bundle manifest file ${MANIFEST} "
148
+ fi
149
+ xmlstarlet ed -L -s " //_:manifest" -t elem -n define -v " " \
150
+ -i " //_:manifest/define" -t attr -n name -v " ${SYMBOLICNAME} " \
151
+ -i " //_:manifest/define" -t attr -n type -v " ${BUNDLEPARTTYPE} " \
152
+ -i " //_:manifest/define" -t attr -n path -v " ${FILENAME} .${BUNDLEPARTEXTENSION} " \
153
+ " ${MANIFEST} "
154
+
155
+ # Add JVMSERVER to properties file if it is not already defined
156
+ PROPERTIES=" ${DIRECTORY} /variable.properties"
129
157
130
- # Add part to the CICS bundle manifest
131
- if [[ $VERBOSE == 1 ]] ; then
132
- echo " Adding bundle part file to the manifest file ${MANIFEST} "
133
- fi
134
- xmlstarlet ed -L -s " //_:manifest" -t elem -n define -v " " \
135
- -i " //_:manifest/define" -t attr -n name -v " ${FILENAME} " \
136
- -i " //_:manifest/define" -t attr -n type -v " ${BUNDLEPARTTYPE} " \
137
- -i " //_:manifest/define" -t attr -n path -v " ${FILENAME} .${BUNDLEPARTEXTENSION} " \
138
- " ${MANIFEST} "
158
+ if [[ -z $( get_property ${BUNDLEPARTJVMSERVERPROPERTY} ${PROPERTIES} ) ]] ; then
159
+ if [[ $VERBOSE == 1 ]] ; then
160
+ echo " Adding property ${BUNDLEPARTJVMSERVERPROPERTY} =${BUNDLEPARTJVMSERVER} to ${PROPERTIES} "
161
+ fi
162
+
163
+ echo -e \
164
+ " \n# Added by script" $( basename " $0 " ) \
165
+ " \n${BUNDLEPARTJVMSERVERPROPERTY} =${BUNDLEPARTJVMSERVER} " \
166
+ >> " ${PROPERTIES} "
167
+ fi
168
+ fi
139
169
140
170
# Copy file to be added into CICS bundle
141
171
if [[ $VERBOSE == 1 ]] ; then
@@ -274,4 +304,4 @@ if [[ $VERBOSE == 1 ]] ; then
274
304
275
305
echo " Exiting with RC=${TOTALRC} "
276
306
fi
277
- exit ${TOTALRC}
307
+ exit ${TOTALRC}
0 commit comments