-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathpostinstall-user.sh
executable file
·193 lines (161 loc) · 5.12 KB
/
postinstall-user.sh
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#!/bin/bash
function postinstall_user_ssh_make_config {
cat <<EOD
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github_%l
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlab_%l
Host bitbucket.org
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_bitbucket_%l
EOD
}
function postinstall_user_ssh_config {
[[ ! -d ~/.ssh ]] && mkdir -p ~/.ssh && chmod 700 ~/.ssh
[[ ! -f ~/.ssh/config ]] && postinstall_user_ssh_make_config >> ~/.ssh/config
}
function postinstall_user_git_make_config {
local user=$1
local email=$2
cat <<EOD
[user]
user = ${user}
email = ${email}
[alias]
pullall = !"git pull origin -v && git pull upstream -v"
fetchall = !"git fetch origin -v && git fetch upstream -v"
fetch-force = !"git fetch && git reset --hard FETCH_HEAD && git clean -df"
incoming = !"git fetch && git log ..origin/master"
unstage = reset HEAD
pre-merge = merge --no-commit --no-ff
[diff]
guitool = meld
[difftool "meld"]
cmd = meld \"$LOCAL\" \"$REMOTE\" --label \"DIFF (ORIGINAL MY)\"
[merge]
tool = meld
[mergetool "meld"]
cmd = meld --auto-merge \"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\" --label \"MERGE (REMOTE BASE MY)\"
trustExitCode = false
[mergetool]
# don't ask if we want to skip merge
prompt = false
# don't create backup *.orig files
keepBackup = false
[push]
default = simple
[pull]
rebase = true
EOD
}
function postinstall_user_git_config {
if [ ! -f ~/.gitconfig ] ;then
local user=$(getent passwd $USER | cut -d: -f5 | cut -d, -f1)
local email=$(getent passwd $USER | cut -d: -f5 | cut -d, -f2)
local email=${email:=$USER@$(dnsdomainname)}
postinstall_user_git_make_config "$user" "$email" >> ~/.gitconfig
fi
}
function postinstall_user_download_bash_scripts {
[[ ! -d "${WORKSPACE}" ]] && mkdir -p "${WORKSPACE}"
pushd "${WORKSPACE}"
if [ ! -d bash-scripts ] ;then
git clone http://github.com/frgomes/bash-scripts
else
cd bash-scripts
git pull
fi
popd
}
function postinstall_user_download_carpalx {
[[ ! -d "${WORKSPACE}" ]] && mkdir -p "${WORKSPACE}"
pushd "${WORKSPACE}"
if [ ! -d carpalx ] ;then
git clone http://github.com/frgomes/carpalx
else
cd carpalx
git pull
fi
popd
}
function __postinstall_user_download_dot_emacs_dot_d {
pushd $HOME
if [ ! -d .emacs.d ] ;then
git clone http://github.com/frgomes/.emacs.d
else
cd .emacs.d
git pull
fi
popd
}
function postinstall_user_download_dot_emacs_dot_d {
pushd $HOME
if [ ! -f .emacs.d/README.org ] ;then
if [ -d .emacs.d ] ;then mv .emacs.d .emacs.d-$(date +%Y%m%d-%H%M%S) ;fi
__postinstall_user_download_dot_emacs_dot_d
fi
popd
}
function postinstall_user_firefox {
[[ ! -d "${DOWNLOADS}" ]] && mkdir -p "${DOWNLOADS}"
local app=firefox
local lang=$(echo $LANG | cut -d. -f1 | sed "s/_/-/")
local hwarch=$(uname -m | tr '[:upper:]' '[:lower:]')
local osarch=$(uname -s | tr '[:upper:]' '[:lower:]')
local version=71.0
if [ ! -e "${DOWNLOADS}"/${app}-${version}.tar.bz2 ] ;then
pushd "${DOWNLOADS}" 2>&1 > /dev/null
wget https://ftp.mozilla.org/pub/${app}/releases/${version}/${osarch}-${hwarch}/${lang}/${app}-${version}.tar.bz2
popd 2>&1 > /dev/null
fi
local tools=${TOOLS_HOME:=$HOME/tools}
[[ ! -d ${tools} ]] && mkdir -p ${tools}
pushd ${tools} 2>&1 > /dev/null
tar xpf "${DOWNLOADS}"/${app}-${version}.tar.bz2
popd 2>&1 > /dev/null
[[ ! -d ~/bin ]] && mkdir -p ~/bin
ln -s ${tools}/${app}/${app} ~/bin/${app}
echo ~/bin/${app}
}
function postinstall_user_thunderbird {
[[ ! -d "${DOWNLOADS}" ]] && mkdir -p "${DOWNLOADS}"
local app=thunderbird
local lang=$(echo $LANG | cut -d. -f1 | sed "s/_/-/")
local hwarch=$(uname -m | tr '[:upper:]' '[:lower:]')
local osarch=$(uname -s | tr '[:upper:]' '[:lower:]')
local version=68.3.1
if [ ! -e "${DOWNLOADS}"/${app}-${version}.tar.bz2 ] ;then
pushd "${DOWNLOADS}" 2>&1 > /dev/null
wget https://ftp.mozilla.org/pub/${app}/releases/${version}/${osarch}-${hwarch}/${lang}/${app}-${version}.tar.bz2
popd 2>&1 > /dev/null
fi
local tools=${TOOLS_HOME:=$HOME/tools}
[[ ! -d ${tools} ]] && mkdir -p ${tools}
pushd ${tools} 2>&1 > /dev/null
tar xpf "${DOWNLOADS}"/${app}-${version}.tar.bz2
popd 2>&1 > /dev/null
[[ ! -d ~/bin ]] && mkdir -p ~/bin
ln -s ${tools}/${app}/${app} ~/bin/${app}
echo ~/bin/${app}
}
function postinstall_user {
self=$(readlink -f "${BASH_SOURCE[0]}"); dir=$(dirname $self)
grep -E "^function " $self | fgrep -v "function __" | cut -d' ' -f2 | head -n -1 | while read cmd ;do
$cmd
done
}
if [ $_ != $0 ] ;then
# echo "Script is being sourced: list all functions"
self=$(readlink -f "${BASH_SOURCE[0]}"); dir=$(dirname $self)
grep -E "^function " $self | fgrep -v "function __" | cut -d' ' -f2 | head -n -1
else
# echo "Script is a subshell: execute last function"
self=$(readlink -f "${BASH_SOURCE[0]}"); dir=$(dirname $self)
cmd=$(grep -E "^function " $self | cut -d' ' -f2 | tail -1)
$cmd $*
fi