Former-commit-id:d537df4ab0
[formerly4453ad2d10
] [formerly65e1e4ee0b
] [formerlyd537df4ab0
[formerly4453ad2d10
] [formerly65e1e4ee0b
] [formerlyea1c82452b
[formerly65e1e4ee0b
[formerly 56068aa96fa6daf113861476bf4b7aebe2021ca4]]]] Former-commit-id:ea1c82452b
Former-commit-id:69f4822ad1
[formerly9f6780c4dd
] [formerly e63dac039e52161602915d3cf34685762acd5d9e [formerly7f1b468010
]] Former-commit-id: ed7bf459df1503ce7bd9500dc984c56a535b768f [formerlydafb6b18d8
] Former-commit-id:bb662ca175
163 lines
3.8 KiB
Bash
163 lines
3.8 KiB
Bash
#!/bin/bash
|
|
|
|
# 1) Ensure that the Update Registry exists.
|
|
# 2) Determine how many updates, if any, need to be applied for this build.
|
|
# 3) Step through the list of update scripts ...
|
|
# 3.1) source the script.
|
|
# 3.2) examine the build and the id; check the registry to determine if
|
|
# the update has been made.
|
|
# 3.3) skip the script if the update has already been made.
|
|
# 3.4) run the script if the update was not completed.
|
|
# 3.5) check the return code after the execution to determine
|
|
# if the update was successful or not.
|
|
# 3.6) if the update was successful, update the registry.
|
|
|
|
# Version: 1.0
|
|
|
|
# Variables
|
|
export CONST_REGISTRY_DIR="/usr/share/doc/awips2/delta"
|
|
export CONST_REGISTRY_DB_FILE="deltaRegistry.db"
|
|
CONST_REGISTRY_CREATION_SCRIPT="createUpdateRegistry.sh"
|
|
CONST_FUNCTION_TYPE="function"
|
|
|
|
UPDATE_SCRIPT=
|
|
VALID_UPDATE_IND=
|
|
UPDATE_REQUIRED_IND=
|
|
UPDATE_SUCCESS_IND=
|
|
|
|
# Arguments:
|
|
# ${1} == the component that we may be updating.
|
|
|
|
COMPONENT="${1}"
|
|
|
|
# Ensure That The Update Registry Exists.
|
|
if [ ! -f ${CONST_REGISTRY_DIR}/${CONST_REGISTRY_DB_FILE} ]; then
|
|
# Create The Update Registry Before Proceeding.
|
|
/bin/bash ${CONST_REGISTRY_CREATION_SCRIPT}
|
|
fi
|
|
|
|
function validateUpdate()
|
|
{
|
|
# Verify A Delta Build Has Been Specified.
|
|
if [ "${DELTA_BUILD}" = "" ]; then
|
|
VALID_UPDATE_IND="N"
|
|
return
|
|
fi
|
|
|
|
# Verify A Delta ID Has Been Specified.
|
|
if [ "${DELTA_ID}" = "" ]; then
|
|
VALID_UPDATE_IND="N"
|
|
return
|
|
fi
|
|
|
|
# Verify A Delta Description Has Been Specified.
|
|
if [ "${DELTA_DESC}" = "" ]; then
|
|
VALID_UPDATE_IND="N"
|
|
return
|
|
fi
|
|
|
|
# Verify A 'runUpdate' Function Exists.
|
|
local EVAL_TYPE=`type -t runUpdate`
|
|
if [ ! "${EVAL_TYPE}" = "${CONST_FUNCTION_TYPE}" ]; then
|
|
VALID_UPDATE_IND="N"
|
|
return
|
|
fi
|
|
}
|
|
|
|
function checkIfUpdateIsNecessary()
|
|
{
|
|
local SQL="SELECT COUNT(*) FROM awips2_delta_registry WHERE "
|
|
SQL="${SQL} deltaBuild=\"${DELTA_BUILD}\" AND "
|
|
SQL="${SQL} deltaID=\"${DELTA_ID}\";"
|
|
|
|
local COUNT=`echo ${SQL} | sqlite3 ${CONST_REGISTRY_DIR}/${CONST_REGISTRY_DB_FILE}`
|
|
if [ ! "${COUNT}" = "0" ]; then
|
|
UPDATE_REQUIRED_IND="N"
|
|
fi
|
|
}
|
|
|
|
function applyUpdate()
|
|
{
|
|
if [ ! "${DELTA_RUN_USER}" = "" ]; then
|
|
su ${DELTA_RUN_USER} -c "source ${UPDATE_SCRIPT}; runUpdate"
|
|
else
|
|
runUpdate
|
|
fi
|
|
|
|
local RC="$?"
|
|
if [ ! "${RC}" = "0" ]; then
|
|
UPDATE_SUCCESS_IND="N"
|
|
fi
|
|
}
|
|
|
|
function logUpdate()
|
|
{
|
|
DATE_APPLIED=`date +"%Y%m%d"`
|
|
TIME_APPLIED=`date +"%H%M%S"`
|
|
|
|
local SQL="INSERT INTO awips2_delta_registry VALUES("
|
|
SQL="${SQL}\"${DELTA_BUILD}\", "
|
|
SQL="${SQL}\"${DELTA_ID}\", "
|
|
SQL="${SQL}\"${DELTA_DESC}\", ${DATE_APPLIED}, ${TIME_APPLIED});"
|
|
|
|
echo ${SQL} | sqlite3 ${CONST_REGISTRY_DIR}/${CONST_REGISTRY_DB_FILE}
|
|
}
|
|
|
|
function update()
|
|
{
|
|
local RES_COL=70
|
|
local MOVE_TO_COL="echo -en \\033[${RES_COL}G"
|
|
local SETCOLOR_SUCCESS="echo -en \\033[1;32m"
|
|
local SETCOLOR_FAILURE="echo -en \\033[1;31m"
|
|
local SETCOLOR_NORMAL="echo -en \\033[0;39m"
|
|
|
|
source ${UPDATE_SCRIPT}
|
|
|
|
VALID_UPDATE_IND="Y"
|
|
validateUpdate
|
|
|
|
if [ ! "${VALID_UPDATE_IND}" = "Y" ]; then
|
|
return
|
|
fi
|
|
|
|
UPDATE_REQUIRED_IND="Y"
|
|
checkIfUpdateIsNecessary
|
|
|
|
if [ ! "${UPDATE_REQUIRED_IND}" = "Y" ]; then
|
|
return
|
|
fi
|
|
|
|
UPDATE_SUCCESS_IND="Y"
|
|
|
|
echo -n "Applying Update ... ${DELTA_ID}"
|
|
|
|
applyUpdate
|
|
sleep 10
|
|
|
|
${MOVE_TO_COL}
|
|
echo -n "["
|
|
if [ ! "${UPDATE_SUCCESS_IND}" = "Y" ]; then
|
|
${SETCOLOR_FAILURE}
|
|
echo -n "FAILURE"
|
|
${SETCOLOR_NORMAL}
|
|
echo -n "]"
|
|
echo ""
|
|
return
|
|
fi
|
|
|
|
${SETCOLOR_SUCCESS}
|
|
echo -n "SUCCESS"
|
|
${SETCOLOR_NORMAL}
|
|
echo -n "]"
|
|
echo ""
|
|
logUpdate
|
|
}
|
|
|
|
# Get a list of update scripts.
|
|
for script in ${COMPONENT}/*;
|
|
do
|
|
UPDATE_SCRIPT="${script}"
|
|
|
|
# Start The Update.
|
|
update
|
|
done
|