[BASH] improved db assembler with more effective md5 check

This commit is contained in:
Yehonal
2016-08-07 11:36:00 +02:00
parent 2b5605da5c
commit 16083b7115

View File

@@ -8,32 +8,23 @@ if [ -f "./config.sh" ]; then
source "./config.sh" # should overwrite previous
fi
version_marker="$OUTPUT_FOLDER/ZZZ_latest_version_"
version="0000_00_00_00"
for entry in "$version_marker"*
do
if [ -f "$entry" ]; then
version=${entry#$version_marker}
fi
break
done
#
# You can pass latest version as first argument of this script
#
if [ -z "$1" ]; then
read -p "Enter latest sql version ( leave blank to use : $version )" $rev
version=${rev:-$version}
unamestr=`uname`
if [[ "$unamestr" == 'Darwin' ]]; then
MD5_CMD="md5"
else
version=$1
MD5_CMD="md5sum"
fi
reg_file="$OUTPUT_FOLDER/.zzz_db_assembler_registry.sh"
declare -A registry
if [ -f "$reg_file" ]; then
source "$reg_file"
fi
echo "===== STARTING PROCESS ====="
gtversion=""
function assemble() {
database=$1
@@ -68,7 +59,7 @@ function assemble() {
if [ ! -z $d ]; then
for entry in "$d"/*.sql "$d"/**/*.sql
do
if [ -e $entry ]; then
if [[ -e $entry ]]; then
cat "$entry" >> $OUTPUT_FOLDER$database$suffix_base".sql"
fi
done
@@ -87,22 +78,23 @@ function assemble() {
for d in "${updates[@]}"
do
if [ ! -z $d ]; then
for entry in "$d"/*.sql "$d"/**/*.sql
do
if [ ! -z $d ]; then
file=$(basename $entry)
if [[ "$file" > "$start_sql" ]]
then
if [ -e $entry ]; then
if [[ "$gtversion" < "$file" ]]; then
gtversion=$file
if [[ ! -e $entry ]]; then
continue
fi
file=$(basename "$entry")
hash=$($MD5_CMD "$entry")
hash="${hash%% *}" #remove file path
if [[ -z ${registry[$hash]} ]]; then
registry["$hash"]="$file"
echo "-- New update sql: "$file
cat "$entry" >> $OUTPUT_FOLDER$database$suffix_upd".sql"
fi
fi
fi
done
fi
done
fi
@@ -122,7 +114,16 @@ function assemble() {
if [ ! -z $d ]; then
for entry in "$d"/*.sql "$d"/**/*.sql
do
if [ -e $entry ]; then
if [[ ! -e $entry ]]; then
continue
fi
file=$(basename "$entry")
hash=$($MD5_CMD "$entry")
hash="${hash%% *}" #remove file path
if [[ -z ${registry[$hash]} ]]; then
registry["$hash"]="$file"
echo "-- New custom sql: "$file
cat "$entry" >> $OUTPUT_FOLDER$database$suffix_custom".sql"
fi
done
@@ -138,12 +139,11 @@ do
assemble "$db" $version".sql"
done
if [ ! -z $gtversion ]; then
if [ -f $version_marker* ]; then
rm $version_marker*
fi
echo $gtversion > $OUTPUT_FOLDER"ZZZ_latest_version_"${gtversion%.*}
fi
echo "" > $reg_file
for i in "${!registry[@]}"
do
echo "registry['"$i"']='"${registry[$i]}"'" >> "$reg_file"
done
echo "===== DONE ====="