#!/bin/bash NVM="$HOME/.nvm" NVM_VERSION="stable" DEV="$HOME/dev" LIVE="$HOME/live" STAGING="$HOME/staging" SWAP="/swapfile" PKG_MANAGER=$( command -v yum || command -v apt-get ) || echo "Neither yum nor apt-get found" PKG_DEVICE=$(basename $PKG_MANAGER) pidof systemd && SYSTEMDCALL=1 || SYSTEMDCALL=0 UPDATE=no DATABASE=no NGINX=no RED=`tput setaf 1` GREEN=`tput setaf 2` YELLOW=`tput setaf 3` PURPLE=`tput setaf 5` RESET=`tput sgr0` fancy_echo() { local fmt="$1"; shift # shellcheck disable=SC2059 printf "\n$fmt\n" "$@" } for i in "$@" do case $i in -u|--update) UPDATE=YES shift # past argument=value ;; -d|--database) DATABASE=YES shift # past argument=value ;; -n|--nginx) NGINX=YES shift # past argument=value ;; -i|--install) UPDATE=YES NGINX=YES DATABASE=YES shift # past argument=value ;; --default) DEFAULT=YES shift # past argument with no value ;; *) # unknown option ;; esac done fancy_echo "${YELLOW}Installing PI ...${RESET}" ## Update initial packages read -s -p "Enter Password for sudo: " sudoPW fancy_echo "${RED}Cleaning...${RESET}" if [ ! -d "$DEV" ]; then mkdir -p $DEV fi if [ ! -d "$LIVE" ]; then mkdir -p $LIVE fi if [ ! -d "$STAGING" ]; then rm -rf $STAGING mkdir -p $STAGING else mkdir -p $STAGING fi if [[ $UPDATE = "YES" ]]; then fancy_echo "${PURPLE}Updating system packages${RESET}" if [ $(basename $PKG_MANAGER) = "yum" ]; then echo $sudoPW | sudo -S yum --assumeyes upgrade echo $sudoPW | sudo -S yum --assumeyes install deltarpm psmisc echo $sudoPW | sudo -S yum --assumeyes install git make automake gcc gcc-c++ kernel-devel nginx htop screen wget curl pi-bluetooth else echo $sudoPW | sudo -S apt-get -y -q --force-yes update echo $sudoPW | sudo -S apt-get -y -q --force-yes upgrade echo $sudoPW | sudo -S apt-get --assume-yes install build-essential git nginx htop screen wget curl pi-bluetooth rpi-update echo $sudoPW | sudo -S apt-get -y -q --force-yes clean fi fi # set up and install swap file if [[ ! -f "$SWAP" ]]; then fancy_echo "${YELLOW}Setting up swapfile...${RESET}" echo $sudoPW | sudo -S fallocate -l 1G $SWAP echo $sudoPW | sudo -S chmod 600 $SWAP echo $sudoPW | sudo -S mkswap $SWAP echo $sudoPW | sudo -S swapon $SWAP fi # setup node and npm if [ ! -d "$NVM" ]; then fancy_echo "${YELLOW}Installing Node...${RESET}" # Will enter here if $DIRECTORY exists, even if it contains spaces curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash export NVM_DIR=$NVM [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm source $HOME/.bashrc source $NVM/nvm.sh nvm install $NVM_VERSION fi if [[ $UPDATE = "YES" ]]; then fancy_echo "${YELLOW}Installing Node Global Packages...${RESET}" npm install -g gulp bower pm2@latest npm-check npm-install-missing pm2 update fi