Newer
Older
# Last revision - 21 Feb 2022
# Version 1.1.0
#Colors definitions for terminal
RED='\033[0;31m'
GREEN='\033[0;32m'
ORANGE='\033[0;33m'
NC='\033[0m'
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
## FUNCTIONS DEFINITION
function readBBR {
read -r bbrPath
isAbsPath=`echo "${bbrPath}" | grep ^/.* | wc -l`
if [ $isAbsPath -eq 0 ]; then
echo -e "${RED}[ ${bbrPath} ] is not an absolute path${NC}"
exit 1
fi
if [ ! -f $bbrPath ]; then
echo -e "${RED}[ ${bbrPath} ] is not a file or doesn't exist !${NC}"
exit 1
fi
}
function friendly_trannsform {
bbrFriendlyOutput=`echo "$bbrPath" | sed --expression="s/.xml/-friendly.xml/g"`
# bbrOutput=`echo "$bbrPath" | sed --expression="s/.xml/-friendly.xml/g"`
packagerPath=`realpath ..`
packagerFolder=${packagerPath##*/}
if [ $packagerFolder == "hl7templates-packager-jar" ]; then
$mavenPath -f "$packagerPath/pom.xml" -Dtest=EHDSITransformers#transformBBRToFriendly test -DbbrPath="$bbrPath" -DbbrOutput="$bbrFriendlyOutput"
if [ $? == 0 ]; then
bbrPath=$bbrFriendlyOutput
echo -e "${GREEN}BBR Transformed to friendly at: ${bbrFriendlyOutput}${NC}"
else
echo -e "${ORANGE}Transformartion to frienly BBR Failed! Please provide Friendly manually, or contact support${NC}"
readBBR
fi
else
echo -e "${ORANGE}Could not found 'packager module' at $packagerPath, cannot perform transformation, please provide Friendly BBR manually${NC}"
readBBR
fi
}
#UNCOMENT THIS TO OVERRIDE DEFAULT JAVA VERSION USED BY SYSTEM
#JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
######################################################################
##### Checking JAVA Version
if [ -z "$JAVA_HOME" ]; then
echo -e "${RED}Please set your JAVA_HOME before running the script${NC}"
exit 1
fi;
javaVersion=$($JAVA_HOME/bin/java -version 2>&1 | awk -F '"' '/version/ {print $2}' | grep -e "11\.[0-9]*.*")
if [ -z "$javaVersion" ]; then
echo -e "${RED}Invalid java version, needed 11${NC}"
exit 1
fi
## JAR DETECTION
# Try to get the jar of GOC automatically
jarPath=`ls -l | grep -oh -e "[^ ]*-jar-with-dependencies\.jar"`
if [ -z $jarPath ]; then
echo -e "${ORANGE}Could not detect the JAR of GOC, please provide the path manually${NC}"
read -r jarPath
else
absJarPath=`realpath $jarPath`
echo -e "${GREEN}A GOC JAR has been detected at: (${jarPath}) want you to use it?${NC}"
printf "hit enter for yes, provide an other path to change it: "
read -r newJarPath
if [ ! -z $newJarPath ]; then
isAbsPath=`echo "${newJarPath}" | grep ^/.* | wc -l`
if [ $isAbsPath -eq 0 ]; then
echo -e "${RED}[ ${newJarPath} ] is not an absolute path${NC}"
exit 1
fi
absJarPath=$newJarPath
fi
fi
## MAVEN VERIFICATION
#Try to use maven wrapper
if [ -f ./classes/maven-wrapper/mvnw ];then
mavenPath=$(realpath "./classes/maven-wrapper/mvnw")
testMaven=$($mavenPath -v)
if [ ! -z "$testMaven" ]; then
echo -e "${GREEN}Using maven wrapper with version 5.3.4${NC}"
else
mavenPath=""
fi;
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
mavenPath=""
fi;
if [ -z "$mavenPath" ];then
#Try to get maven path automatically
echo -e "${ORANGE}Could not find Maven Wrapper, trying to detect local installation automatically...${NC}"
mavenPath=$(mvn -v | sed -n 2p | grep -oh -e "/.*")
mvnVersion=$(echo "$mavenPath" |grep -oh -e "3\.5\..*")
if [ -z "$mavenPath" ] || [ -z "$mvnVersion" ];then
echo -e "${ORANGE}Could not detect the required maven installation [5.3.x], please enter the absolute to the binary file of maven: ${NC}"
read -r mavenPath
testMaven2=$($mavenPath -v)
if [ -z "$testMaven2" ];then
echo -e "${RED}Wrong maven executable...${NC}"
exit 1
fi;
mvnVersion=$($mavenPath -v | sed -n 2p | grep -oh -e "3\.5\..*")
if [ -z "$mvnVersion" ];then
echo -e "${RED}Wrong maven version, please provide a [3.5.x] version...${NC}"
exit 1
fi
else
echo -e "${GREEN}A valid maven version detect ${mvnVersion}, do you want to use it?${NC}"
printf "Press enter for yes, enter absolute path for maven binary to change it: "
read -r newMaven
if [ -z newMaven ]; then
mavenPath="${mavenPath}/bin/mvn"
else
if [ -f "$newMaven" ];then
testMaven3=$($newMaven -v)
if [ ! -z "$testMaven3"]; then
mavenVersion2=$($newMaven -v | sed -n 2p | grep -oh -e "3\.5\..*")
if [ ! -z "$mavenVersion2" ]; then
mavenPath="$newMaven"
else
echo "${RED}Wrong maven version, needed [3.5.x], try to re-install GOC, and use the wrapper${NC}"
exit 1
fi;
else
echo "${RED}Wrong maven path${NC}"
fi;
else
echo "${RED}File Not found!${NC}"
fi;
fi;
fi
fi;
echo -e "${GREEN}Using maven at: ${mavenPath}${NC}"
## BBR READING
printf "Please enter a path to your BBR (Absolute Path) : "
readBBR
printf "Please choose the kind of validator you want to generate: \n"
printf "\t 1- Pivot (L3)\n"
printf "\t 2- Scanned (L1)\n"
printf "\t 3- Friendly\n"
printf "your choice: "
read -r choice
if [ $choice -gt 3 -o $choice -lt 1 ]; then
echo "${RED}Wrong choice, please repeat and choose between 1 and 3${NC}"
exit 1
friendly_trannsform
echo -e "Friendly BBR Will be used for generation"
printf "Please enter workspace path (where you want to generate the validator): "
read -r workspaceDir
if [ ! -d $workspaceDir ]; then
echo "${RED}The provided workspace is not a valid directory"
exit 0
fi
isAbsPath=`echo "${workspaceDir}" | grep ^/.* | wc -l`
if [ $isAbsPath -eq 0 ]; then
echo -e "${RED}[ ${workspaceDir} ] is not an absolute path"
exit 0
fi
_currDate=`date +%Y-%m-%d-%H-%M-%S`
printf "Please enter the folder name of your validator: (output-${validator}-${_currDate})?"
read -r folderName
if [ -z $folderName ]; then
folderName="output-${validator}-${_currDate}"
fi;
echo -e "${GREEN}your validator will be generated in: ${workspaceDir}/${folderName}${NC}"
######## GENERATION COMMAND ########
$JAVA_HOME/bin/java -jar $jarPath -bbr $bbrPath -out "${workspaceDir}/${folderName}" -mvn $mavenPath -serviceName $validator -HL7TEMP_CDACONFFOLDERNAME cdaepsos -ignoreChoicesPredicates
####################################
#Replacing XSD
pathToResources=""
if [ -d ./classes/eHDSI-resources/xsd ]; then
pathToResources=$(realpath "./classes/eHDSI-resources/xsd")
echo -e "${GREEN}XSD Resources found at $pathToResources${NC}"
else
echo -e "${ORANGE}Could not find resources, please provide the path to the XSD folder manually${NC}"
echo -e "${ORANGE}be careful, the directory should contain correct XSD files for the validator to run. This is not checked by the script!${NC}"
read -r pathToResources
if [ ! -d $pathToResources ]; then
echo -e "${RED} invalid path to directory"
exit 1;
fi;
fi;
pathToXSD=$(realpath $(find "${workspaceDir}/${folderName}" -type d -name "xsd" | grep -e ".*-app/.*"))
echo "$pathToXSD"
XSDDirname=$(dirname "$pathToXSD")
echo "$XSDDirname"
rm -r "$pathToXSD"
#Zip validator
#move to app path
appPath=$(realpath $(find $workspaceDir/$folderName -type d -wholename *validator-app))
cd $appPath
#Create bbr folder
mkdir "bbr" || echo "File already exist, that won't affect next steps"
cp $bbrPath bbr
#create documentation folder
documentationPath=$(realpath $(find $workspaceDir/$folderName -type d -wholename "*/documentation"))
cp -r $documentationPath $appPath
#Zipping
zip -r "validator-$_currDate.zip" bbr/ documentation/ repo/ bin/