#!/usr/bin/env bash
opal_install()
{
rvm_log "Running Opal prereqs checking script."
__rvm_which node > /dev/null &&
__rvm_which npm > /dev/null ||
{
result=$?
rvm_error "Prerequisite checks have failed - can not find 'node' and/or 'npm' commands.
Halting the installation."
return $result
}
__rvm_log_command "prepare_directories" \
"Preparing directories for opal" \
opal_install_prepare_directories
__rvm_cd "${rvm_ruby_home}"
system="${_system_type}"
arch="$(file "$( __rvm_which node)" )"
arch="$(echo "${arch##* }" )"
if
node_binary="$(
__rvm_which opal-node 2>/dev/null ||
npm explore opal -- which bin/opal-node 2>/dev/null
)"
then
rvm_log "Found opal-node at $node_binary"
else
__rvm_log_command "npm.install.opal" \
"Installing opal-node globally" \
npm install -g opal ||
return $result
node_binary="$(
npm explore opal -- which bin/opal-node 2>/dev/null
)"
fi
__rvm_log_command "install" \
"Installing opal to $rvm_ruby_home" \
opal_install_files
}
opal_install_prepare_directories()
{
__rvm_rm_rf "$rvm_ruby_home" &&
\command \mkdir -vp "${rvm_ruby_home}/bin/" &&
\command \mkdir -vp "$rvm_ruby_gem_home/bin" &&
\command \mkdir -vp "$rvm_ruby_global_gems_path/bin" ||
return $?
}
opal_install_files()
{
__rvm_cd "$rvm_ruby_home/bin/"
ln -fs "$node_binary" "ruby"
cat <<-FAKE_GEM > gem
#!/usr/bin/env bash
echo "OPAL FAKE GEM COMMAND: $@"
exit 127
FAKE_GEM
chmod +x ruby gem
cat <<-FAKE_CONFIG > "$rvm_ruby_home/config"
target_cpu=$arch
FAKE_CONFIG
}