fixed and updated db_assembler to even support old bash v3 ( osx )

we're emulating associative array
This commit is contained in:
Yehonal
2016-08-25 19:06:51 +02:00
parent b211edb6c0
commit 5b3c776f9c
2 changed files with 116 additions and 101 deletions

View File

@@ -19,135 +19,147 @@ else
MD5_CMD="md5sum" MD5_CMD="md5sum"
fi fi
reg_file="$OUTPUT_FOLDER/.zzz_db_assembler_registry.sh" reg_file="$OUTPUT_FOLDER/__db_assembler_registry"
registry=()
if [ -f "$reg_file" ]; then if [ -f "$reg_file" ]; then
source "$reg_file" source "$reg_file"
fi fi
echo "===== STARTING PROCESS ====="
function assemble() { function assemble() {
database=$1 # to lowercase
database=${1,,}
start_sql=$2 start_sql=$2
with_base=$3
with_updates=$4
with_custom=$5
var_base="DB_"$database"_PATHS" var_base="DB_"$1"_PATHS"
base=${!var_base} base=${!var_base}
var_updates="DB_"$database"_UPDATE_PATHS" var_updates="DB_"$1"_UPDATE_PATHS"
updates=${!var_updates} updates=${!var_updates}
var_custom="DB_"$database"_CUSTOM_PATHS" var_custom="DB_"$1"_CUSTOM_PATHS"
custom=${!var_custom} custom=${!var_custom}
echo $updates
suffix_base=""
suffix_upd=""
suffix_custom=""
if (( $ALL_IN_ONE == 0 )); then
suffix_base="_base"
fi;
echo "" > $OUTPUT_FOLDER$database$suffix_base".sql"
if [ ! ${#base[@]} -eq 0 ]; then suffix_base="_base"
echo "Generating $OUTPUT_FOLDER$database$suffix_base ..." suffix_upd="_update"
suffix_custom="_custom"
for d in "${base[@]}" curTime=`date +%Y_%m_%d_%H_%M_%S`
do
if [ ! -z $d ]; then if [ $with_base = true ]; then
for entry in "$d"/*.sql "$d"/**/*.sql echo "" > $OUTPUT_FOLDER$database$suffix_base".sql"
do
if [[ -e $entry ]]; then
cat "$entry" >> $OUTPUT_FOLDER$database$suffix_base".sql" if [ ! ${#base[@]} -eq 0 ]; then
fi echo "Generating $OUTPUT_FOLDER$database$suffix_base ..."
done
fi for d in "${base[@]}"
done do
echo "Searching on $d ..."
if [ ! -z $d ]; then
for entry in "$d"/*.sql "$d"/**/*.sql
do
if [[ -e $entry ]]; then
cat "$entry" >> $OUTPUT_FOLDER$database$suffix_base".sql"
fi
done
fi
done
fi
fi fi
if (( $ALL_IN_ONE == 0 )); then if [ $with_updates = true ]; then
suffix_upd="_updates" updFile=$OUTPUT_FOLDER$database$suffix_upd"_"$curTime".sql"
echo "" > $OUTPUT_FOLDER$database$suffix_upd".sql" if [ ! ${#updates[@]} -eq 0 ]; then
fi; echo "Generating $OUTPUT_FOLDER$database$suffix_upd ..."
if [ ! ${#updates[@]} -eq 0 ]; then for d in "${updates[@]}"
echo "Generating $OUTPUT_FOLDER$database$suffix_upd ..." do
echo "Searching on $d ..."
if [ ! -z $d ]; then
for entry in "$d"/*.sql "$d"/**/*.sql
do
if [[ ! -e $entry ]]; then
continue
fi
for d in "${updates[@]}" file=$(basename "$entry")
do hash=$($MD5_CMD "$entry")
if [ ! -z $d ]; then hash="${hash%% *}" #remove file path
for entry in "$d"/*.sql "$d"/**/*.sql n="registry__$hash"
do if [[ -z ${!n} ]]; then
if [[ ! -e $entry ]]; then if [ ! -e $updFile ]; then
continue echo "" > $updFile
fi fi
file=$(basename "$entry") printf -v "registry__${hash}" %s "$file"
hash=$($MD5_CMD "$entry") echo "-- New update sql: "$file
hash="${hash%% *}" #remove file path cat "$entry" >> $updFile
if [[ -z ${registry[$hash]} ]]; then fi
registry["$hash"]="$file" done
echo "-- New update sql: "$file fi
cat "$entry" >> $OUTPUT_FOLDER$database$suffix_upd".sql" done
fi fi
done
fi
done
fi fi
if (( $ALL_IN_ONE == 0 )); then if [ $with_custom = true ]; then
suffix_custom="_custom" custFile=$OUTPUT_FOLDER$database$suffix_custom"_"$curTime".sql"
echo "" > $OUTPUT_FOLDER$database$suffix_custom".sql" if [ ! ${#custom[@]} -eq 0 ]; then
fi; echo "Generating $OUTPUT_FOLDER$database$suffix_custom ..."
for d in "${custom[@]}"
do
echo "Searching on $d ..."
if [ ! -z $d ]; then
for entry in "$d"/*.sql "$d"/**/*.sql
do
if [[ ! -e $entry ]]; then
continue
fi
file=$(basename "$entry")
hash=$($MD5_CMD "$entry")
hash="${hash%% *}" #remove file path
n="registry__$hash"
if [[ -z ${!n} ]]; then
if [ ! -e $custFile ]; then
echo "" > $custFile
fi
if [ ! ${#custom[@]} -eq 0 ]; then printf -v "registry__${hash}" %s "$file"
echo "Generating $OUTPUT_FOLDER$database$suffix_custom ..." echo "-- New custom sql: "$file
cat "$entry" >> $custFile
for d in "${custom[@]}" fi
do done
if [ ! -z $d ]; then fi
for entry in "$d"/*.sql "$d"/**/*.sql done
do fi
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
fi
done
fi fi
} }
mkdir -p $OUTPUT_FOLDER
for db in ${DATABASES[@]} echo "===== STARTING PROCESS ====="
do
assemble "$db" $version".sql"
done
echo "" > $reg_file mkdir -p $OUTPUT_FOLDER
for i in "${!registry[@]}" for db in ${DATABASES[@]}
do do
echo "registry['"$i"']='"${registry[$i]}"'" >> "$reg_file" assemble "$db" $version".sql" true true true
done done
echo "" > $reg_file
for k in "${!registry__*}"
do
n=$k
echo "$k='${!n}'" >> "$reg_file"
done
echo "===== DONE =====" echo "===== DONE ====="

View File

@@ -92,7 +92,7 @@ OUTPUT_FOLDER="output/"
# FULL DB # FULL DB
DB_CHARACTERS_PATHS=( DB_CHARACTERS_PATHS=(
$SRCPATH"/data/sql/base/characters" $SRCPATH"/data/sql/base/db_characters"
) )
DB_CHARACTERS_NAME="characters" DB_CHARACTERS_NAME="characters"
@@ -103,7 +103,7 @@ DB_CHARACTERS_CONF="MYSQL_USER='root'; \
" "
DB_AUTH_PATHS=( DB_AUTH_PATHS=(
$SRCPATH"/data/sql/base/auth/" $SRCPATH"/data/sql/base/db_auth/"
) )
DB_AUTH_NAME="auth" DB_AUTH_NAME="auth"
@@ -114,7 +114,7 @@ DB_AUTH_CONF="MYSQL_USER='root'; \
" "
DB_WORLD_PATHS=( DB_WORLD_PATHS=(
$SRCPATH"/data/sql/base/world/" $SRCPATH"/data/sql/base/db_world/"
) )
DB_WORLD_NAME="world" DB_WORLD_NAME="world"
@@ -126,23 +126,26 @@ DB_WORLD_CONF="MYSQL_USER='root'; \
# UPDATES # UPDATES
DB_CHARACTERS_UPDATE_PATHS=( DB_CHARACTERS_UPDATE_PATHS=(
$SRCPATH"/data/sql/updates/characters/" $SRCPATH"/data/sql/updates/db_characters/"
) )
DB_AUTH_UPDATE_PATHS=( DB_AUTH_UPDATE_PATHS=(
$SRCPATH"/data/sql/updates/auth/" $SRCPATH"/data/sql/updates/db_auth/"
) )
DB_WORLD_UPDATE_PATHS=( DB_WORLD_UPDATE_PATHS=(
$SRCPATH"/data/sql/updates/world/" $SRCPATH"/data/sql/updates/db_world/"
) )
# CUSTOM # CUSTOM
DB_CHARACTERS_CUSTOM_PATHS=( DB_CHARACTERS_CUSTOM_PATHS=(
$SRCPATH"/data/sql/custom/db_characters/"
) )
DB_AUTH_CUSTOM_PATHS=( DB_AUTH_CUSTOM_PATHS=(
$SRCPATH"/data/sql/custom/db_auth/"
) )
DB_WORLD_CUSTOM_PATHS=( DB_WORLD_CUSTOM_PATHS=(
$SRCPATH"/data/sql/custom/db_world/"
) )