mirror of
https://github.com/turbot/steampipe.git
synced 2025-12-19 09:58:53 -05:00
114 lines
3.3 KiB
Bash
Executable File
114 lines
3.3 KiB
Bash
Executable File
#!/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 command -v steampipe >/dev/null; then
|
|
# steampipe already exists
|
|
status_out=$(steampipe service status --all | wc -l)
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: There was an issue fetching service status. Please re-run." 1>&2
|
|
exit 1
|
|
fi
|
|
if [ $status_out -gt 1 ]; then
|
|
echo "$(steampipe service status --all)"
|
|
echo "Error: The above service(s) are running. Please stop them before running installation." 1>&2
|
|
exit 1
|
|
fi
|
|
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") target="darwin_arm64.zip" ;;
|
|
"Linux x86_64") target="linux_amd64.tar.gz" ;;
|
|
"Linux aarch64") target="linux_arm64.tar.gz" ;;
|
|
*) echo "Error: '$(uname -sm)' is not supported yet." 1>&2;exit 1 ;;
|
|
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 -s) in
|
|
"Darwin") zip_location="$tmp_dir/steampipe.zip" ;;
|
|
"Linux") zip_location="$tmp_dir/steampipe.tar.gz" ;;
|
|
*) echo "Error: steampipe is not supported on '$(uname -s)' 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
|
|
|