export WEB_LOCALHOST_DIR=/home/kuba/prg/bash/test/www
export WEB_WORKSPACE=/home/kuba/prg/bash/test/weby
export MYSQL_PWD=
export WEB_EXPORT_DIR=/home/kuba/prg/bash/test/files

function wddump {
	if [ "$#" -ne 1 ]
	then
		echo "Použití: wddump projekt"
		return 1
	fi
	mysqldump -p$MYSQL_PWD -r "$WEB_WORKSPACE"/"$1"/_sql/db.sql --extended-insert=false -c "$1"
	return "$?"
}

function wdhasdb {
	echo "show databases;"|mysql -p$MYSQL_PWD|grep "$1">/dev/null
	madb="$?"
	if [ "$madb" -eq 0 ]
	then
		echo "Databáze už existuje"
	else
		echo "Databáze neexistuje"
	fi
	return "$madb"
}

function wdexportdb {
	projekt="$1"
	if [ -d _sql ]
	then
		madb=0 # 0 je pravda, 1 je lež
	else
		wdhasdb "$projekt"
		if [ "$?" -eq 0 ]
		then
			mkdir _sql
			madb=0
		else
			madb=1
		fi
	fi
	if [ "$madb" -eq 0 ]
	then
		echo "Exportuji mysql"
		if [ ! -f _sql/db.sql ]
		then
			initial=0
		else
			initial=1
		fi
		wddump $projekt
		if [ "$?" -ne 0 ]
		then
			echo "Záloha databáze selhala!"
			return 1
		fi
		if [ "$initial" -eq 0 ]
		then
			cp "$WEB_LOCALHOST_DIR"/_sql/db.sql "$WEB_LOCALHOST_DIR"/_sql/"$projekt".initial.`date +%Y%m%d`.sql
		fi

		# sql diff před commitem
		git diff _sql/db.sql>_sql/diff
		if [ -s "_sql/diff" ] # není prázdný diff
		then
			sqlupdate=_sql/"$projekt".update.`date +%Y%m%d`.sql
			if [ -f "$sqlupdate" ]
			then
				echo "Dnešní sql update již existuje. Chceš ho smazat nebo v něm pokračovat?"
				rm -i "$sqlupdate"
			fi
			if [ ! -f "$sqlupdate" ]
			then
				mysqlverze=`mysql --version|grep --only-matching -e 'Distrib [0-9]*\.[0-9]*\.[0-9]*'|sed -e 's/Distrib //'`
				echo "-- MySQL dump 10.11
--
-- Host: localhost    Database: $projekt
-- ------------------------------------------------------
-- Server version	$mysqlverze

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
">"$sqlupdate"
			fi
			cat "_sql/diff">>"$sqlupdate"
			vi $sqlupdate
		fi
		rm "_sql/diff"

		# nastavit práva všech sql souborů
		chmod -R 700 _sql
	fi
}

function wdcommit {
	echo "Ukládám změny pomocí git"
	echo ">>> Změny v repozitáři >>>>"
	git add .
	git commit -a
	echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>"
}

function wds {
	if [ $# -ne 1 ] && [ $# -ne 3 ]
	then
		echo "Použití: wds projekt [-db import.sql]"
		return 1
	fi
	projekt=${1%/}
	echo "Začínám pracovat na $projekt..."
	rm -rf "$WEB_LOCALHOST_DIR"
	workdir="$WEB_WORKSPACE"/"$projekt"
	if [ ! -d $workdir ]
	then
		echo "Projekt $projekt neexistuje"
		return 1
	fi
	ln -sT "$workdir" "$WEB_LOCALHOST_DIR"
	export WEB_CURRENT_PROJECT="$projekt"
	
	if [ -d "$workdir"/_sql ]
	then
		chmod -R 700 "$workdir"/_sql
	fi
	if [ -d "$workdir"/templates_c ]
	then
		chmod 777 "$workdir"/templates_c
	fi

	# git
	rundir=`pwd`
	cd "$WEB_LOCALHOST_DIR"
	echo "(Re)inicializuji git"
	git init -q

	# import databáze, pokud je zadán parametr -db
	if [ "$2" != "" ] && [ $# -eq 3 ]
	then
		wdhasdb "$projekt"
		if [ "$?" -eq 0 ]
		then
			wddump $projekt
			if [ $? -ne 0 ]
			then
				echo "Záloha databáze selhala, import se nebude provádět"
				return 1
			fi
			git add _sql/db.sql
			git commit _sql/db.sql -m "Databáze před importem $rundir/$3"
			mysql -p$MYSQL_PWD -e "drop database $projekt;"
		fi
		echo "Importuji databázi ze souboru $rundir/$3"
		mysql -p$MYSQL_PWD -e "create database $projekt;"
		echo ">>>> Výstup importu >>>>>>>"
		mysql -p$MYSQL_PWD "$projekt" < "$rundir"/"$3"
		if [ $? -ne 0 ]
		then
			echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>"
			echo "Import selhal!"
			return 1
		else
			echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>"
			echo "Import $projekt proběhl v pořádku"
		fi
	fi

	cd "$rundir"
}

function wde {
	if [ $# -eq 0 ]
	then
		echo "Použití: wde [files | tar]"
		return 1
	fi
	target=$1
	projekt=${WEB_CURRENT_PROJECT%/}
	if [ ! -d "$WEB_WORKSPACE"/"$projekt" ] || [ "$projekt" == "" ]
	then
		echo "Není zahájena práce na žádném projektu"
		return 1
	fi
	if [ ! -d "$WEB_LOCALHOST_DIR" ]
	then
		echo "Neexistuje pracovní adresář $WEB_LOCALHOST_DIR"
		return 1
	fi
	if [ ! -d "$WEB_EXPORT_DIR" ]
	then
		echo "Neexistuje exportní adresář $WEB_EXPORT_DIR"
		return 1
	fi
	echo "Exportuji aktuální projekt "$projekt"..."

	rundir=`pwd`
	cd "$WEB_LOCALHOST_DIR"

	# sql
	wdexportdb "$projekt"

	# git
	wdcommit
	cd "$rundir"
	
	exportdir="$WEB_EXPORT_DIR"/"$projekt"
	if [ -d "$exportdir" ]
	then
		echo "POZOR! V adresáři $exportdir je starý export"
		rm -Ir "$exportdir"
	fi
	cp -r --dereference "$WEB_LOCALHOST_DIR" "$exportdir"

	find "$exportdir" -name "*~" -exec rm '{}' \;
	rm -rf "$exportdir"/.git*

	# přesunout config.php-out na config.php
	if [ -r "$exportdir"/includes/config.php-out ]
	then
		mv "$exportdir"/includes/config.php-out "$exportdir"/includes/config.php
	fi
	
	# smazat obsah templates_c
	if [ -d "$exportdir"/templates_c ]
	then
		rm "$exportdir"/templates_c/*
	fi

	if [ "$target" == "files" ]
	then
		echo "Exportované soubory se nacházejí v adresáři:"
		echo "$exportdir"
		echo "$exportdir"|xclip
	elif [ "$target" == "tar" ]
	then
		nazev="$projekt".`date +%Y%m%d%H%M`.tar.bz2
		echo "Exportuji do archivu $nazev"
		tar -cjf "$nazev" -C "$WEB_EXPORT_DIR" --exclude=CVS "$projekt"
		if [ "$?" -ne 0 ]
		then
			rm "$nazev"
			echo "Při archivaci nastala chyba"
			echo "Chceš smazat dočasné soubory?"
			rm -Ir "$exportdir"
			return 1
		fi
		rm -rf "$exportdir"
	else
		echo "Neznámá exportní akce"
		return 1
	fi

}

function wdtag {
	if [ "$#" -ne 1 ]
	then
		echo "Použití wdtag název_tagu"
		return 1
	fi

	projekt=${WEB_CURRENT_PROJECT%/}
	rundir=`pwd`
	cd "$WEB_LOCALHOST_DIR"
	wdexportdb "$projekt"
	if [ "$?" -ne 0 ]
	then
		echo "Export databáze selhal"
		return 1
	fi
	wdcommit
	git tag -a "$1"
	cd "$rundir"
}

