#!/usr/bin/env bash
# Usage: pyenv version-file-write [-f|--force] <file> <version> [...]
#
#   -f/--force    Don't verify that the versions exist

set -euo pipefail
[ -n "${PYENV_DEBUG:-}" ] && set -x

FORCE=

while [[ $# -gt 0 ]]
do
    case "$1" in
        -f|--force)
            FORCE=1
            shift
            ;;
        *)
            break
            ;;
    esac
done


PYENV_VERSION_FILE="${1:-}"
shift || true
versions=("$@")

if [ ${#versions[@]} -eq 0 ] || [ -z "$PYENV_VERSION_FILE" ]; then
  pyenv-help --usage version-file-write >&2
  exit 1
fi

# Make sure the specified version is installed.
[[ -z "${FORCE:-}" ]] && pyenv-prefix "${versions[@]}" >/dev/null

payload=\
$(for version in "${versions[@]}"; do
  [[ -z $version ]] && { echo "pyenv: invalid empty version argument" >&2; exit 1; }
  echo "$version"
done)

# Write the version out to disk.
# (Over)write the file. Using "rm" might cause a permission error.
echo "$payload" > "$PYENV_VERSION_FILE"
