#!/usr/bin/env bash

requirements_openbsd_lib_installed()
{
  pkg_info | __rvm_grep "^$1" >/dev/null 2>&1 || return $?
}

requirements_openbsd_lib_available()
{
  pkg_info -Q "${1%%-[[:digit:]]}" | __rvm_grep "^$1" >/dev/null 2>&1 || return $?
}

requirements_openbsd_libs_install()
{
  __rvm_try_sudo pkg_add -z "$@" || return $?
}

requirements_openbsd_install_node()
{
  # plain make is required for sudo
  __rvm_try_sudo make -C /usr/ports/www/node install clean || return $?
}

requirements_openbsd_update_system()
{
  [[ -d /usr/ports ]] ||
  {
    typeset __url __target __result=0
    __url="ftp://ftp.openbsd.org/pub/OpenBSD/${_system_version}/ports.tar.gz"
    __target="$( TMPDIR="${rvm_tmp_path}" mktemp ${TMPDIR:-/tmp}/tmp.XXXXXXXXXXXXXXXXXX )"
    __rvm_curl "${__url}" -o "${__target}"        &&
    __rvm_try_sudo tar -C /usr -zxf "${__target}" ||
    __result=$?
    rm -f "${__target}"
    return ${__result}
  }
  true
}

requirements_openbsd_define()
{
  case "$1" in
    (rvm)
      requirements_check bash curl
      ;;
    (jruby*)
      if
        is_head_or_disable_binary "$1"
      then
        requirements_check jdk git
        if is_jruby_post17 "$1"
        then __rvm_which mvn >/dev/null || requirements_check maven
        else __rvm_which ant >/dev/null || requirements_check apache-ant
        fi
      else
        requirements_check jdk
      fi
      ;;
    (ir*)
      requirements_check mono
      ;;
    (opal)
      requirements_check_custom node
      ;;
    (*-head)
      # OpenSSL is installed by default http://www.openbsd.org/crypto.html
      requirements_check gcc-4 automake-1 libtool bison readline-6 libyaml-0 git
      requirements_check_fallback autoconf-2.69p0 autoconf-2.68 autoconf-2.67
      __rvm_update_configure_opt_dir "$1" "/usr/local"
      ;;
    (*)
      # OpenSSL is installed by default http://www.openbsd.org/crypto.html
      requirements_check gcc-4 autoconf-2 automake-1 libtool bison readline-6 libyaml-0
      __rvm_update_configure_opt_dir "$1" "/usr/local"
      ;;
  esac
}

requirements_openbsd_before()
{
  [[ -n "${PKG_PATH:-}" ]] ||
  {
    export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/${_system_version}/packages/$(arch -s)/
    rvm_warn "WARNING: \$PKG_PATH was not set, using fallback '$PKG_PATH',
see http://www.openbsd.org/ftp.html for list of available mirrors."
  }
}
