2016-03-17 19:49:48 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2016-08-20 21:22:58 +02:00
|
|
|
# Let's quit on interrupt of subcommands
|
|
|
|
trap '
|
|
|
|
trap - INT # restore default INT handler
|
|
|
|
echo "Interrupted"
|
|
|
|
kill -s INT "$$"
|
|
|
|
' INT
|
|
|
|
|
2016-05-19 20:31:25 +02:00
|
|
|
# Retrieves asset ID and package name of asset ending in argument
|
|
|
|
# $info looks like: "id": 1698239, "name": "powershell_0.4.0-1_amd64.deb",
|
|
|
|
get_info() {
|
2016-08-18 09:05:08 +02:00
|
|
|
curl -s https://api.github.com/repos/PowerShell/PowerShell/releases/latest | grep -B 1 "name.*$1"
|
2016-05-19 20:31:25 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
# Get OS specific asset ID and package name
|
2016-04-14 00:03:41 +02:00
|
|
|
case "$OSTYPE" in
|
|
|
|
linux*)
|
2016-07-18 19:48:13 +02:00
|
|
|
source /etc/os-release
|
2016-04-14 00:36:15 +02:00
|
|
|
# Install curl and wget to download package
|
2016-07-18 19:48:13 +02:00
|
|
|
case "$ID" in
|
|
|
|
centos*)
|
2016-09-02 23:44:19 +02:00
|
|
|
if ! hash curl 2>/dev/null; then
|
2016-08-21 20:27:49 +02:00
|
|
|
echo "curl not found, installing..."
|
|
|
|
sudo yum install -y curl
|
|
|
|
fi
|
2016-09-02 23:44:19 +02:00
|
|
|
|
2016-08-16 03:35:40 +02:00
|
|
|
version=rpm
|
2016-07-18 19:48:13 +02:00
|
|
|
;;
|
|
|
|
ubuntu)
|
2016-09-02 23:44:19 +02:00
|
|
|
if ! hash curl 2>/dev/null; then
|
|
|
|
echo "curl not found, installing..."
|
|
|
|
sudo apt-get install -y curl
|
|
|
|
fi
|
|
|
|
|
2016-08-16 03:35:40 +02:00
|
|
|
case "$VERSION_ID" in
|
|
|
|
14.04)
|
2016-08-16 23:15:05 +02:00
|
|
|
version=ubuntu1.14.04.1_amd64.deb
|
2016-08-16 03:35:40 +02:00
|
|
|
;;
|
|
|
|
16.04)
|
2016-08-16 23:15:05 +02:00
|
|
|
version=ubuntu1.16.04.1_amd64.deb
|
2016-08-16 03:35:40 +02:00
|
|
|
;;
|
|
|
|
*)
|
2016-08-19 20:18:00 +02:00
|
|
|
echo "Ubuntu $VERSION_ID is not supported!" >&2
|
|
|
|
exit 2
|
2016-08-16 03:35:40 +02:00
|
|
|
esac
|
2016-07-18 19:48:13 +02:00
|
|
|
;;
|
|
|
|
*)
|
2016-08-19 20:18:00 +02:00
|
|
|
echo "$NAME is not supported!" >&2
|
|
|
|
exit 2
|
2016-07-18 19:48:13 +02:00
|
|
|
esac
|
2016-04-14 00:03:41 +02:00
|
|
|
;;
|
|
|
|
darwin*)
|
2016-09-02 23:44:19 +02:00
|
|
|
# We don't check for curl as macOS should have a system version
|
2016-08-16 03:35:40 +02:00
|
|
|
version=pkg
|
2016-04-14 00:03:41 +02:00
|
|
|
;;
|
|
|
|
*)
|
2016-08-19 20:18:00 +02:00
|
|
|
echo "$OSTYPE is not supported!" >&2
|
|
|
|
exit 2
|
2016-04-14 00:03:41 +02:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2016-08-16 03:35:40 +02:00
|
|
|
info=$(get_info $version)
|
|
|
|
|
2016-05-19 20:31:25 +02:00
|
|
|
# Parses $info for asset ID and package name
|
|
|
|
read asset package <<< $(echo $info | sed 's/[,"]//g' | awk '{ print $2; print $4 }')
|
|
|
|
|
|
|
|
# Downloads asset to file
|
2016-08-20 21:22:58 +02:00
|
|
|
packageuri=$(curl -s -i -H 'Accept: application/octet-stream' https://api.github.com/repos/PowerShell/PowerShell/releases/assets/$asset |
|
|
|
|
grep location | sed 's/location: //g')
|
|
|
|
curl -C - -s -o $package ${packageuri%$'\r'}
|
2016-04-14 00:03:41 +02:00
|
|
|
|
|
|
|
# Installs PowerShell package
|
|
|
|
case "$OSTYPE" in
|
|
|
|
linux*)
|
2016-07-18 19:48:13 +02:00
|
|
|
source /etc/os-release
|
2016-04-14 00:36:15 +02:00
|
|
|
# Install dependencies
|
2016-07-18 19:48:13 +02:00
|
|
|
case "$ID" in
|
|
|
|
centos)
|
2016-08-21 20:27:49 +02:00
|
|
|
echo "Installing libicu, libunwind, and $package with sudo ..."
|
2016-07-18 19:48:13 +02:00
|
|
|
sudo yum install -y libicu libunwind
|
|
|
|
sudo yum install "./$package"
|
|
|
|
;;
|
|
|
|
ubuntu)
|
2016-08-16 03:35:40 +02:00
|
|
|
case "$VERSION_ID" in
|
|
|
|
14.04)
|
2016-08-16 23:15:05 +02:00
|
|
|
icupackage=libicu52
|
2016-08-16 03:35:40 +02:00
|
|
|
;;
|
|
|
|
16.04)
|
2016-08-16 23:15:05 +02:00
|
|
|
icupackage=libicu55
|
2016-08-16 03:35:40 +02:00
|
|
|
;;
|
|
|
|
esac
|
2016-08-21 20:27:49 +02:00
|
|
|
echo "Installing $libicupackage, libunwind8, and $package with sudo ..."
|
2016-08-16 03:35:40 +02:00
|
|
|
sudo apt-get install -y libunwind8 $icupackage
|
2016-07-18 19:48:13 +02:00
|
|
|
sudo dpkg -i "./$package"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
esac
|
2016-04-14 00:03:41 +02:00
|
|
|
;;
|
|
|
|
darwin*)
|
2016-08-21 20:27:49 +02:00
|
|
|
echo "Installing $package with sudo ..."
|
2016-04-14 00:03:41 +02:00
|
|
|
sudo installer -pkg ./$package -target /
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2016-08-17 20:54:48 +02:00
|
|
|
powershell -noprofile -c '"Congratulations! PowerShell is installed at $PSHOME"'
|
2016-08-19 20:18:00 +02:00
|
|
|
success=$?
|
2016-08-17 20:54:48 +02:00
|
|
|
|
2016-08-19 20:18:00 +02:00
|
|
|
if [[ $success != 0 ]]; then
|
|
|
|
echo "ERROR! PowerShell didn't install. Check script output" >&2
|
|
|
|
exit $success
|
2016-08-17 20:54:48 +02:00
|
|
|
fi
|