Files
ec-gn-ja-pcf/generate.sh
2025-05-15 13:50:43 +00:00

158 lines
4.2 KiB
Bash
Executable File

#!/bin/sh
if [[ $# > 0 ]]; then
mask=$1
fi
cid=1
project_name=EC-GN-JA-PCF
mkdir ${project_name}
current_dir=$(pwd)
################################################################################################################
#Section 1
#Update SVN
ok=$(echo ${mask} | cut -c ${cid})
if [[ ${ok} != "0" ]]; then
if [[ ! -d ${project_name}/.svn ]]; then
rm -rf ${project_name}
svn co https://svnpub.iter.org/codac/iter/codac/icdev/units/m-${project_name}/trunk/
mv trunk ${project_name}
fi
cd ${project_name}
svn up
status=$?
while [[ ${status} != 0 ]]; do
svn cleanup
svn up
status=$?
done
fi
cid=$((cid+1))
cd ${current_dir}
################################################################################################################
#Section 2
#Get PLC data from SVN
ok=$(echo ${mask} | cut -c ${cid})
#if [[ ${ok} != "0" ]]; then
# plc_proj_folder=src/main/resources/52HV05-PLC-7103
# export_folder=${plc_proj_folder}/export
# if [[ -d ${project_name}/${export_folder} ]]; then
# rm -rf ${project_name}-IN/${export_folder}
# cp -rf ${project_name}/${export_folder} ${project_name}-IN/${export_folder}
# fi
#fi
cid=$((cid+1))
cd ${current_dir}
################################################################################################################
#Section 3
#SDD(-cool) Generation
ok=$(echo ${mask} | cut -c ${cid})
if [[ ${ok} != "0" ]]; then
# cp -rf ${project_name}/src/main/resources tmp_resources
rm -rf ${project_name}/*
cp -rf ${project_name}-IN/* ${project_name}/
cp -rf ${project_name}-IN/.[^.]* ${project_name}/
# cp -rf tmp_resources/* ${project_name}/src/main/resources
# rm -rf tmp_resources
mkdir ${project_name,,}-sdd-in/SDD_IN/templates
/bin/cp -f /opt/codac/marte2-extensions/templates/* ${project_name,,}-sdd-in/SDD_IN/templates
/bin/cp -f patches/* ${project_name,,}-sdd-in/SDD_IN/templates
cd ${project_name,,}-sdd-in/SDD_IN
./sdd-generate.sh
fi
cid=$((cid+1))
cd ${current_dir}
################################################################################################################
#Section 4
#Post Patches
ok=$(echo ${mask} | cut -c ${cid})
#if [[ ${ok} != "0" ]]; then
# cat patches/EC-GN-PCF0CORE_sddPreDriverConf.patch ${project_name}/src/main/epics/iocBoot/iocEC-GN-PCF0CORE/sddPreDriverConf.cmd > sddPreDriverConf_patched.cmd
# mv -f sddPreDriverConf_patched.cmd ${project_name}/src/main/epics/iocBoot/iocEC-GN-PCF0CORE/sddPreDriverConf.cmd
# cat patches/EC-GN-PCF0CORE_userPreDriverConf.patch ${project_name}/src/main/epics/iocBoot/iocEC-GN-PCF0CORE/userPreDriverConf.cmd > userPreDriverConf_patched.cmd
# mv -f userPreDriverConf_patched.cmd ${project_name}/src/main/epics/iocBoot/iocEC-GN-PCF0CORE/userPreDriverConf.cmd
#fi
cid=$((cid+1))
cd ${current_dir}
################################################################################################################
#Section 5
#ZIP generation
ok=$(echo ${mask} | cut -c ${cid})
if [[ ${ok} != "0" ]]; then
cd ${current_dir}
dateId=$(date +'%Y-%m-%d_%H-%M-%S_%N')
zip -r ${project_name}-${dateId}.zip ${project_name} -x ${project_name}/.svn\* -x ${project_name}/src/main/boy/unified-control-lib\*
nKeep=3
nBackups=$(ls -t ${project_name}-*.zip | wc -l)
if [[ ${nBackups} -gt ${nKeep} ]]; then
nRemovals=$(( ${nBackups} - ${nKeep} ))
toRemove=$(ls -t ${project_name}-*.zip | tail -n ${nRemovals})
rm -f ${toRemove}
fi
fi
cid=$((cid+1))
cd ${current_dir}
################################################################################################################
#Section 6
#SVN Sync
ok=$(echo ${mask} | cut -c ${cid})
if [[ ${ok} != "0" ]]; then
cd ${project_name}
mvn clean
svn st | grep ^? | awk '{print " --force "$2}' | xargs svn add
svn st | grep ^! | awk '{print " --force "$2}' | xargs svn rm
svn ci -m "Generated on ${dateId}"
cd ${current_dir}
fi
cid=$((cid+1))
cd ${current_dir}
################################################################################################################
#Section 7
#Project Compilation
ok=$(echo ${mask} | cut -c ${cid})
if [[ ${ok} != "0" ]]; then
cd ${project_name}
mvn clean package -O -Drelease=final
cd ${current_dir}
cp -rf ${project_name}/target/* target/
fi