This repository has been archived by the owner on Dec 6, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathinstaller.sh
executable file
·140 lines (125 loc) · 3.5 KB
/
installer.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
set -e
usage() {
echo "Usage: $0 [OPTION]"
echo " -h, --help Show help."
}
parse_arguments() {
while [ $# -gt 0 ]
do
case $1 in
-d | --directory)
QAKE_INSTALL_DIR=$2
shift 2
;;
-h | --help)
usage
exit 0
;;
-ne | --no-env)
INSTALL_ENV=false
shift 1
;;
-nc | --no-color)
USE_COLORS=false
shift 1
;;
-nC | --no-cloning)
DO_CLONE=false
shift 1
;;
-nm | --no-make)
INSTALL_MAKE=false
shift 1
;;
-s | --source)
QAKE_URL=$2
shift 2
;;
*)
echo "Unknown option: $1"
shift 1
;;
esac
done
[ -z "$DO_CLONE" ] && DO_CLONE=true
[ -z "$INSTALL_ENV" ] && INSTALL_ENV=true
[ -z "$QAKE_URL" ] && QAKE_URL="[email protected]:mkpankov/qake.git"
[ -z "$QAKE_INSTALL_DIR" ] && QAKE_INSTALL_DIR="$HOME/qake/"
[ -z "$USE_COLORS" ] && USE_COLORS=true
[ -z "$INSTALL_MAKE" ] && INSTALL_MAKE=true
}
info() {
if [ $USE_COLORS ]; then tput setaf 4; fi
echo -n "[INFO] "
if [ $USE_COLORS ]; then tput sgr0; fi
echo "$1"
}
error() {
if [ $USE_COLORS ]; then tput setaf 1; fi
echo -n '[ERROR] '
if [ $USE_COLORS ]; then tput sgr0; fi
echo "Failed command: "
echo "$@"
}
congrats() {
if [ $USE_COLORS ]; then tput setaf 2; fi
echo "$1"
if [ $USE_COLORS ]; then tput sgr0; fi
}
try() {
if ! "$@"; then error "$@"; exit 1; fi
}
maybe_clone() {
if $DO_CLONE
then
info "Cloning $QAKE_URL into $QAKE_INSTALL_DIR"
try git clone $QAKE_URL $QAKE_INSTALL_DIR
fi
}
maybe_install_make() {
if $INSTALL_MAKE
then
readonly MAKE_FILENAME=make-4.0.tar.bz2
readonly QAKE_MAKE_INSTALL_DIR="$QAKE_INSTALL_DIR/make-4.0/install"
readonly MAKE="$QAKE_MAKE_INSTALL_DIR"/bin/make
info "Downloading Make 4.0 to $QAKE_INSTALL_DIR/$MAKE_FILENAME"
wget http://ftp.gnu.org/gnu/make/$MAKE_FILENAME \
-O $QAKE_INSTALL_DIR/$MAKE_FILENAME
cd $QAKE_INSTALL_DIR
tar -xf $QAKE_INSTALL_DIR/$MAKE_FILENAME
cd make-4.0
info "Configuring Make 4.0"
try ./configure --prefix="$QAKE_MAKE_INSTALL_DIR" > /dev/null
info "Building Make 4.0"
try make -j > /dev/null
info "Installing Make 4.0 to $QAKE_MAKE_INSTALL_DIR"
try make install -j > /dev/null
echo "$MAKE" > $QAKE_INSTALL_DIR/.make_path
fi
}
maybe_install_env() {
if $INSTALL_ENV
then
case $(basename $SHELL) in
"zsh")
SHRC="$HOME/.zshrc"
;;
"bash")
SHRC="$HOME/.bashrc"
;;
*)
warning "Unknown shell $SHELL, skipping alias installation..."
return
;;
esac
try echo alias qake="$QAKE_INSTALL_DIR/qake" >> $SHRC
try echo export QAKE_INCLUDE_DIR="$QAKE_INSTALL_DIR" >> $SHRC
info "Please do 'source $SHRC' to finish installation."
fi
}
parse_arguments $*
[ ! -d $QAKE_INSTALL_DIR ] && mkdir -p $QAKE_INSTALL_DIR
maybe_clone
maybe_install_make
maybe_install_env
congrats "Qake is successfully installed and is ready to work!"