#!/bin/bash

function unsupported_platform() {
  echo "Your platform (`uname -a`) is not supported." && exit 1
}

# Detect CPU arch.
ARCHITECTURE=`uname -m`
case "$ARCHITECTURE" in
  i?86)   ARCHITECTURE="x86" ;;
  x86_64) ARCHITECTURE="x64" ;;
esac

# Detect current OS, see http://stackoverflow.com/q/3466166/682252.

# Darwin
if [ "`uname`" == "Darwin" ]; then
  NODE_BIN="node-darwin-$ARCHITECTURE"

# Linux
elif [ "`expr substr $(uname -s) 1 5`" == "Linux" ]; then
	NODE_BIN="node-linux-$ARCHITECTURE"

# Win32
elif [ "`expr substr $(uname -s) 1 10`" == "MINGW32_NT" ]; then
	NODE_BIN="node-win32-$ARCHITECTURE.exe"

# SunOS
elif [ "`uname`" == "SunOS" ]; then
	NODE_BIN="node-sunos-$ARCHITECTURE"

else
	unsupported_platform
fi

BIN_RESIN=$0

while [ -L "$BIN_RESIN" ]; do
  BIN_RESIN=`readlink "$BIN_RESIN"`
done

BIN_DIRECTORY=`dirname $BIN_RESIN`

NODE_PATH=$BIN_DIRECTORY/node/$NODE_BIN

if [ ! -x $NODE_PATH  ]; then

	echo "$NODE_PATH does not exist"

	# As a last resource, try to use an already available node
	if command -v node >/dev/null 2>&1; then
		NODE_PATH="node"
	else
		unsupported_platform
	fi
fi

$NODE_PATH "$BIN_DIRECTORY/../build/app.js" "$@"