blob: d8b5a278a14a5b615400b1cf9f2358b3d9299e86 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
# this file is sourced by all bash shells on startup
# test for interactive shell
[[ $- != *i* ]] && exit
# return if this script is executed twice
[[ -n $(declare -p _DOTFILES_DIR 2>/dev/null) ]] && exit
declare -r _DOTFILES_DIR="${HOME}/.dotfiles"
declare -r _BASHRC_DIR="${_DOTFILES_DIR}/bashrc"
# start in home dir
cd "${HOME}"
# self update magic
_self_update() {
pushd ${_DOTFILES_DIR} &>/dev/null
git fetch origin 2>/dev/null
if [[ -n "$(git whatchanged HEAD..origin/master)" ]]; then
echo -ne "\033[31m*\033[0m dotfile updates found, merge now? (Y/n) "
read _merge;
if [[ $_merge != 'n' ]]; 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"
echo -e "\033[33m*\033[0m Maybe you should execute godot.sh again."
fi
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} 2>&1 > /dev/null
elif [[ $1 == "node" && $2 == "*" ]]; then
for file in ${base}/${path}; do
if [[ -r $file ]]; then
source $file 2>&1 > /dev/null
fi
done
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
# screen shelltitle magic
_load common screen
# bash completion
_load common bashcomp
# load common distribution settings
_load dist common
# load distribution specific node settings
_load node ${_DISTNAME}
# initialize preexec hack last
init_preexec_hack
|