balena-cli/scripts/install_unix.sh
2014-12-31 11:22:52 -04:00

125 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
NODE=node
RESIN=resin
NPM=npm
RESIN_PACKAGE=resin
function print() {
echo "---> $1"
}
function missingProgram() {
! hash $1 2>/dev/null
}
function hasProgram() {
hash $1 2>/dev/null
}
function missingNode() {
missingProgram $NODE || missingProgram $NPM
}
function isDarwin() {
[ "$(uname)" == "Darwin" ]
}
function isLinux() {
[ "$(expr substr $(uname -s) 1 5)" == "Linux" ]
}
function isFreeBSD() {
[ "$(uname)" == "FreeBSD" ]
}
echo "Installing resin.io command line utility"
echo ""
if hasProgram $RESIN; then
print "Resin is already installed in this system."
exit 0
fi
if isDarwin; then
print "Darwin system detected"
if missingNode && hasProgram brew; then
print "Trying to install node from brew"
brew install node
fi
if missingNode && hasProgram fink; then
print "Trying to install nodejs from fink"
fink install nodejs
fi
if missingNode && hasProgram port; then
print "Trying to install nodejs from MacPorts (requires admin privileges)"
port -v install nodejs
fi
elif isLinux; then
print "GNU/Linux system detected"
# Ubuntu 10.04, 12.04, 14.04.
# Debian Wheezy, Jessie, Sid.
# Linux Mint Maya, Qiana, Debian Edition.
# Elementary OS Luna, Freya.
if missingNode && hasProgram apt-get; then
print "Trying to install nodejs from apt-get (requires admin privileges)"
curl -sL https://deb.nodesource.com/setup | bash - && apt-get install -y nodejs
fi
# RHEL 5, 6, 7.
# CentOS 5, 6, 7.
# Fedora Heisenbug, Schrödinger's Cat.
# Oracle Linux.
# Amazon Linux.
if missingNode && hasProgram yum; then
print "Trying to install nodejs from yum (requires admin privileges)"
curl -sL https://deb.nodesource.com/setup | bash - && yum install -y nodejs
fi
# Arch Linux
if missingNode && hasProgram pacman; then
print "Trying to install nodejs from pacman (requires admin privileges)"
pacman -S nodejs
fi
# Gentoo
if missingNode && hasProgram emerge; then
print "Trying to install nodejs from emerge (requires admin privileges)"
emerge nodejs
fi
elif isFreeBSD; then
print "FreeBSD system detected"
if missingNode && hasProgram pkg_add; then
print "Trying to install node from pkg_add (requires admin privileges)"
pkg_add -r node
fi
if missingNode && hasProgram pkg; then
print "Trying to install node from pkg-ng (requires admin privileges)"
pkg install node
fi
else
print "Unsupported operating system"
fi
if missingNode; then
print "Unable to install node on this system."
print ""
print "Please go to http://nodejs.org/download/ and re-run this script once node has been installed."
exit 1
else
$NPM install -g $RESIN_PACKAGE
print "Installation completed."
fi