[030aeb]: / bin / setup

Download this file

147 lines (126 with data), 3.9 kB

#!/bin/bash

# Initialize DOSMA
#
# @usage (from terminal/command line):
# ./setup
#
# @initialization protocol:
#   1. Navigate to this folder in terminal/command line
#   2. Run "chmod +x setup" from command-line (Linux) or Terminal (MacOS)
#
# @author: Arjun Desai, Stanford University
#          (c) Stanford University, 2018

openURL() {
    if [[ "$OSTYPE" == "linux-gnu" ]]; then
            xdg-open $1
    elif [[ "$OSTYPE" == "darwin"* ]]; then
            # Mac OSX
            open $1
    else
        echo "Only Linux and MacOS are supported"
        exit 125
    fi
}

setBashFile() {
    if [[ "$OSTYPE" == "linux-gnu" ]]; then
            bash_file="$HOME/.bashrc"
    elif [[ "$OSTYPE" == "darwin"* ]]; then
            bash_file="$HOME/.bash_profile"
    else
        echo "Only Linux and MacOS are supported"
        exit 125
    fi
}

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
DOSMA_DIR="$( cd "$( dirname "${BIN_DIR}" )" >/dev/null 2>&1 && pwd )"

ANACONDA_KEYWORD="anaconda"
ANACONDA_DOWNLOAD_URL="https://www.anaconda.com/distribution/"
MINICONDA_KEYWORD="miniconda"

DOSMA_ENV_NAME="dosma_env"
ENV_FILE=$DOSMA_DIR/environment.yml

GOOGLE_FORM_URL="https://forms.gle/sprthTC2swyt8dDb6"

DOSMA_SETUP_PATTERN="dosma setup|export PATH.*dosma\/bin"

hasAnaconda=0
updateEnv=1
updatePath=1
setBashFile

while getopts ":h" opt; do
    case ${opt} in
        h )
            echo "DOSMA setup"
            echo "     Create Anaconda virtual environment and add dosma executable to PATH variable"
            echo "Usage:"
            echo "    -h                Display this help message"
            exit 0
            ;;
        \? )
            echo "Usage: cmd [-h] [-u] [-e]"
            exit 0
            ;;
    esac
done

# Check if conda exists
if echo $PATH | grep -q $ANACONDA_KEYWORD; then
    hasAnaconda=1
    echo "Conda found in path"
fi

if echo $PATH | grep -q $MINICONDA_KEYWORD
then
    hasAnaconda=1
    echo "Miniconda found in path"
fi

if [[ $hasAnaconda -eq 0 ]]; then
    echo "Anaconda/Miniconda not installed - install from $ANACONDA_DOWNLOAD_URL"
    openURL $ANACONDA_DOWNLOAD_URL
    exit 125
fi

# Check if OS is supported
if [[ "$OSTYPE" != "linux-gnu" && "$OSTYPE" != "darwin"* ]]; then
    echo "Only Linux and MacOS are supported"
    exit 125
fi

# Create Anaconda environment (dosma_env)
if [[ `conda env list | grep $DOSMA_ENV_NAME` ]]; then
    if [[ ${updateEnv} -eq 0 ]]; then
        echo "Environment 'dosma_env' found. Run 'conda activate dosma_env' to get started."
    else
        conda env remove -n $DOSMA_ENV_NAME
        conda env create -f $ENV_FILE
    fi
else
    conda env create -f $ENV_FILE
fi

# If DOSMA executable already exists as a shortcut and updating DOSMA, then remove the path lines
if [[ ! -z `cat ${bash_file} | egrep -i "${DOSMA_SETUP_PATTERN}"` && ${updatePath} -ne 0 ]]; then
    echo ""
    echo "Overwriting DOSMA executable path"
    echo ""

    cp $bash_file $bash_file"-dosma.bak"
    tempFile="$HOME/.bash_profile_temp"
    egrep -iv "${DOSMA_SETUP_PATTERN}" $bash_file >> $tempFile
    cp $tempFile $bash_file
fi

# Add dosma to path
if [[ -z `cat ${bash_file} | egrep -i "${DOSMA_SETUP_PATTERN}"` ]]; then
    cp $bash_file $bash_file"-dosma.bak"

    echo "Adding dosma to path - changes made in $bash_file"
    echo "" >> $bash_file
    echo "# Added by DOSMA setup" >> $bash_file
    echo 'export PATH='$BIN_DIR':$PATH' >> $bash_file
fi

echo ""
echo ""
echo "DOSMA Usage"
echo "------------"
echo "For command line help menu: 'dosma -h'"
echo "For GUI (user interface): 'dosma --app'"
echo ""
echo "For help with DOSMA, see documetation:"
echo "    https://ad12.github.io/DOSMA"
echo ""
echo "Please also complete the DOSMA questionnaire if not previously completed"
echo "    ${GOOGLE_FORM_URL}"
echo ""
echo ""
# Launch google form
openURL $GOOGLE_FORM_URL