Crystalnix/termius-cli

View on GitHub
bootstrap.sh

Summary

Maintainability
Test Coverage
#!/bin/sh
tar_url='https://github.com/termius/termius-cli/archive/master.zip'

command_exists() {
    command -v "$@" > /dev/null 2>&1
}

eval_sh_c() {
    user="$(id -un 2>/dev/null || true)"

    _sh_c='sh -c'
    if [ "$user" != 'root' ]; then
    if command_exists sudo; then
        _sh_c='sudo -E sh -c'
    elif command_exists su; then
        _sh_c='su -c'
    else
        cat >&2 <<-'EOF'
            Error: this installer needs the ability to run commands as root.
            We are unable to find either "sudo" or "su" available to make this happen.
            EOF
        exit 1
    fi
    fi
    echo $_sh_c
}

do_install() {
    sh_c=$(eval_sh_c)
    curl=''
    if command_exists curl; then
    curl='curl -sSL'
    elif command_exists wget; then
    curl='wget -qO-'
    elif command_exists busybox && busybox --list-modules | grep -q wget; then
    curl='busybox wget -qO-'
    fi

    apt_requirements='python gcc python-dev libffi-dev libssl-dev'
    yum_requirements='python gcc python-devel libffi-devel openssl-devel'
    zypper_requirements='python gcc python-devel libffi-devel openssl-devel'

    lsb_dist=''
    if command_exists lsb_release; then
        lsb_dist="$(lsb_release -si)"
    fi
    if [ -z "$lsb_dist" ] && [ -r /etc/lsb-release ]; then
        lsb_dist="$(. /etc/lsb-release && echo "$DISTRIB_ID")"
    fi
    if [ -z "$lsb_dist" ] && [ -r /etc/debian_version ]; then
        lsb_dist='debian'
    fi
    if [ -z "$lsb_dist" ] && [ -r /etc/fedora-release ]; then
        lsb_dist='fedora'
    fi
    if [ -z "$lsb_dist" ] && [ -r /etc/os-release ]; then
        lsb_dist="$(. /etc/os-release && echo "$ID")"
    fi

    lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')"

    case "$lsb_dist" in
        amzn|fedora|centos)
        (
            set -x
            $sh_c "sleep 3; yum -y -q install $yum_requirements"
        )
        ;;

        'opensuse project'|opensuse|'suse linux'|sled)
        (
            set -x
            $sh_c "sleep 3; zypper -n install $zypper_requirements"
        )
        ;;

        ubuntu|debian|linuxmint|'elementary os'|kali)
        export DEBIAN_FRONTEND=noninteractive

        if [ -z "$curl" ]; then
        apt_get_update
        ( set -x; $sh_c 'sleep 3; apt-get install -y -q curl ca-certificates' )
        curl='curl -sSL'
        fi

        did_apt_get_update=
        apt_get_update() {
            if [ -z "$did_apt_get_update" ]; then
            ( set -x; $sh_c 'sleep 3; apt-get update' )
            did_apt_get_update=1
            fi
        }


        apt_get_update
            (
            set -x
            $sh_c "sleep 3; apt-get install -y -q $apt_requirements"
        )
        ;;
    esac

    if ! (command_exists easy_install); then
        $sh_c "$curl https://bootstrap.pypa.io/ez_setup.py |  python"
    fi
    easy_install -U $tar_url

    if command_exists termius; then
    (
        set -x
    ) || true
    fi
    exit 0
}

do_install