Former-commit-id:133dc97f67
[formerlya02aeb236c
] [formerly9f19e3f712
] [formerly133dc97f67
[formerlya02aeb236c
] [formerly9f19e3f712
] [formerly06a8b51d6d
[formerly9f19e3f712
[formerly 64fa9254b946eae7e61bbc3f513b7c3696c4f54f]]]] Former-commit-id:06a8b51d6d
Former-commit-id:9bb8decbcf
[formerly8e80217e59
] [formerly377dcd10b9
[formerly3360eb6c5f
]] Former-commit-id:377dcd10b9
Former-commit-id:e2ecdcfe33
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
|