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

dbg_msg $"BashStyle-NG Setting:" Git $"Options"

if [ ! -z "$(ini_get git_user_name)" ]; then
	dbg_msg $"BashStyle-NG Setting:" Git $"user name"
	dbg_log git config --global user.name "$(ini_get git_user_name)"
fi

if [ ! -z "$(ini_get git_user_mail)" ]; then
	dbg_msg $"BashStyle-NG Setting:" Git $"user mail address"
	dbg_log git config --global user.email "$(ini_get git_user_mail)"
fi

if [ ! -z "$(ini_get git_signkey)" ]; then
	dbg_msg $"BashStyle-NG Setting:" Git $"default singing key"
	dbg_log git config --global user.signingkey "$(ini_get git_signkey)"
fi

COLOR_OPTS=(branch diff interactive pager status)

if bt $(ini_get git_color); then
	dbg_msg $"BashStyle-NG Setting:" Git colors $"On"
	for opt in "${COLOR_OPTS[@]}"; do
		dbg_log git config --global color."${opt}" true
	done
else
	dbg_msg $"BashStyle-NG Setting:" Git colors $"Off"
	for opt in "${COLOR_OPTS[@]}"; do
		dbg_log git config --global color."${opt}" false
	done
fi

if bt $(ini_get git_ssh_remember); then
	dbg_msg $"BashStyle-NG Setting:" Git $"SSH Remember" $"On"
	dbg_msg $"Bashstyle-NG Setting:" Git $"SSH Timeout" $(ini_get git_ssh_timeout)
	dbg_log eval $(ssh-agent -s -t $(ini_get git_ssh_timeout)) >/dev/null

	_git_ssh_remember_trap () {
		rm -f ${BSNG_TMPDIR}/gitkit_time_${BASH_SESSION_PID}*
	}
	trap_add _git_ssh_remember_trap EXIT
else
	dbg_msg $"BashStyle-NG Setting:" Git $"SSH Remember" $"Off"
fi

if [ ! -z "$(ini_get git_editor)" ]; then
	dbg_msg $"BashStyle-NG Setting:" Git $"editor"
	dbg_log git config --global core.editor "$(ini_get git_editor)"
fi

if [ ! -z "${git_ssh_keyfile}" ]; then
	dbg_msg $"BashStyle-NG Setting:" Git $"SSH Keyfile" $(ini_get git_ssh_keyfile)
fi

if bt $(ini_get git_aliases); then
	dbg_msg $"BashStyle-NG Setting:" Git aliases $"On"
	dbg_log git config --global alias.co checkout
	dbg_log git config --global alias.up pull
	dbg_log git config --global alias.re "reset --hard HEAD"
	dbg_log git config --global alias.ma "checkout master"
	dbg_log git config --global alias.who "shortlog -s --"
	dbg_log git config --global alias.ci commit
	dbg_log git config --global alias.ls "log --format='%Cgreen%H %Cred%ai %Creset- %s'"
	dbg_log git config --global alias.lsb "for-each-ref --sort=-committerdate --format='%1B[32m%(committerdate:iso8601) %1B[34m%(committerdate:relative)  %1B[0;m%(refname:short)' refs/remotes refs/heads"
	dbg_log git config --global alias.stage "add -u"
else
	dbg_msg $"BashStyle-NG Setting:" Git aliases $"Off"
	dbg_log git config --global --unset alias.co
	dbg_log git config --global --unset alias.up
	dbg_log git config --global --unset alias.re
	dbg_log git config --global --unset alias.ma
	dbg_log git config --global --unset alias.who
	dbg_log git config --global --unset alias.ci
	dbg_log git config --global --unset alias.ls
	dbg_log git config --global --unset alias.stage
	dbg_log git config --global --unset alias.lsb
fi
