-
Notifications
You must be signed in to change notification settings - Fork 4
/
install
executable file
·114 lines (101 loc) · 2.54 KB
/
install
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
#!/usr/bin/env bash
# install location
LOCATION=/usr/local/bin
# exit top level program from subshell
trap "exit 1" TERM
export TOP_PID=$$
function fail() {
kill -s TERM $TOP_PID
}
# platform IDs
LIN=linux
MAC=macos
WIN=windows
# returns this platform ID
function get_this_platform() {
local this_platform="$(uname -s)"
case $this_platform in
Linux*) echo $LIN ;;
Darwin*) echo $MAC ;;
*)
echo "Error: Unsupported platform $this_platform" >&2
fail
;;
esac
}
# actually sets this platform
THIS_PLATFORM=$(get_this_platform)
# fetches latest release download link for the platform
function get_latest_warp_link() {
local this_platform=$1
local info
info=$(curl -fsSL https://api.github.com/repos/dgiagio/warp/releases)
if [[ $? != 0 ]]; then
echo "Error: Failed to get information about releases" >&2
fail
fi
echo "$info" \
| grep "browser_download_url" \
| grep "$this_platform-x64.warp-packer" \
| head -n 1 \
| awk '{print $2}' \
| sed -e 's/"//g'
}
# downloads and installs single binary
function install() {
local name=$1
local link=$2
local temp_location="/tmp/$name"
echo "Downloading $name..."
curl -fsSL -o "$temp_location" "$link"
if [[ $? != 0 ]]; then
echo "Error: Failed to download $name" >&2
fail
fi
echo "Creating $LOCATION/$name..."
sudo install -D \
--mode=755 \
--owner=root \
--group=root \
"$temp_location" "$LOCATION"
if [[ $? != 0 ]]; then
echo "Error: Failed to install $name" >&2
fail
fi
}
# returns missing dependencies
function get_missing_deps() {
local deps=(
"awk" \
"curl" \
"file" \
"grep" \
"sed" \
"sort" \
"tar" \
"unzip" \
"zip" \
)
for d in ${deps[@]}; do
if ! command -v $d &> /dev/null ; then
echo -n "$d "
fi
done
}
WARP4J_LINK="https://raw.githubusercontent.com/guziks/warp4j/stable/warp4j"
echo "Getting information about warp-packer releases..."
WARP_LINK=$(get_latest_warp_link $THIS_PLATFORM)
MISSING_DEPS=$(get_missing_deps)
install "warp-packer" "$WARP_LINK" && \
install "warp4j" "$WARP4J_LINK"
if [[ -z $MISSING_DEPS ]]; then
echo "Successfully installed"
else
echo "Main tools successfully installed"
echo "Please install following with your package manager:"
for d in ${MISSING_DEPS[@]}; do
echo -n "$d "
done
echo
exit 1
fi