|
#!/bin/sh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
usage() { |
|
cat 1>&2 <<EOF |
|
Installs the AWS CLI v2 |
|
|
|
USAGE: |
|
install [FLAGS] [OPTIONS] |
|
|
|
FLAGS: |
|
-u, --update Updates the AWS CLI v2 if a different version |
|
is previously installed. By default, this script |
|
will not update the AWS CLI if a previous |
|
installation is detected. |
|
|
|
-h, --help Prints help information |
|
|
|
OPTIONS: |
|
-i, --install-dir <path> The directory to install the AWS CLI v2. By |
|
default, this directory is: /usr/local/aws-cli |
|
|
|
-b, --bin-dir <path> The directory to store symlinks to executables |
|
for the AWS CLI v2. By default, the directory |
|
used is: /usr/local/bin |
|
EOF |
|
} |
|
|
|
parse_commandline() { |
|
while test $# -gt 0 |
|
do |
|
key="$1" |
|
case "$key" in |
|
-i|--install-dir) |
|
PARSED_INSTALL_DIR="$2" |
|
shift |
|
;; |
|
-b|--bin-dir) |
|
PARSED_BIN_DIR="$2" |
|
shift |
|
;; |
|
-u|--update) |
|
PARSED_UPGRADE="yes" |
|
;; |
|
-h|--help) |
|
usage |
|
exit 0 |
|
;; |
|
*) |
|
die "Got an unexpected argument: $1" |
|
;; |
|
esac |
|
shift |
|
done |
|
} |
|
|
|
set_global_vars() { |
|
ROOT_INSTALL_DIR=${PARSED_INSTALL_DIR:-/usr/local/aws-cli} |
|
BIN_DIR=${PARSED_BIN_DIR:-/usr/local/bin} |
|
UPGRADE=${PARSED_UPGRADE:-no} |
|
|
|
EXE_NAME="aws" |
|
COMPLETER_EXE_NAME="aws_completer" |
|
INSTALLER_DIR="$( cd "$( dirname "$0" )" >/dev/null 2>&1 && pwd )" |
|
INSTALLER_DIST_DIR="$INSTALLER_DIR/dist" |
|
INSTALLER_EXE="$INSTALLER_DIST_DIR/$EXE_NAME" |
|
AWS_EXE_VERSION=$($INSTALLER_EXE --version | cut -d ' ' -f 1 | cut -d '/' -f 2) |
|
|
|
INSTALL_DIR="$ROOT_INSTALL_DIR/v2/$AWS_EXE_VERSION" |
|
INSTALL_DIR="$INSTALL_DIR" |
|
INSTALL_DIST_DIR="$INSTALL_DIR/dist" |
|
INSTALL_BIN_DIR="$INSTALL_DIR/bin" |
|
INSTALL_AWS_EXE="$INSTALL_BIN_DIR/$EXE_NAME" |
|
INSTALL_AWS_COMPLETER_EXE="$INSTALL_BIN_DIR/$COMPLETER_EXE_NAME" |
|
|
|
CURRENT_INSTALL_DIR="$ROOT_INSTALL_DIR/v2/current" |
|
CURRENT_AWS_EXE="$CURRENT_INSTALL_DIR/bin/$EXE_NAME" |
|
CURRENT_AWS_COMPLETER_EXE="$CURRENT_INSTALL_DIR/bin/$COMPLETER_EXE_NAME" |
|
|
|
BIN_AWS_EXE="$BIN_DIR/$EXE_NAME" |
|
BIN_AWS_COMPLETER_EXE="$BIN_DIR/$COMPLETER_EXE_NAME" |
|
} |
|
|
|
create_install_dir() { |
|
mkdir -p "$INSTALL_DIR" || exit 1 |
|
{ |
|
setup_install_dist && |
|
setup_install_bin && |
|
create_current_symlink |
|
} || { |
|
rm -rf "$INSTALL_DIR" |
|
exit 1 |
|
} |
|
} |
|
|
|
check_preexisting_install() { |
|
if [ -L "$CURRENT_INSTALL_DIR" ] && [ "$UPGRADE" = "no" ] |
|
then |
|
die "Found preexisting AWS CLI installation: $CURRENT_INSTALL_DIR. Please rerun install script with --update flag." |
|
fi |
|
if [ -d "$INSTALL_DIR" ] |
|
then |
|
echo "Found same AWS CLI version: $INSTALL_DIR. Skipping install." |
|
exit 0 |
|
fi |
|
} |
|
|
|
setup_install_dist() { |
|
cp -r "$INSTALLER_DIST_DIR" "$INSTALL_DIST_DIR" |
|
} |
|
|
|
setup_install_bin() { |
|
mkdir -p "$INSTALL_BIN_DIR" |
|
ln -s "../dist/$EXE_NAME" "$INSTALL_AWS_EXE" |
|
ln -s "../dist/$COMPLETER_EXE_NAME" "$INSTALL_AWS_COMPLETER_EXE" |
|
} |
|
|
|
create_current_symlink() { |
|
ln -snf "$INSTALL_DIR" "$CURRENT_INSTALL_DIR" |
|
} |
|
|
|
create_bin_symlinks() { |
|
mkdir -p "$BIN_DIR" |
|
ln -sf "$CURRENT_AWS_EXE" "$BIN_AWS_EXE" |
|
ln -sf "$CURRENT_AWS_COMPLETER_EXE" "$BIN_AWS_COMPLETER_EXE" |
|
} |
|
|
|
die() { |
|
err_msg="$1" |
|
echo "$err_msg" >&2 |
|
exit 1 |
|
} |
|
|
|
main() { |
|
parse_commandline "$@" |
|
set_global_vars |
|
check_preexisting_install |
|
create_install_dir |
|
create_bin_symlinks |
|
echo "You can now run: $BIN_AWS_EXE --version" |
|
exit 0 |
|
} |
|
|
|
main "$@" || exit 1 |
|
|