#!/bin/bash

PROGNAME="${BASH_SOURCE[0]}"
HERE="$(cd "$(dirname "$PROGNAME")" &>/dev/null && pwd)"
READIES=$(cd $HERE/.. && pwd)
. $READIES/shibumi/defs

$HERE/getget
tempd=$(mktemp -d /tmp/awscli.XXXXXX)
cd $tempd

install_awscli_linux() {
	runn wget -O awscliv2.zip https://awscli.amazonaws.com/awscli-exe-linux-${ARCH}.zip
	runn unzip -q awscliv2.zip
	runn $SUDO ./aws/install --update
}

install_awscli_macos() {
	if [[ -d $HOME/.local/opt/aws-cli ]]; then
		if [[ $FORCE == 1 ]]; then
			rm -rf $HOME/.local/opt/aws-cli
		else
			echo "awscli: already installed"
			return 0
		fi
	fi
	runn wget -O AWSCLIV2.pkg https://awscli.amazonaws.com/AWSCLIV2.pkg
	cat <<-END > choices.xml
			<?xml version="1.0" encoding="UTF-8"?>
			<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
			<plist version="1.0">
			  <array>
				<dict>
				  <key>choiceAttribute</key>
				  <string>customLocation</string>
				  <key>attributeSetting</key>
				  <string>$HOME/.local/opt</string>
				  <key>choiceIdentifier</key>
				  <string>default</string>
				</dict>
			  </array>
			</plist>
			END
	mkdir -p $HOME/.local/opt $HOME/.local/bin
	runn installer -pkg AWSCLIV2.pkg -target CurrentUserHomeDirectory -applyChoiceChangesXML choices.xml
	runn ln -sf $HOME/.local/opt/aws-cli/aws $HOME/.local/bin/aws
	runn ln -sf $HOME/.local/opt/aws-cli/aws_completer  $HOME/.local/bin/aws_completer 
}

install_s3cmd() {
	PIP_USER=
	if [[ -z $VIRTUAL_ENV ]]; then
		PIP_USER="--user"
	fi
	runn python3 -m pip install $PIP_USER s3cmd
	if [[ $OS == Darwin ]]; then
		SITE=`python3 -m site --user-base`
		runn ln -sf $SITE/bin/s3cmd $HOME/.local/bin/s3cmd
	else
		runn $SUDO ln -sf $HOME/.local/bin/s3cmd /usr/local/bin/s3cmd
	fi
}

NO_AWSCLI=
ARCH=`uname -m`
if [[ $ARCH == x86_64 || $ARCH == aarch64 || $ARCH == arm64 ]]; then
	:
else
	echo "$ARCH: unsupported"
	NO_AWSCLI=1
fi

OS=`uname -s`
if [[ $NO_AWSCLI != 1 ]]; then
	if [[ $OS == Linux ]]; then
		install_awscli_linux
	elif [[ $OS == Darwin ]]; then
		install_awscli_macos
	else
		echo "$OS: unsupported"
	fi
fi

if [[ $OS == Darwin ]]; then
	runn "brew install s3cmd || true"
	if ! s3cmd --version >/dev/null 2>&1; then
		install_s3cmd
	fi
else
	install_s3cmd
fi

cd $HERE
rm -rf $tempd
