benvial/gyptis

View on GitHub
docs/install/get.gyptis

Summary

Maintainability
Test Coverage
#!/usr/bin/env bash
#
# This script downloads and installs the gyptis script providing
# simplified use of Gyptis Docker images.

# https://stackoverflow.com/questions/3466166/how-to-check-if-running-in-cygwin-mac-or-linux
if [ "$(uname)" == "Darwin" ]; then
    # Mac OS X with Docker installed using docker-machine.
    OS="Darwin"
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
    # If we are running locally on Linux.
    OS="Linux"
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then
    # The Docker environment installed by Docker Toolbox is MinGW based.
    # Docker does not run on 32-bit environments.
    # Don't know if we want to support MSYS or Cygwin as well.
    OS="Windows"
else
    echo -e "${RED}Error${NORMAL}: We do not currently support your operating system $(uname)."
    echo -e "Contact ${BLUE}fenics-support@googlegroups.com${NORMAL} for assistance."
fi

# Config
URLBASE="https://gyptis.gitlab.io"

TMPDEST="/tmp/gyptis"
# On MINGW64_NT /usr/local/bin does not exist and we cannot even create it!
# However, $HOME/bin seems to work and be in the PATH by default on systems
# that I have checked.  On Linux the vast majority of distributions now have
# ~/.local/bin in the PATH by default.
if [ "$OS" == "Linux" ]; then
    DEST_DIR="$HOME/.local/bin"
elif [ "$OS" == "Windows" ]; then
    DEST_DIR="$HOME/bin"
elif [ "$OS" == "Darwin" ]; then
    DEST_DIR="/usr/local/bin"
fi

DEST="${DEST_DIR}/gyptis"

# Setup
RED="\033[1;31m"
BLUE="\033[1;34m"
GREEN="\033[1;32m"
NORMAL="\033[0m"


quickstart ()
{
    echo "To get started, run the command"
    echo ""
    echo -e "  ${BLUE}gyptis run${NORMAL}"
    echo ""
    echo -e "For more information, see ${BLUE}gyptis help${NORMAL}."
}

# Check if we have Docker
TMP=$(docker -v)
if [ ! $? -eq 0 ]; then
    echo ""
    OS=$(uname)
    if [ "$OS"="Linux" ]; then
        echo -e "It appears that ${RED}Docker is not installed${NORMAL} on your system."
        echo ""
        echo "Follow these instructions to install Docker, then come back and try again:"
        echo ""
        echo "  https://docs.docker.com/linux/step_one/"
        echo ""
    else
        echo -e "It appears that ${RED}Docker is not installed${NORMAL} on your system."
        echo ""
        echo -e "Or you forgot to run this script in the ${GREEN}Docker Quickstart Terminal${NORMAL}."
        echo "Follow these instructions to install Docker, then come back and try again:"
        echo ""
        echo "  https://www.docker.com/products/docker-toolbox"
        echo ""
    fi
    exit 1
fi

# Download script
rm -f $TMPDEST
curl -s $URLBASE/gyptis.install > $TMPDEST

# Check if user is in sudoers
SUDO=""
if [[ "$OS" == "Darwin" && ! -w "$DEST_DIR" ]]; then
    echo -e "On macOS we need your sudo password to install a script into $DEST".
    sudo -k
    sudo -v
    SUDO="sudo"
    if [ ! $? -eq 0 ]; then
        echo ""
        echo -e "It appears that you are ${RED}not allowed to run sudo${NORMAL} on your system."
        echo -e "You therefore need to manually copy the ${GREEN}gyptis${NORMAL} script to a"
        echo -e "location of your choice and update your ${BLUE}PATH${NORMAL} environment variable"
        echo -e "accordingly. The script is currently located at ${BLUE}${TMPDEST}${NORMAL}."
        echo -e "When you have done this, follow the instructions below to get started."
        echo ""
        quickstart
        exit
    fi
fi

# Copy the script to PATH
$SUDO mkdir -p $DEST_DIR
$SUDO cp $TMPDEST $DEST
$SUDO chmod a+rx $DEST
echo -e "Successfully installed the ${GREEN}gyptis${NORMAL} script in ${DEST}."
echo ""
quickstart