-
Notifications
You must be signed in to change notification settings - Fork 2
/
get.sh
executable file
·141 lines (130 loc) · 3.83 KB
/
get.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
#!/usr/bin/env bash
### BEGIN ###
# Author: idevz
# Since: 18:07:28 2019/10/26
# Description: online install lego
# get ./get.sh
#
# this online installation script is came from "wtool" which created by [email protected]
#
# Environment variables that control this script:
#
### END ###
set -e
function logo() {
echo "
██▓ ▓█████ ▄████ ▒█████
▓██▒ ▓█ ▀ ██▒ ▀█▒▒██▒ ██▒
▒██░ ▒███ ▒██░▄▄▄░▒██░ ██▒
▒██░ ▒▓█ ▄ ░▓█ ██▓▒██ ██░
░██████▒░▒████▒░▒▓███▀▒░ ████▓▒░
░ ▒░▓ ░░░ ▒░ ░ ░▒ ▒ ░ ▒░▒░▒░
░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ▒ ▒░
░ ░ ░ ░ ░ ░ ░ ░ ░ ▒
░ ░ ░ ░ ░ ░ ░"
}
function get_type() {
echo "1 : Download and install to current folder"
echo "2 : Download only"
echo "q : Quit"
local choice=
while (true); do
echo -n "Enter a value:"
read choice </dev/tty
if [ "$choice" = "q" ]; then exit 0; fi
if [ "$choice" -gt "0" ] 2>/dev/null && [ "$choice" -lt "4" ] 2>/dev/null; then
return "$choice"
else
echo "$choice is not valid option!"
fi
done
}
function do_download() {
local fetch_dir=${1}
if [ ! -d "$fetch_dir" ]; then
echo "$fetch_dir is not vaild!"
exit 1
fi
cd "$fetch_dir"
test_exists "$fetch_dir"
local has_git=
type "git" >/dev/null 2>/dev/null || has_git=$?
if [ "$has_git" -eq 0 ]; then
echo "fetching source from github"
do_fetch "$fetch_dir"
else
echo "can't locate git ,using archive mode."
do_download_archive "$fetch_dir"
fi
echo "lego is downloaded to $fetch_dir/lego"
}
function do_download_archive() {
mkdir lego && cd lego
curl -L https://github.com/idevz/lego/tarball/master | tar -xf - --strip-components=1
}
function test_exists() {
if [ -e o ] || [ -e runX.sh ]; then
echo "$1/lego already exist!"
local choice=
while (true); do
echo -n "(q)uit or (r)eplace?"
read choice </dev/tty
if [ "$choice" = "q" ]; then
exit 0
elif [ "$choice" = "r" ]; then
rm -fr $1/lego
break
else
echo "$choice is not valid!"
fi
done
fi
}
function do_fetch() {
local fetch_dir=$1
if [ ! -d "$fetch_dir" ]; then
echo "$fetch_dir is not vaild!"
exit 1
fi
cd "$fetch_dir"
test_exists lego
git clone https://github.com/idevz/lego.git lego --depth=1
cd lego
return 0
}
function do_install() {
echo '***install need sudo, please enter password***'
sudo make install
echo 'lego had been installed to /usr/local/bin as command "o", have fun.'
}
function main() {
logo
local type=
if [ "$1" = "install" ]; then
type="1"
elif [ "$1" = "download" ]; then
type="2"
else
get_type || type=$?
fi
local current_folder=
current_folder="$(pwd)"
case "$type" in
"1")
echo "Launching lego installer..."
do_download "${current_folder}"
do_install
;;
"2")
echo "Start downloading lego ..."
do_download "${current_folder}"
;;
esac
echo ""
echo "***************************************************************"
echo "***please add following commands to .bashrc for tab completing***"
echo ""
echo "source ${current_folder}/lego/lego/ac/auto-complete"
echo "***************************************************************"
}
main "$@"