#!/usr/bin/env bash
# Check which php versions are installed with brew, and create aliases for each installation.
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.

set -euo pipefail

# Set verbosity with VERBOSE=1 x-load-configs
VERBOSE="${VERBOSE:=0}"

[ "$VERBOSE" = "2" ] && {
  set -x
}

! x-have brew && {
  exit 0
}

# Get installed php versions from brew and setup aliases
php_versions=()
while IFS="" read -r line; do php_versions+=("$line"); done < <(bkt -- brew list | grep '^php')

php_error_reporting='-d error_reporting=22527'

for version in "${php_versions[@]}"; do
  [ "$VERBOSE" = "1" ] && echo "Setting aliases for $version"
  # drop the dot from version (8.0 -> 80)
  php_abbr="${version//\./}"
  # replace "php@" with "p" so "php@80" becomes "p80"
  php_alias="${php_abbr//php@/p}"

  # Fetch the exec path once
  php_exec="$HOMEBREW_PREFIX/opt/$version/bin/php"

  [ -f "$php_exec" ] && {
    [ "$VERBOSE" = "1" ] && echo "-> php_exec $php_exec"

    # Raw PHP without error_reporting flag.
    # shellcheck disable=SC2139
    alias "${php_alias}"r="$php_exec"
    # PHP with error_reporting flag.
    # shellcheck disable=SC2139,SC2140
    alias "$php_alias"="$php_exec $php_error_reporting"
    # Local PHP Server.
    # shellcheck disable=SC2139,SC2140
    alias "${php_alias}s"="$php_exec -S localhost:9000"
    # Use composer with specific PHP and error_reporting flag on.
    # shellcheck disable=SC2139,SC2140
    alias "${php_alias}c"="$php_exec $php_error_reporting $(which composer)"
  }
done
