diff options
author | Yehonal <yehonal.azeroth@gmail.com> | 2016-08-25 19:06:51 +0200 |
---|---|---|
committer | Yehonal <yehonal.azeroth@gmail.com> | 2016-08-25 19:06:51 +0200 |
commit | 5b3c776f9c28b6a321663203d72930f003a4a118 (patch) | |
tree | d71dac9b39e1fe28ffca5b6f4ea3dd629f66b5c2 /bin/db_assembler | |
parent | b211edb6c0a4d845c1e5f2173325f54cd7094884 (diff) |
fixed and updated db_assembler to even support old bash v3 ( osx )
we're emulating associative array
Diffstat (limited to 'bin/db_assembler')
-rwxr-xr-x | bin/db_assembler/db_assembler.sh | 212 |
1 files changed, 112 insertions, 100 deletions
diff --git a/bin/db_assembler/db_assembler.sh b/bin/db_assembler/db_assembler.sh index c329b8db15..8eb9b7175c 100755 --- a/bin/db_assembler/db_assembler.sh +++ b/bin/db_assembler/db_assembler.sh @@ -19,135 +19,147 @@ else MD5_CMD="md5sum" fi -reg_file="$OUTPUT_FOLDER/.zzz_db_assembler_registry.sh" - -registry=() +reg_file="$OUTPUT_FOLDER/__db_assembler_registry" if [ -f "$reg_file" ]; then source "$reg_file" fi -echo "===== STARTING PROCESS =====" - - function assemble() { - database=$1 + # to lowercase + database=${1,,} 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} - var_updates="DB_"$database"_UPDATE_PATHS" + var_updates="DB_"$1"_UPDATE_PATHS" updates=${!var_updates} - var_custom="DB_"$database"_CUSTOM_PATHS" + var_custom="DB_"$1"_CUSTOM_PATHS" custom=${!var_custom} + echo $updates - suffix_base="" - suffix_upd="" - suffix_custom="" - if (( $ALL_IN_ONE == 0 )); then - suffix_base="_base" - fi; + suffix_base="_base" + suffix_upd="_update" + suffix_custom="_custom" - echo "" > $OUTPUT_FOLDER$database$suffix_base".sql" + curTime=`date +%Y_%m_%d_%H_%M_%S` + if [ $with_base = true ]; then + echo "" > $OUTPUT_FOLDER$database$suffix_base".sql" - if [ ! ${#base[@]} -eq 0 ]; then - echo "Generating $OUTPUT_FOLDER$database$suffix_base ..." - for d in "${base[@]}" - do - 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 + if [ ! ${#base[@]} -eq 0 ]; then + echo "Generating $OUTPUT_FOLDER$database$suffix_base ..." + + for d in "${base[@]}" + 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 - if (( $ALL_IN_ONE == 0 )); then - suffix_upd="_updates" - - echo "" > $OUTPUT_FOLDER$database$suffix_upd".sql" - fi; - - if [ ! ${#updates[@]} -eq 0 ]; then - echo "Generating $OUTPUT_FOLDER$database$suffix_upd ..." - - for d in "${updates[@]}" - do - 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 - if [[ -z ${registry[$hash]} ]]; then - registry["$hash"]="$file" - echo "-- New update sql: "$file - cat "$entry" >> $OUTPUT_FOLDER$database$suffix_upd".sql" - fi - done - fi - done + if [ $with_updates = true ]; then + updFile=$OUTPUT_FOLDER$database$suffix_upd"_"$curTime".sql" + + if [ ! ${#updates[@]} -eq 0 ]; then + echo "Generating $OUTPUT_FOLDER$database$suffix_upd ..." + + for d in "${updates[@]}" + 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 $updFile ]; then + echo "" > $updFile + fi + + printf -v "registry__${hash}" %s "$file" + echo "-- New update sql: "$file + cat "$entry" >> $updFile + fi + done + fi + done + fi fi - if (( $ALL_IN_ONE == 0 )); then - suffix_custom="_custom" - - echo "" > $OUTPUT_FOLDER$database$suffix_custom".sql" - fi; - - - - if [ ! ${#custom[@]} -eq 0 ]; then - echo "Generating $OUTPUT_FOLDER$database$suffix_custom ..." - - for d in "${custom[@]}" - do - 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 - 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 + if [ $with_custom = true ]; then + custFile=$OUTPUT_FOLDER$database$suffix_custom"_"$curTime".sql" + + if [ ! ${#custom[@]} -eq 0 ]; then + 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 + + printf -v "registry__${hash}" %s "$file" + echo "-- New custom sql: "$file + cat "$entry" >> $custFile + fi + done + fi + done + fi fi } -mkdir -p $OUTPUT_FOLDER -for db in ${DATABASES[@]} -do - assemble "$db" $version".sql" -done +echo "===== STARTING PROCESS =====" + + mkdir -p $OUTPUT_FOLDER + + for db in ${DATABASES[@]} + do + assemble "$db" $version".sql" true true true + done -echo "" > $reg_file + echo "" > $reg_file -for i in "${!registry[@]}" -do - echo "registry['"$i"']='"${registry[$i]}"'" >> "$reg_file" -done + for k in "${!registry__*}" + do + n=$k + echo "$k='${!n}'" >> "$reg_file" + done echo "===== DONE =====" |