#!/bin/bash
set -e
readonly SYSTEM=$(uname -s)
EXTRA_STEPS=()
BASEDIR=$(dirname $0)
linux() {
[[ $SYSTEM == 'Linux' ]]
}
mac() {
[[ $SYSTEM == 'Darwin' ]]
}
installed() {
hash "$1" 2>/dev/null
}
nvm_installed() {
if [ -d '/usr/local/opt/nvm' ] || [ -d "$HOME/.nvm" ]; then
true
else
false
fi
}
nvm_available() {
type -t nvm > /dev/null
}
source_nvm() {
if ! nvm_available; then
[ -e "/usr/local/opt/nvm/nvm.sh" ] && source /usr/local/opt/nvm/nvm.sh
fi
if ! nvm_available; then
[ -e "$HOME/.nvm/nvm.sh" ] && source $HOME/.nvm/nvm.sh
fi
}
check_encryption() {
if linux; then
EXTRA_STEPS+=("Sorry, can't check if your hard disk is encrypted - please ensure that it is! (applies to both portable and Desktop machines)")
elif mac; then
if [[ "$(fdesetup status)" != "FileVault is On." ]]; then
EXTRA_STEPS+=("your hard disk is not encrypted! Encryption must be enabled on all guardian machines. Follow these instructions: https://support.apple.com/en-gb/HT204837")
fi
fi
}
create_aws_config() {
local path="$HOME/.aws"
local filename="config"
if [[ ! -f "$path/$filename" ]]; then
if [[ ! -d "$path" ]]; then
mkdir "$path"
fi
echo "[profile frontend]
region = eu-west-1" > "$path/$filename"
fi
}
install_homebrew() {
if mac && ! installed brew; then
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fi
}
install_jdk() {
if ! installed javac; then
if linux; then
sudo apt-get install -y openjdk-7-jdk
elif mac; then
EXTRA_STEPS+=("Download the JDK from http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html")
fi
fi
}
install_node() {
if ! nvm_installed; then
if linux; then
if ! installed curl; then
sudo apt-get install -y curl
fi
fi
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
nvm install
EXTRA_STEPS+=("Add https://git.io/vKTnK to your .bash_profile")
else
if ! nvm_available; then
source_nvm
fi
nvm install
fi
}
install_gcc() {
if ! installed g++; then
if linux; then
sudo apt-get install -y g++ make
elif mac; then
EXTRA_STEPS+=("Install Xcode from the App Store")
fi
fi
}
install_libpng() {
if ! installed libpng-config; then
if linux; then
sudo apt-get install -y libpng-dev
elif mac; then
brew install libpng
fi
fi
}
compile() {
make install compile
}
report() {
if [[ ${#EXTRA_STEPS[@]} -gt 0 ]]; then
node ./tools/messages.js install-steps
for i in "${!EXTRA_STEPS[@]}"; do
echo " $((i+1)). ${EXTRA_STEPS[$i]}"
done
fi
}
main() {
check_encryption
create_aws_config
install_homebrew
install_jdk
install_node
install_gcc
install_libpng
compile
report
}
main