#!/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 1.8.5 - Wedding Bells"
# Bashburn configuration file:
export BBCONFFILE='/etc/bashburnrc'

# 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
}

init_bashburn()
{
	if [[ -r "${BBCONFFILE}" ]]; then	# If /etc/bashburnrc exists, read in the vars.
    		export BBROOTDIR="$( cat $BBCONFFILE | grep -v '^#' | grep BBROOTDIR:  | cut -d ":" -f 2- | sed -e "s/^[[:blank:]]//g")"
    		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
	sleep 3s
    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"
	(( bb_m_c += 1 ))
    echo -e "${BBTABLECOLOR}|${BBMAINCOLOR} $bb_m_c) $bb_menu_10"
    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
	    ;;
	5)	#Multisession - Alrighty then...
	    ${BBROOTDIR}/burning/multi.sh	
	    continue
	    ;;
	6)	#If you chose to blank a CDRW
	    check_cd_status
	    
	    if [ ${BB_CDSTATUS} == "BLANK" ]; then
		echo $bb_cdrw_blank6
		wait_for_enter
	    else
	    	blank_cd	   
	    fi

	    continue 
	    ;;
	7)	# 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
	    ;;
	8)	# Mount/unmount a cd
	    ${BBROOTDIR}/misc/mount.sh
	    continue
	    ;;
	9)	# Check program's paths of burning, ripped, codecs, etc.
	    ${BBROOTDIR}/misc/check_path.sh
	    continue
	    ;;
	10)	# 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

init_bashburn()
{
if [[ -r "${BBCONFFILE}" ]]; then	# If /etc/bashburnrc exists, read in the vars.
    export BBROOTDIR="$( cat $BBCONFFILE | grep -v '^#' | grep BBROOTDIR:  | cut -d ":" -f 2- | sed -e "s/^[[:blank:]]//g")"
    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
	sleep 3s
    else
	echo "$bb_text_3 '$BBBURNDIR'" 
	echo $bb_text_4
	wait_for_enter
    fi
fi
}
