#!/bin/bash

set -e

PIPENV_PYTHON="3"

source /etc/os-release
if [[ $ID = "amzn" ]] && [[ $VERSION = "2" ]]; then
    echo "Amazon Linux 2 is no longer supported; see README.md for supported operating systems/environments."
    exit 1
elif [[ $ID = "amzn" ]] && [[ $VERSION = "2023" ]]; then
    dnf install -y \
        python3.11 \
        python3.11-pip \
        python3.11-devel
    echo "Installing pipenv..."
    pip3.11 install pipenv
    PIPENV_PYTHON="3.11"
else
    # FIXME: Currently assumes Debian-based
    apt-get update && \
    apt-get install -y \
            python3-dev \
            python3-pip \
            pipenv
fi
export PATH=/usr/local/bin:$PATH
export PIP_DEFAULT_TIMEOUT=60

echo "Installing ansible and dependencies..."
PIPENV_NOSPIN=1 PIPENV_HIDE_EMOJIS=1 pipenv --python $PIPENV_PYTHON sync 2>&1 | iconv -c -f utf-8 -t ascii

if [[ $1 == "--dev" ]]; then
    pipenv sync --dev
fi

echo "Installing collections from galaxy..."
galaxy_retry_count=0
until [[ $galaxy_retry_count -gt 2 ]]; do
  pipenv run ansible-galaxy collection install --upgrade --verbose --requirements-file requirements.yml && break
  galaxy_retry_count=$((galaxy_retry_count + 1))
done
