-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathdriver.bash
executable file
·99 lines (84 loc) · 2.17 KB
/
driver.bash
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
drivers_dir=$dotfiles/drivers
export DRIVERS_DIR="$drivers_dir"
git_set_user() {
export GIT_AUTHOR_NAME="$1"
export GIT_AUTHOR_EMAIL="$2"
export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
}
driver_set_vars() {
local username fullname email
username="$1"
fullname="$2"
email="${3:[email protected]}"
export M_DRIVER=$username
git_set_user "$fullname" "$email"
}
driver_reset_vars() {
unset M_DRIVER
git_set_user "Pairing Station - $(hostname -s)" [email protected]
driver_rm_file
}
driver_load_file() {
if [[ -f ~/.driver ]] ; then
driver "$(<~/.driver)"
fi
}
driver_rm_file() {
rm -f ~/.driver
}
driver_save_file() {
if [[ -n "$M_DRIVER" ]] ; then
printf '%s' "$M_DRIVER" > ~/.driver
fi
}
driver_usage() {
cat <<USAGE >&2
Manages the current "driver" for a pair.
Usage:
Set driver variables:
driver username "Full Name" email -- set driver variables
driver username "Full Name" -- email defaults to {username}@4moms.com
driver {alias} -- set driver variables by nickname
Other commands:
driver show -- show driver variables
driver -- "
driver load -- load driver from ~/.driver (if present)
driver reset -- reset variables to default values
driver --help -- show this help
USAGE
}
driver_show_vars() {
local var
for var in DRIVER GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL ; do
printf '%s=%s\n' $var "${!var:-"(unset)"}"
done
}
driver() {
if [[ $# -gt 1 ]] ; then
driver_set_vars "$@"
else
# handle commands
local handled=true
case "$1" in
''|show) driver_show_vars ;;
load) driver_load_file ;;
reset) driver_reset_vars ;;
save) driver_save_file ;;
-h|--help) driver_usage ;;
*) handled=false ;;
esac
$handled && return 0
# handle aliased users
if [[ -f "$drivers_dir/$1" ]] ; then
. "$drivers_dir/$1"
driver_save_file
else
printf 'Unrecognized driver alias: %s\n' "$1"
driver_reset_vars
return 1
fi
fi
}
alias me=driver
driver load