#!/bin/bash

CMD_INSTALL=""
CMD_UPDATE=""
CMD_REMOVE=""
SOFTWARE_UPDATED=0

#########color code#############
RED="31m"      # Error message
GREEN="32m"    # Success message
YELLOW="33m"   # Warning message
BLUE="36m"     # Info message

###############color echo func#################
colorEcho(){
    echo -e "\033[${1}${@:2}\033[0m" 1>& 2
}

# 判断系统的包管理工具  apt, yum, or zypper
getPackageManageTool(){
    if [[ -n `command -v apt-get` ]];then
        CMD_INSTALL="apt-get -y -qq install"
        CMD_UPDATE="apt-get -qq update"
        CMD_REMOVE="apt-get -y remove"
    elif [[ -n `command -v yum` ]]; then
        CMD_INSTALL="yum -y -q install"
        CMD_UPDATE="yum -q makecache"
        CMD_REMOVE="yum -y remove"
    elif [[ -n `command -v zypper` ]]; then
        CMD_INSTALL="zypper -y install"
        CMD_UPDATE="zypper ref"
        CMD_REMOVE="zypper -y remove"
    else
        return 1
    fi
    return 0
}

##  安装所需要的程序，及依赖程序
installDemandSoftwares(){
    # 检查系统包管理方式，更新包
    getPackageManageTool
    if [[ $? -eq 1 ]]; then
        colorEcho ${RED} "系统的包管理不是 APT or YUM, 请手动安装所需要的软件."
        return 1
    fi

    ### 更新程序引索
    if [[ $SOFTWARE_UPDATED -eq 0 ]]; then
        colorEcho ${BLUE} "正在更新软件包管理..."
        $CMD_UPDATE
        SOFTWARE_UPDATED=1
    fi

    for software in $@
    do
        ## 安装该软件
        if [[ -n `command -v ${software}` ]]; then
            colorEcho ${GREEN} "${software}已经安装了...跳过..."
        else      
            colorEcho ${BLUE} "正在安装 ${software}.."
            $CMD_INSTALL ${software}

            ## 判断该软件是否安装成功
            if [[ $? -ne 0 ]]; then
                colorEcho ${RED} "安装 ${software} 失败. 请手动安装该程序."
                return 1
            else
                colorEcho ${GREEN} "已经成功安装 ${software}."
            fi
        fi
    done
    return 0
}

installDemandSoftwares iftop vim curl wget mtr