summaryrefslogblamecommitdiffstats
path: root/bashrc/main.sh
blob: 444d20416c91ccf1a4ff47900b04c5dcbc20618d (plain) (tree)
1
2
3
4
5
6
7
8




                                                    


                                                          







                                                         
                                                                              


                                               
                        
                                                                 
                                                                                      

                                                       

                                                                                                             





                                                                                             




















































                                                                                 


                                 


                  


                    
















                                          
# this file is sourced by all bash shells on startup

# test for interactive shell
[[ $- != *i* ]] && return

# return if this script is executed twice
[[ -n $(declare -p _DOTFILES_DIR 2>/dev/null) ]] && return

declare -r _DOTFILES_DIR="${HOME}/.dotfiles"
declare -r _BASHRC_DIR="${_DOTFILES_DIR}/bashrc"

# self update magic
_self_update() {
	pushd ${_DOTFILES_DIR} &>/dev/null

	if [[ -n "$(git fetch 2>&1)" && $? -eq 0 ]]; then
		echo -ne "\033[31m*\033[0m dotfile updates found, merge now? "

		if read; then
			git merge origin/master
			
			if [[ -e management/symlinks.md5 ]]; then
				md5sum -c management/symlinks.md5 --status 2>/dev/null
				
				if [[ $? -ne 0 ]]; then
					echo -e "\033[33m*\033[0m symlink mapping changed!"
					echo -e "\033[33m*\033[0m Maybe you should execute godot.sh again..."
				fi
			else
				echo -e "\033[33m*\033[0m symlink mapping checksum not found"
			fi
			md5sum symlink-mapping > management/symlinks.md5

			popd &>/dev/null
			exec $SHELL
		fi
	fi

	popd &>/dev/null
}

# module load magic
_load() {
	local base path
	local pedantic=0

	[[ -z $1 || -z $2 ]] && return

	base=${_BASHRC_DIR}/${1}

	if [[ $1 == "common" || $2 == "init" ]]; then
		path=${2}.sh
		pedantic=1
	else
		case $1 in
			(dist)  path=${_DISTNAME}/${2}.sh ;;
			(node)  path=${_NODENAME}/${2}.sh ;;
		esac
	fi

	if [[ -r ${base}/${path} ]]; then
		source ${base}/${path}
	elif [[ ${pedantic} -eq 1 ]]; then
		echo "error: cannot find necessary startup file: ${base}/${path}"
	fi
}

# update first
_self_update

# locale should be set first
_load common locale

# now set a reasonable environment
_load common env

# bash configuration
_load common shopt

# load internals
_load dist  init
_load node  init

# command aliases
_load common alias

# ssh agent forwarding
_load common ssh-agent-forwarding

# pager options
_load common pager

# browser options
_load common browser

# color code definitions
_load common color

# colored output for ls
_load common dircolors

# command prompt
#_load common prompt

# bash completion
_load common bashcomp

# load common distribution settings
_load dist common

# load distribution specific node settings
_load node  ${_DISTNAME}