-
Notifications
You must be signed in to change notification settings - Fork 0
/
.dotfiles-rc
124 lines (108 loc) · 3.14 KB
/
.dotfiles-rc
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
# /etc/skel/.bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output. So make sure this doesn't display
# anything or bad things will happen !
# Test for an interactive shell. There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
# Shell is non-interactive. Be done now!
return
fi
debug() {
if [ -n "$VERBOSE" ] || [ -n "$DEBUG" ]; then
echo $@
fi
}
vb() {
if [ -n "$VERBOSE" ]; then
unset VERBOSE
echo "quiet mode enabled"
else
export VERBOSE=1
echo "verbose mode enabled"
fi
}
# Uncomment to log info about files being sourced, etc.
# VERBOSE=1
export REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
try_source() {
for arg in "$@"; do
if [ -s "$arg" ]; then
debug "Sourcing: $arg"
source "$arg"
else
debug "Couldn't source nonexistent file: '$arg'"
fi
done
}
export MODULES="$REPO"
load_helpers() {
for module in "$@"; do
local dir="$MODULES/$module"
if [ -d "$dir" ]; then
debug "Adding $dir to \$PATH and sourcing rc files..."
try_source "$dir"/.*-rc
prepend_to_path "$dir"
local ssh_config="$dir/.ssh/config"
if [ -s "$ssh_config" ]; then
local line="Include $ssh_config"
local ssh_dir="$HOME/.ssh"
if [ ! -e "$ssh_dir" ]; then
mkdir -p "$ssh_dir"
fi
local root_ssh_config="$ssh_dir/config"
if grep -q "$line" "$root_ssh_config"; then
debug "SSH config already Included: $ssh_config"
else
debug "Adding ssh config: $ssh_config"
echo "Include $ssh_config" >> "$root_ssh_config"
fi
fi
gitignore="$dir/global.gitignore"
if [ -s "$gitignore" ]; then
debug "Adding global git ignore file: $gitignore"
git add-global-ignore "$gitignore"
fi
gitconfig="$dir/.gitconfig"
if [ -s "$gitconfig" ]; then
debug "Adding global git config file: $gitconfig"
git-add-global-file include.path "$gitconfig"
fi
else
debug "Couldn't source nonexistent file: '$dir'"
fi
done
}
export -f load_helpers
load_helpers bash # load this module first; it provides `prepend_to_path` above!
load_helpers path
load_helpers git # this module should stand alone / be import-able outside of this repo
load_helpers which
# which
load_helpers diff file path jar
load_helpers \
arg av aws \
bash \
"case" col color comm \
datetime docker \
emacs \
find \
geo go grep \
head-tail histogram \
js \
less line linux ls \
nav net num \
parallel perl perms \
R rsync rust \
screen size sort ssh sql \
whitespace \
xml \
zip
load_helpers py # brew, path; also make sure pyenv is first on path
export gh="$REPO/git"
export gha="$gh/aliases"
export PATH="$PATH:$HOME/.cargo/bin"
dedupe_path_var PATH PYTHONPATH