forked from turbot/steampipe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.sh
executable file
·97 lines (78 loc) · 2.83 KB
/
install.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
#!/bin/sh
# TODO(everyone): Keep this script simple and easily auditable.
set -e
if ! command -v tar >/dev/null; then
echo "Error: 'tar' is required to install Steampipe." 1>&2
exit 1
fi
if ! command -v gzip >/dev/null; then
echo "Error: 'gzip' is required to install Steampipe." 1>&2
exit 1
fi
if ! command -v install >/dev/null; then
echo "Error: 'install' is required to install Steampipe." 1>&2
exit 1
fi
if [ "$OS" = "Windows_NT" ]; then
echo "Error: Windows is not supported yet." 1>&2
exit 1
else
case $(uname -sm) in
"Darwin x86_64") target="darwin_amd64.zip" ;;
"Darwin arm64") echo "Error: ARM is not supported yet." 1>&2;exit 1 ;;
*) target="linux_amd64.tar.gz" ;;
esac
fi
if [ $# -eq 0 ]; then
steampipe_uri="https://github.com/turbot/steampipe/releases/latest/download/steampipe_${target}"
else
steampipe_uri="https://github.com/turbot/steampipe/releases/download/${1}/steampipe_${target}"
fi
bin_dir="/usr/local/bin"
exe="$bin_dir/steampipe"
test -z "$tmp_dir" && tmp_dir="$(mktemp -d)"
mkdir -p "${tmp_dir}"
tmp_dir="${tmp_dir%/}"
echo "Created temporary directory at $tmp_dir. Changing to $tmp_dir"
cd "$tmp_dir"
# set a trap for a clean exit - even in failures
trap 'rm -rf $tmp_dir' EXIT
case $(uname -sm) in
"Darwin x86_64") zip_location="$tmp_dir/steampipe.zip" ;;
"Linux x86_64") zip_location="$tmp_dir/steampipe.tar.gz" ;;
*) echo "Error: steampipe is not supported on '$(uname -sm)' yet." 1>&2;exit 1 ;;
esac
echo "Downloading from $steampipe_uri"
if command -v wget >/dev/null; then
# because --show-progress was introduced in 1.16.
wget --help | grep -q '\--showprogress' && _FORCE_PROGRESS_BAR="--no-verbose --show-progress" || _FORCE_PROGRESS_BAR=""
# prefer an IPv4 connection, since github.com does not handle IPv6 connections properly.
# Refer: https://github.com/turbot/steampipe/issues/861
if ! wget --prefer-family=IPv4 --progress=bar:force:noscroll $_FORCE_PROGRESS_BAR -O "$zip_location" "$steampipe_uri"; then
echo "Could not find version $1"
exit 1
fi
elif command -v curl >/dev/null; then
# curl uses HappyEyeball for connections, therefore, no preference is required
if ! curl --fail --location --progress-bar --output "$zip_location" "$steampipe_uri"; then
echo "Could not find version $1"
exit 1
fi
else
echo "Unable to find wget or curl. Cannot download."
exit 1
fi
echo "Deflating downloaded archive"
tar -xf "$zip_location" -C "$tmp_dir"
echo "Installing"
install -d "$bin_dir"
install "$tmp_dir/steampipe" "$bin_dir"
echo "Applying necessary permissions"
chmod +x $exe
echo "Removing downloaded archive"
rm "$zip_location"
echo "Steampipe was installed successfully to $exe"
if ! command -v $bin_dir/steampipe >/dev/null; then
echo "Steampipe was installed, but could not be executed. Are you sure '$bin_dir/steampipe' has the necessary permissions?"
exit 1
fi