From 97c3f36d2bbe8863303474fe7273f754e22148ac Mon Sep 17 00:00:00 2001 From: Yehonal Date: Sat, 9 Jul 2016 20:23:02 +0200 Subject: [PATCH] implemented first version of db_assembler script --- bin/compiler/config.sh.dist | 3 + bin/db_assembler/.gitignore | 2 + bin/db_assembler/config.sh.dist | 49 ++++++++++++ bin/db_assembler/db_assembler.sh | 129 +++++++++++++++++++++++++++++++ 4 files changed, 183 insertions(+) create mode 100644 bin/db_assembler/.gitignore create mode 100644 bin/db_assembler/config.sh.dist create mode 100755 bin/db_assembler/db_assembler.sh diff --git a/bin/compiler/config.sh.dist b/bin/compiler/config.sh.dist index 7074e8634..01ba4b6c9 100644 --- a/bin/compiler/config.sh.dist +++ b/bin/compiler/config.sh.dist @@ -32,3 +32,6 @@ SRCPATH= BINPATH= # absolute path where config. files must be stored CONFDIR= + + + diff --git a/bin/db_assembler/.gitignore b/bin/db_assembler/.gitignore new file mode 100644 index 000000000..0d5bd649d --- /dev/null +++ b/bin/db_assembler/.gitignore @@ -0,0 +1,2 @@ +/output/ +config.sh diff --git a/bin/db_assembler/config.sh.dist b/bin/db_assembler/config.sh.dist new file mode 100644 index 000000000..87f6cbabf --- /dev/null +++ b/bin/db_assembler/config.sh.dist @@ -0,0 +1,49 @@ +#!/bin/bash + +# 0 if you want create an sql for each kind of following categories +# 1 to create a single big file to import ( suggested for new installations ) +ALL_IN_ONE=0 + +DATABASES=( + "AUTH" + "CHARACTERS" + "WORLD" +) + +OUTPUT_FOLDER="output/" + +# FULL DB +DB_CHARACTERS_PATHS=( + $SRCPATH"/data/sql/databases/characters.sql" +) + +DB_AUTH_PATHS=( + $SRCPATH"/data/sql/databases/auth.sql" +) + +DB_WORLD_PATHS=( + $SRCPATH"/data/sql/databases/world.sql" +) + +# UPDATES +DB_CHARACTERS_UPDATE_PATHS=( + $SRCPATH"/data/sql/updates/characters/" +) + +DB_AUTH_UPDATE_PATHS=( + $SRCPATH"/data/sql/updates/auth/" +) + +DB_WORLD_UPDATE_PATHS=( + $SRCPATH"/data/sql/updates/world/" +) + +# CUSTOM +DB_CHARACTERS_CUSTOM_PATHS=( +) + +DB_AUTH_CUSTOM_PATHS=( +) + +DB_WORLD_CUSTOM_PATHS=( +) diff --git a/bin/db_assembler/db_assembler.sh b/bin/db_assembler/db_assembler.sh new file mode 100755 index 000000000..2a29e2f3f --- /dev/null +++ b/bin/db_assembler/db_assembler.sh @@ -0,0 +1,129 @@ +#!/bin/bash + +SRCPATH=$(readlink -f "../../") + +# +# 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 : 0000_00_00_00 )" $version + version=${version:-0000_00_00_00} +else + version=$1 +fi + +source "./config.sh.dist" # "hack" to avoid missing conf variables + +if [ -f "./config.sh" ]; then + source "./config.sh" # should overwrite previous +fi + +echo "===== STARTING PROCESS =====" + +gtversion="" + +function assemble() { + database=$1 + start_sql=$2 + + var_full="DB_"$database"_PATHS" + full=${!var_full} + + var_updates="DB_"$database"_UPDATE_PATHS" + updates=${!var_updates} + + var_custom="DB_"$database"_CUSTOM_PATHS" + custom=${!var_custom} + + + suffix_base="" + suffix_upd="" + suffix_custom="" + + if (( $ALL_IN_ONE == 0 )); then + suffix_base="_base" + fi; + + echo "" > $OUTPUT_FOLDER$database$suffix_base".sql" + + + if [ ! ${#full[@]} -eq 0 ]; then + echo "Generating $OUTPUT_FOLDER$database$suffix_based ..." + + for entry in "${full[@]}" + do + if [ ! -z $entry ]; then + if [ -e $entry ]; then + cat "$entry" >> $OUTPUT_FOLDER$database$suffix_base".sql" + fi + fi + done + 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 + 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 + fi + + cat "$entry" >> $OUTPUT_FOLDER$database$suffix_upd".sql" + fi + fi + fi + done + done + 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 + cat "$entry" >> $OUTPUT_FOLDER$database$suffix_custom".sql" + fi + done + fi + done + fi +} + +mkdir -p $OUTPUT_FOLDER + +for db in ${DATABASES[@]} +do + assemble "$db" $version".sql" +done + +rm $OUTPUT_FOLDER"ZZZ_latest_version_"* +echo $gtversion > $OUTPUT_FOLDER"ZZZ_latest_version_"${gtversion%.*} + +echo "===== DONE =====" +