#!/bin/bash # Paths CURRENT_PATH="$(pwd)" APP_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && cd .. && pwd)" BIN_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && cd ../bin && pwd)" CONFIG_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && cd ../../config && pwd)" SCRIPT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/$(basename "${BASH_SOURCE[0]}")" SCRIPTS_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && cd ../scripts && pwd)" echo echo "These paths will be used during the installation process" echo " APP_PATH ${APP_PATH}" echo " BIN_PATH ${BIN_PATH}" echo " CONFIG_PATH ${CONFIG_PATH}" echo " SCRIPTS_PATH ${SCRIPTS_PATH}" echo " SCRIPT_PATH ${SCRIPT_PATH}" echo # Package manager detection files declare -A OS_PACKAGE_MANAGER_DETECT; OS_PACKAGE_MANAGER_DETECT[/etc/redhat-release]=yum OS_PACKAGE_MANAGER_DETECT[/etc/arch-release]=pacman OS_PACKAGE_MANAGER_DETECT[/etc/gentoo-release]=emerge OS_PACKAGE_MANAGER_DETECT[/etc/SuSE-release]=zypp OS_PACKAGE_MANAGER_DETECT[/etc/debian_version]=apt-get # Define package manager current installation state declare -A OS_RELEASE_DETECT; OS_RELEASE_DETECT[/etc/redhat-release]=untested OS_RELEASE_DETECT[/etc/arch-release]=untested OS_RELEASE_DETECT[/etc/gentoo-release]=untested OS_RELEASE_DETECT[/etc/SuSE-release]=untested OS_RELEASE_DETECT[/etc/debian_version]=stable # Detect package manager for f in ${!OS_PACKAGE_MANAGER_DETECT[@]} do if [[ -f $f ]];then OS_PACKAGE_MANAGER="${OS_PACKAGE_MANAGER_DETECT[$f]}" OS_RELEASE="${OS_RELEASE_DETECT[$f]}" fi done # Print detected package manager and state echo Package Installation Manager: ${OS_PACKAGE_MANAGER} echo Installation script state: ${OS_RELEASE} echo # Verify installation acceptance if [ -z "${FORCE}" ]; then while true; do read -p "Do you wish to continue with this installation? " yn case $yn in [Yy]* ) echo && break;; [Nn]* ) exit;; * ) echo "Please answer yes or no.";; esac done fi # Request sudo permissions echo "Requesting sudo permissions..." sudo echo -n "" # Install node dependencies echo "Installing node dependencies..." sudo $OS_PACKAGE_MANAGER update 2>&1 >/dev/null sudo $OS_PACKAGE_MANAGER install -f nodejs npm 2>&1 >/dev/null # Installing npm dependencies echo "Installing npm dependencies..." pushd $APP_PATH 2>&1 >/dev/null npm install 2>&1 >/dev/null popd 2>&1 >/dev/null # Create symlinks to 'dockr' and 'dr' echo "Creating symlinks..." sudo ln --symbolic --force ${BIN_PATH}/dockr.sh /usr/local/bin/dockr sudo ln --symbolic --force ${BIN_PATH}/dockr.sh /usr/local/bin/dr # Creating symlinks to 'dockr-cli' and 'dr-cli' (Experimental) sudo ln --symbolic --force ${BIN_PATH}/dockr-cli.sh /usr/local/bin/dockr-cli sudo ln --symbolic --force ${BIN_PATH}/dockr-cli.sh /usr/local/bin/dr-cli # Set owner and permissions sudo chown -R $(whoami):$(whoami) ${APP_PATH} 2>&1 >/dev/null sudo chmod +x ${BIN_PATH}/* 2>&1 >/dev/null sudo chmod +x ${SCRIPTS_PATH}/* 2>&1 >/dev/null # Finally, print the banner echo cat $APP_PATH/banner.txt echo " Happy sailin, captain!" echo echo "All done!" echo "Dockr has been installed. You can now run 'dockr', or the even shorter version 'dr'."