#!/bin/bash

terminalColors() {
	# Colors from - https://gist.github.com/5682077.git
	TC='\e['

	Bold="${TC}1m"    # Bold text only, keep colors
	Undr="${TC}4m"    # Underline text only, keep colors
	Rst="${TC}0m"     # Reset all coloring and style

	# Basic colors
	Black="${TC}30m"
	Red="${TC}31m"
	Green="${TC}32m"
	Yellow="${TC}33m"
	Blue="${TC}34m"
	Purple="${TC}35m"
	Cyan="${TC}36m"
	White="${TC}37m"

	Crossed="\u2718"

	#copy pasted tick symbold because unicode was acting weird
	Ticked="✓"
	Info="!"

	Oper=${Bold}'[ * ]'
	OperSuccess=${Bold}${Green}'[ '${Ticked}' ]'
	OperFailed=${Bold}${Red}'[ '${Crossed}' ]'
	Info=${Bold}${Yellow}'[ '${Info}' ]'
}

printNormal() {
	echo -e "${Oper} $1$Rst";
}

printSuccess() {
	echo -e "${OperSuccess} $1$Rst"
}

printFailed() {
	echo -e "${OperFailed} $1$Rst"
}

printInfo() {
	echo -e "${Info} $1$Rst"
}

help() {
	echo -e "${Bold}${Yellow}Google Fonts Installer${Rst}\n"
	echo -e "${Bold}Usage:${Rst}\ngfinstall fontNameHere\n\n${Bold}Options:${Rst}\n-l  |  --local\t\t\t\tTo Install fonts locally\n-v  |  --version\t\t\tCheck gfinstall version\n-h  |  --help\t\t\t\tDisplays available options${Rst}"
	echo -e "\nBy default fonts will be installed globally (/usr/share/fonts/)\nIf you want to install it only for the current (local) user then use -l or --local flag"
	echo -e "\n${Bold}Examples\n${Rst}gfinstall montserrat\t\t\t# install montserrat font globally\ngfinstall --local ubuntu\t\t# install ubuntu font locally\ngfinstall -v\t\t\t\t# to check gfinstall version"
	return 0
}

version() {
	version=`apt-cache show gfinstall | grep Version | cut -d ' ' -f2`
	echo $version
	return 0
}

install() {
	options=$1 			# options
	fontName=${2,,}		# font name

	if [[ -z $fontName ]]
	then
		printFailed "You need to specify font name to be installed"
		printNormal "Example, gfinstall montserrat"
		return 1
	fi

	printNormal "Fetching $fontName font from Google Fonts..."
	svn export https://github.com/google/fonts/trunk/ofl/$fontName /var/tmp/gfFonts --force &> /dev/null

	if [ $? != 0 ]
	then
		printFailed "Font $fontName not found"
		return 1
	fi

	if [[ -z $options ]]
	then
		printNormal "Installing font globally"
		
		if [ ! -e /var/tmp/gfFonts ]
		then
			mkdir /var/tmp/gfFonts
		fi
		
		sudo mv /var/tmp/gfFonts/*.ttf /usr/share/fonts/
		rm -r /var/tmp/gfFonts
		printSuccess "$fontName Installed"
		return 0
	fi

	if [[ $options == "-l" ]]
	then
		printNormal "Installing font locally"
		
		if [ ! -e /var/tmp/gfFonts ]
		then
			mkdir /var/tmp/gfFonts
		fi

		mv /var/tmp/gfFonts/*.ttf ~/.fonts
		rm -r /var/tmp/gfFonts
		printSuccess "$fontName Installed"
		return 0
	fi

	rm -r /var/tmp/gfFonts
	printFailed "Invalid argument, type \`gfinstall --help\` to know all commands"
	return 1
}

terminalColors
if [ "$1" != "" ]
then
    PARAM=$1
    case $PARAM in
        -h  |  --help      		) help; exit;;
		-v  |  --version   		) version; exit;;
		-l  |  --local	 		) install "-l" $2; exit;;
							 --*) help; exit;;
							  -*) help; exit;;
                        	   *) install "" $1; exit;;
    esac
fi
help
