Last active
September 15, 2021 09:53
-
-
Save vladholubiev/961e8b1d279267d5870195134239aa98 to your computer and use it in GitHub Desktop.
Copy of script behind slss.io/install, but without logic for China region. This helps to avoid timeouts in CI environment, when originals script tries to install from China mirror by mistake.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# | |
# Download and install standalone binary. | |
# The binary version can be specified by setting a VERSION variable. | |
# e.g. VERSION=2.21.1 bash install.sh | |
# If VERSION is unspecified it will download the latest version. | |
set -e | |
reset="\033[0m" | |
red="\033[31m" | |
green="\033[32m" | |
yellow="\033[33m" | |
cyan="\033[36m" | |
white="\033[37m" | |
printf "\n$yellow Installing Serverless!$reset\n\n" | |
PLATFORM="linux" | |
ARCH='x64' | |
if [[ -z "${VERSION}" ]] | |
then | |
# Get latest tag | |
TAG=`curl -L --silent https://api.github.com/repos/serverless/serverless/releases/latest 2>&1 | grep 'tag_name' | grep -oE "v[0-9]+\.[0-9]+\.[0-9]+"` | |
VERSION=${TAG:1} | |
else | |
TAG=v$VERSION | |
fi | |
BINARY_URL=https://github.com/serverless/serverless/releases/download/$TAG/serverless-$PLATFORM-$ARCH | |
# Download binary | |
BINARIES_DIR_PATH=$HOME/.serverless/bin | |
BINARY_PATH=$BINARIES_DIR_PATH/serverless | |
mkdir -p $BINARIES_DIR_PATH | |
printf "$yellow Downloading binary for version $VERSION...$reset\n" | |
version_error_msg (){ | |
echo "Could not download binary. Is the version correct?" | |
} | |
trap version_error_msg ERR | |
curl --fail -L -o $BINARY_PATH.tmp $BINARY_URL | |
trap - ERR | |
mv $BINARY_PATH.tmp $BINARY_PATH | |
chmod +x $BINARY_PATH | |
# Ensure aliases | |
ln -sf serverless $BINARIES_DIR_PATH/sls | |
# Add to $PATH | |
SOURCE_STR="# Added by serverless binary installer\nexport PATH=\"\$HOME/.serverless/bin:\$PATH\"\n" | |
add_to_path () { | |
command printf "\n$SOURCE_STR" >> "$1" | |
printf "\n$yellow Added the following to $1:\n\n$SOURCE_STR$reset" | |
} | |
SHELLTYPE="$(basename "/$SHELL")" | |
if [[ $SHELLTYPE = "fish" ]]; then | |
command fish -c 'set -U fish_user_paths $fish_user_paths ~/.serverless/bin' | |
printf "\n$yellow Added ~/.serverless/bin to fish_user_paths universal variable$reset." | |
elif [[ $SHELLTYPE = "zsh" ]]; then | |
SHELL_CONFIG=$HOME/.zshrc | |
if [ ! -r $SHELL_CONFIG ] || (! `grep -q '.serverless/bin' $SHELL_CONFIG`); then | |
add_to_path $SHELL_CONFIG | |
fi | |
else | |
SHELL_CONFIG=$HOME/.bashrc | |
if [ ! -r $SHELL_CONFIG ] || (! `grep -q '.serverless/bin' $SHELL_CONFIG`); then | |
add_to_path $SHELL_CONFIG | |
fi | |
SHELL_CONFIG=$HOME/.bash_profile | |
if [[ -r $SHELL_CONFIG ]]; then | |
if [[ ! $(grep -q '.serverless/bin' $SHELL_CONFIG) ]]; then | |
add_to_path $SHELL_CONFIG | |
fi | |
else | |
SHELL_CONFIG=$HOME/.bash_login | |
if [[ -r $SHELL_CONFIG ]]; then | |
if [[ ! $(grep -q '.serverless/bin' $SHELL_CONFIG) ]]; then | |
add_to_path $SHELL_CONFIG | |
fi | |
else | |
SHELL_CONFIG=$HOME/.profile | |
if [ ! -r $SHELL_CONFIG ] || (! `grep -q '.serverless/bin' $SHELL_CONFIG`); then | |
add_to_path $SHELL_CONFIG | |
fi | |
fi | |
fi | |
fi | |
$HOME/.serverless/bin/serverless binary-postinstall |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment