#!/usr/bin/env bash

opal_install()
{
  rvm_log "Running Opal prereqs checking script."

  type node > /dev/null && type npm > /dev/null
  result=$?

  if (( result > 0 ))
  then
    rvm_error "Prerequisite checks have failed. \nHalting the installation."
    exit $result
  fi

  __rvm_cd "${rvm_src_path}"

  system="${_system_type}"
  arch="$(file "$( __rvm_which node)" )"
  arch="$(echo "${arch##* }" )"

  { type opal-node > /dev/null 2> /dev/null && rvm_log "Found opal-node at $(__rvm_which opal-node)..."; } ||
    { rvm_log "Installing opal-node..." && npm install opal --global > /dev/null 2> /dev/null; }
  result=$?

  if (( result > 0 ))
  then
    rvm_error "There has been an error while trying to install opal-node from npm registry."
    exit $result
  fi

  __rvm_rm_rf $rvm_ruby_home

  __rvm_run "install" \
    "mkdir -p ${rvm_ruby_home}/bin/" \
    "Installing opal to $rvm_ruby_home"

  opal_config="target_cpu=$arch"
  opal_node_path="$(__rvm_which opal-node)"

  opal_fake_gem_command='#!/usr/bin/env bash
echo "OPAL FAKE GEM COMMAND: $@"
  '

  __rvm_cd "$rvm_ruby_home/bin/"
  ln -fs "$opal_node_path" "ruby"
  echo "$opal_fake_gem_command" > "gem"
  echo "$opal_config" > "../config"
  chmod +x ruby gem ../config

  __rvm_generate_wrappers

  rvm_create_flag=1 __rvm_use
}
