#!/bin/bash
#########################################################
# 							#
# This is BashStyle-NG  				#
#							#
# Licensed under GNU GENERAL PUBLIC LICENSE v3    	#
#							#
# Copyright 2007 - 2014 Christopher Bratusek		#
#							#
#########################################################

. gettext.sh
TEXTDOMAIN="nx-rc"

export BSNG_PREFIX=/usr
export BSNG_DATA_DIR=/usr/share/
export BSNG_RC_DIR=$BSNG_DATA_DIR/bashstyle-ng/rc
export BSNG_BIN_DIR=$BSNG_RC_DIR/bin
export BSNG_LOCKFILE=$HOME/.bashstyle.lock
export BSNG_VERSION=8.99
INI_VERSION=7

if [[ ! -f ${HOME}/.bs-ng.ini ]]; then
	if [[ -f /etc/bs-ng_vendor.ini && $(grep ini_version /etc/bs-ng_vendor.ini) == *${INI_VERSION} ]]; then
		cp /etc/bs-ng_vendor.ini ${HOME}/.bs-ng.ini
	else
		cp ${BSNG_DATA_DIR}/bashstyle-ng/bs-ng.ini ${HOME}/.bs-ng.ini
	fi
elif [[ $(grep Separator ${HOME}/.bs-ng.ini) ]]; then
	sed -e '/^\[Separator\]$/,$d' -i $HOME/.bs-ng.ini
fi

ERR_MSG=""

for RC in internal/misc internal/logging; do
	source $BSNG_RC_DIR/$RC
done

export BSNG_LOGFILE=$HOME/.bashstyle.log
dbg_log rm -f $BSNG_LOGFILE
dbg_log touch $BSNG_LOGFILE

dbg_log source $BSNG_RC_DIR/styles/null-rc

dbg_msg $"BashStyle-NG Starting"
dbg_msg $"BashStyle-NG Bash Major Version:" $(echo ${BASH_VERSINFO[0]})
dbg_msg $"BashStyle-NG Bash Minor Version:" $(echo ${BASH_VERSINFO[1]})
dbg_msg $"BashStyle-NG Bash Patch Level:" $(echo ${BASH_VERSINFO[2]})
dbg_msg $"BashStyle-NG Version:" $BSNG_VERSION
dbg_msg $"BashStyle-NG Prefix:" $BSNG_PREFIX
dbg_msg $"BashStyle-NG Debugging: Enabled"
dbg_msg $"BashStyle-NG Logfile:" $BSNG_LOGFILE

if [[ $(ini_get use_readlinecfg) == "True" ]]; then
	dbg_msg $"BashStyle-NG Loading:" $"ReadlineCFG"
	dbg_log source $BSNG_RC_DIR/settings/readline-rc
fi

if [[ $(ini_get use_vimcfg) == "True" ]]; then
	dbg_msg $"BashStyle-NG Loading:" $"VimCFG"
	dbg_log source $BSNG_RC_DIR/settings/vim-rc
fi

if [[ $(ini_get use_nanocfg) == "True" ]]; then
	dbg_msg $"BashStyle-NG Loading:" $"NanoCFG"
	dbg_log source $BSNG_RC_DIR/settings/nano-rc
fi

if [[ $(ini_get use_bashstyle) == False ]]; then
	dbg_msg $"BashStyle-NG: Exiting"
else
	dbg_msg $"BashStyle-NG Loading:" $"BashStyle-NG"
fi

if [[ $(ini_get enable_colors) == "True" ]]; then
	dbg_log source $BSNG_RC_DIR/settings/color-rc
fi

if [[ $(ini_get use_lscolors) == "True" && $(ini_get enable_colors) == "True" ]]; then
	dbg_msg $"BashStyle-NG Loading:" $"LSCOLORS"
	dbg_log source $BSNG_RC_DIR/settings/ls-rc
fi

if [[ $(ini_get use_bashstyle) == "True" ]]; then

	if [[ -f /etc/bash.bashrc ]]; then
		BASHRC=/etc/bash.bashrc
	else	BASHRC=/etc/bashrc
	fi

	dbg_log source $BSNG_RC_DIR/settings/alias-rc

	dbg_msg $"BashStyle-NG Setting:" $"ps2 ps3 ps4 char" $(ini_get ps234)
	ps234char=$(ini_get ps234)

	if [[ $(ini_get colored_man) == "True" ]]; then
		dbg_log source $BSNG_RC_DIR/settings/man-rc
	fi

	dbg_log source $BSNG_RC_DIR/settings/git-rc
	dbg_log source $BSNG_RC_DIR/settings/shopt-rc

	shopt -s checkwinsize

	if [[ -e $HOME/.bashstyle.custom ]]; then \
		dbg_msg $"BashStyle-NG Loading:" $"Custom Settings"
		dbg_log source $HOME/.bashstyle.custom
	fi

	if [[ $(ini_get random_style) == "True" ]]; then \
		dbg_msg $"BashStyle-NG Setting:" $"Style Random"
		dbg_log source $BSNG_RC_DIR/settings/random-rc
	else
		pstyle=$(ini_get prompt_style)
	fi

	use_custom_prompt=$(ini_get use_custom_prompt)

	if [[ $use_custom_prompt == "True" ]]; then \
		dbg_msg $"BashStyle-NG Setting:" $"Style Custom"
		dbg_log source $BSNG_RC_DIR/styles/custom-rc
	elif [[ -e $BSNG_RC_DIR/styles/${pstyle}-rc ]]; then
		dbg_msg $"BashStyle-NG Setting:" $"Style" $pstyle
		dbg_log source $BSNG_RC_DIR/styles/${pstyle}-rc
	else
		dbg_msg $"BashStyle-NG Setting:" $"Style Fallback"
		dbg_log source $BSNG_RC_DIR/styles/fallback-rc
	fi

	dbg_msg $"BashStyle-NG Setting:" $"PS2 PS3 PS4"
	PS2="$pscolor $ps234char$fontcolor "
	PS3="$pscolor $ps234char$ps234char$fontcolor "
	PS4="$pscolor $ps234char$ps234char$ps234char$fontcolor "

	if [[ $(ini_get colorshell) == True && ${enabcol} == True ]]; then
		source $BSNG_RC_DIR/settings/colorshell
	fi

	if [[ $(ini_get tab_rotation) == "True" ]]; then \
		dbg_msg $"BashStyle-NG Setting:" $"Tab-Rotation" $"On"
		dbg_log bind 'TAB:menu-complete'
		dbg_log complete -d -X '.[a-zA-Z0-9]*' cd
	else	dbg_msg $"BashStyle-NG Setting:" $"Tab-Rotation" $"Off"
	fi

	dbg_log source $BSNG_RC_DIR/settings/options-rc

	WelcomeMessage=$(ini_get welcome_message)

	if [[ -e $HOME/.bookmarks ]]; then
		dbg_msg $"BashStyle-NG Loading:" $"Bookmarks"
		dbg_log . $HOME/.bookmarks
	else	touch $HOME/.bookmarks
	fi

	if [[ $USER_BIRTHDAY == $(date +%m-%d) && ! -e ~/.bday ]]; then
		cat $BSNG_RC_DIR/ascii/birthday
	elif [[ $WelcomeMessage != "" ]]; then \
		dbg_msg $"BashStyle-NG Setting:" $"Welcome Message"
		dbg_log $WelcomeMessage
	fi


fi

function lscd() {

	clear
	builtin cd "${@}" &>/dev/null
	. $BSNG_RC_DIR/dirinfo/display
	dirinfo_display

	echo -e "${epink}content:\n"
	if [[ $(count_files -h) -gt 0 ]]; then
		ls $LSCD_OPTS
	else	echo -e "${ecream}-- empty --\n"
	fi
	echo "$PWD" > $HOME/.lastpwd

}

if [[ $ERR_MSG != "" ]]; then
	echo -e "${eyellow}\n\nImportant informations:"
	echo -e "${eorange}${ERR_MSG}\n"
fi

dbg_finalize
