#!/usr/bin/env bash

# Decoline must be two characters longer than version
# or it will look funny.
export BBDECOLINE="+----------------+"
# Version number (should not contain whitespaces at beginning or end [petsound]).
export BBVERSION="BashBurn 2.1.2"

# Bashburn configuration file:
export HOMEDIR=$HOME # User identification
export BBCONFFILE="/etc/bashburnrc" # Default config file, used if no config file in user dir 
export BBCONFFILEDEF="/etc/bashburnrc"

if [[ -r "$HOMEDIR/.bashburnrc" ]]; then 
	export BBCONFFILE="$HOMEDIR/.bashburnrc"
fi

# Detect signals as 'CTRL+C', INIT, KILL, call to function force_quit, 
# show BashBurn info and quit.
trap 'force_quit' 1 2 3 15 

force_quit()
{
	echo
	echo -e "${BBMAINCOLOR}$bb_quit1${BBHEADCOLOR}${BBVERSION}"
	echo -e "${BBMAINCOLOR}$bb_quit2${BBSUBCOLOR}$bb_quit3${BBMAINCOLOR}$bb_quit4${BBCOLOROFF}"
	sleep 2s
	break
}

# This is run at first
init_bashburn()
{
	if [[ -r "${BBCONFFILE}" ]]; then	# If /etc/bashburnrc exists, read in the vars.
		# Next line a tip from paddor
		export BBROOTDIR="$( sed -n 's/^[[:blank:]]*BBROOTDIR:[[:blank:]]*\(.*\)/\1/p' < $BBCONFFILE)"
		source ${BBROOTDIR}/misc/commands.idx
		source ${BBROOTDIR}/misc/variables.idx
		export BBTEMPMOUNTDIR="${BBBURNDIR}/mnt"
	else
		echo "There is no '${BBCONFFILE}'" 1>&2		
		echo "That is the file where BashBurn stores its settings."
		echo "You must run the BashBurn installation script first as root to install"
		echo "all needed files. Do that now and then start 'bashburn' again."
		exit 1
	fi
	
	# Read in the language file
	source ${BBROOTDIR}/lang/${BBLANG}/BashBurn.lang
	
	# Read in common functions
	source ${BBROOTDIR}/misc/commonfunctions.sh
	
	# Check if $BBBURNDIR exists, and if you have write perms.
	
	if [[ ! -e "${BBBURNDIR}" ]]; then # Check for temporary directory  
		echo
		echo $bb_no_temp_dir 
		if mkdir "${BBBURNDIR}"; then 
			echo "'$BBBURNDIR' $bb_text_1"
			echo $bb_text_2
			wait_for_enter
		else
			echo "$bb_text_3 '$BBBURNDIR'" 
			echo $bb_text_4
			wait_for_enter
		fi
	fi
	
	if [[ ! -e "$BBROOTDIR" ]]; then
		echo "$bb_text_5 ($BBROOTDIR) $bb_text_6 ('${BBCONFFILE}')" 
		exit 1
	fi
	
	# Is BashBurn ever configured?
	if [[ ${BBISCONF} = 0 ]]; then
		echo; echo $bb_conf_check1 
		echo $bb_conf_check2; echo
		wait_for_enter
	fi
}

init_bashburn # Make some checks

####PROGRAM START####
while true; do
# This is for the numbering of the menu choices. It is
# updated once before each entry printout in the menu
# except exit which should always be 0. The variable must
# be reset within this while loop or bad things will happen.
(( bb_m_c = 0 ))
# <colors>
source "$BBROOTDIR"/misc/colors.idx
# </colors>
clear
# <table>
echo -e "${BBTABLECOLOR}${BBDECOLINE}"
echo -e "${BBTABLECOLOR}|${BBHEADCOLOR} ${BBVERSION} ${BBTABLECOLOR}|"
echo -e "${BBTABLECOLOR}${BBDECOLINE}"
echo -e "${BBTABLECOLOR}|" 
echo -e "${BBTABLECOLOR}|-(${BBSUBCOLOR}MAIN${BBTABLECOLOR})"
(( bb_m_c += 1 ))
echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} $bb_m_c) $bb_menu_1"
(( bb_m_c += 1 ))
echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} $bb_m_c) $bb_menu_2"
(( bb_m_c += 1 ))
echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} $bb_m_c) $bb_menu_3"
(( bb_m_c += 1 ))
echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} $bb_m_c) $bb_menu_4"
(( bb_m_c += 1 ))
echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} $bb_m_c) $bb_menu_5"
(( bb_m_c += 1 ))
echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} $bb_m_c) $bb_menu_6"
(( bb_m_c += 1 ))
echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} $bb_m_c) $bb_menu_7"
(( bb_m_c += 1 ))
echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} $bb_m_c) $bb_menu_8"
(( bb_m_c += 1 ))
echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} $bb_m_c) $bb_menu_9"
echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} 0) $bb_menu_0"
echo -e "${BBTABLECOLOR}|"
echo -n -e "${BBINPUTCOLOR}$bb_menu_input[0-$bb_m_c] |>${BBMAINCOLOR} "
read action
echo -e "$BBCOLOROFF"
# </table>

case $action in
	1)	# If you chose audio, do:
		${BBROOTDIR}/menus/audio_menu.sh
		continue
		;;
	2) 	# If you chose data, do:
		${BBROOTDIR}/menus/data_menu.sh
		continue
		;;
	3)	#If you chose ISO, do:
		${BBROOTDIR}/menus/iso_menu.sh 
		continue
		;;
	4)	#Burn an bin/cue file:
		${BBROOTDIR}/burning/bincue.sh
		continue
		;;
	5)	#Multisession - Alrighty then...
		${BBROOTDIR}/burning/multi.sh	
		continue
		;;
	6)	# If you chose to configure BashBurn:
		${BBROOTDIR}/config/configure.sh
		# And in case we changed any options, read in vars again
		source ${BBROOTDIR}/misc/variables.idx
		continue
		;;
	7)	# Mount/unmount a cd
		${BBROOTDIR}/misc/mount.sh
		continue
		;;
	8)	# Check program's paths of burning, ripped, codecs, etc.
		${BBROOTDIR}/misc/check_path.sh
		continue
		;;
	9)	# Copy/link data to the temporary burn dir
		${BBROOTDIR}/misc/datadefine.sh
		continue
		;;
	0)	# Traitor! You quit BashBurn!
		# Reset terminal
		tput sgr0
		force_quit
		;;
	*)	# You actually chose wrong? ...hmmm...
		echo "$bb_exit_error[0-$bb_m_c]"  
		wait_for_enter
		continue
		;;
esac
done

