#!/bin/bash # Install Singularity Viewer. This script can install the viewer both # system-wide and for an individual user. VT102_STYLE_NORMAL='\E[0m' VT102_COLOR_RED='\E[31m' SCRIPTSRC=`readlink -f "$0" || echo "$0"` RUN_PATH=`dirname "${SCRIPTSRC}" || echo .` tarball_path=${RUN_PATH} function prompt() { local prompt=$1 local input echo -n "$prompt" while read input; do case $input in [Yy]* ) return 1 ;; [Nn]* ) return 0 ;; * ) echo "Please enter yes or no." echo -n "$prompt" esac done } function die() { warn $1 exit 1 } function warn() { echo -n -e $VT102_COLOR_RED echo $1 echo -n -e $VT102_STYLE_NORMAL } function homedir_install() { warn "You are not running as a privileged user, so you will only be able" warn "to install Singularity Viewer in your home directory. If you" warn "would like to install Singularity Viewer system-wide, please run" warn "this script as the root user, or with the 'sudo' command." echo prompt "Proceed with the installation? [Y/N]: " if [[ $? == 0 ]]; then exit 0 fi install_to_prefix "$HOME/.singularity-install" $HOME/.singularity-install/refresh_desktop_app_entry.sh } function root_install() { local default_prefix="/opt/singularity-install" echo -n "Enter the desired installation directory [${default_prefix}]: "; read if [[ "$REPLY" = "" ]] ; then local install_prefix=$default_prefix else local install_prefix=$REPLY fi install_to_prefix "$install_prefix" mkdir -p /usr/local/share/applications ${install_prefix}/refresh_desktop_app_entry.sh } function install_to_prefix() { test -e "$1" && backup_previous_installation "$1" mkdir -p "$1" || die "Failed to create installation directory!" echo " - Installing to $1" cp -a "${tarball_path}"/* "$1/" || die "Failed to complete the installation!" } function backup_previous_installation() { local backup_dir="$1".backup-$(date -I) echo " - Backing up previous installation to $backup_dir" mv "$1" "$backup_dir" || die "Failed to create backup of existing installation!" } if [ "$UID" == "0" ]; then root_install else homedir_install fi