#! /bin/bash
#
# This script will minify stuff, should be run before creating a release.
#
# @version	1.0.0
# @author	Tijs Verkoyen <tijs@sumocoders.be>

function check {
	# check for YUI compressor
	if [ ! -f ./library/yuicompressor.jar ]; then
		echo "Can't find YUI-compressor!"
		exit 1
	fi
}

function minifyCSS {
	# tell user
	echo "* Creating temporary CSS-file"

	# remove temp file
	rm -f ./minified.tmp.css

	cat ../default_www/backend/core/layout/css/reset.css >> minified.tmp.css
	sed -i '' "s|\(url(['\"]\{0,1\}\)\([\.a-z].*)\)|\1/backend/core/layout/css/\2|g" minified.tmp.css
	
	echo -e "\n" >> minified.tmp.css

	cat ../default_www/backend/core/layout/css/jquery_ui/fork/jquery_ui.css >> minified.tmp.css
	sed -i '' "s|\(url(['\"]\{0,1\}\)\([\.a-z].*)\)|\1/backend/core/layout/css/jquery_ui/fork/\2|g" minified.tmp.css

	echo -e "\n" >> minified.tmp.css

	cat ../default_www/backend/core/layout/css/debug.css >> minified.tmp.css
	sed -i '' "s|\(url(['\"]\{0,1\}\)\([\.a-z].*)\)|\1/backend/core/layout/css/\2|g" minified.tmp.css

	echo -e "\n" >> minified.tmp.css	
	
	FILE="../default_www/backend/core/layout/css/screen.css";

	# loop lines
	DONE=false
	until $DONE
	do
	read LINE || DONE=true
		processCSSFile "$LINE" "$FILE" "/backend/core/layout/css/"
	done < "$FILE"

	# tell user
	echo "* Temporary CSS-file created, starting to minify it"

	# build output path
	OUTPUTPATH=${FILE%/*}"/"

	# minify
	java -jar ./library/yuicompressor.jar --type css --charset utf8 -o "$OUTPUTPATH"/minified.css minified.tmp.css

	# remove temp file
	rm -f ./minified.tmp.css

	# tell user
	echo "* Saved minified CSS-file and removed temporary CSS-file"
}

function minifyJS {
	echo "* Creating temporary JS-file"

	# remove temp file
	rm -f ./minified.tmp.js
	
	cat ../default_www/backend/core/js/jquery/jquery.js >> minified.tmp.js
	echo -e "\n" >> minified.tmp.js
	cat ../default_www/backend/core/js/jquery/jquery.ui.js >> minified.tmp.js
	echo -e "\n" >> minified.tmp.js
	cat ../default_www/backend/core/js/jquery/jquery.tools.js >> minified.tmp.js
	echo -e "\n" >> minified.tmp.js
	cat ../default_www/backend/core/js/jquery/jquery.backend.js >> minified.tmp.js
	echo -e "\n" >> minified.tmp.js
	java -jar ./library/yuicompressor.jar --type js --charset utf8 --nomunge --preserve-semi ../default_www/backend/core/js/jquery/jquery.backend.js >> minified.tmp.js
	
	echo "* Combined jQuery files and minified our Fork-plugin"
	
	# move to correct location
	mv -f ./minified.tmp.js ../default_www/backend/core/js/minified.js
	
	# tell user
	echo "* Saved minified jQuery-javascript and removed temporary JS-file"
}

function processCSSFile {
	LINE="$1"
	FILEPATH="$2"
	NEWPATH=${FILEPATH%/*}"/"

	if [[ $LINE =~ .*import.*\(.*\)(.*)? ]]; then
		IMPORTFILE=${LINE/@import*url(\"/""}
		IMPORTFILE=${IMPORTFILE/\");/""}
		IMPORTPATH=`dirname $IMPORTFILE`
		
		INTERNALDONE=false
		until $INTERNALDONE
		do
		read INTERNALLINE || INTERNALDONE=true
			processCSSFile "$INTERNALLINE" "$NEWPATH$IMPORTFILE"
		done < "$NEWPATH$IMPORTFILE"

		sed -i '' "s|\(url(['\"]\{0,1\}\)\([\.a-z].*)\)|\1$3/$IMPORTPATH\2|g" minified.tmp.css
	else
		echo "$LINE" >> minified.tmp.css
	fi
}


# do checks
check

# minify CSS
minifyCSS

# minify JS
minifyJS

# done
echo "Done"