#!/bin/bash
set -o nounset
set -o errexit
set -o pipefail
#set -o xtrace

function trim() {
  local var=$*
  # remove leading whitespace characters
  var="${var#"${var%%[![:space:]]*}"}"
  # remove trailing whitespace characters
  var="${var%"${var##*[![:space:]]}"}"
  echo "$var"
}

function check_empty(){
  value=$1
  tips=$2
  if [[ "${value}" = "" ]]; then
    echo "$tips cloud not be empty"
    print_help
    exit 1
  fi
}

function check_arch() {
    rs=`arch`
    if [[ "$rs" = "x86_64" ]]; then
        echo "x86_64"
    elif [[ "$rs" = "arm64" ]]; then
        echo "arm64"
    elif [[ "$rs" = "aarch64" ]]; then
        echo "arm64"
    else
        echo ""
    fi
}

function get_ascend_device_version() {
    d_cmd=`npu-smi info -m | (grep -m 1 -i Ascend || true) | awk '{print $5}'`
    echo $d_cmd
}

function get_nvidia_device_version() {
    d_cmd=`nvidia-smi -L | (grep -m 1 GPU || true) | awk '{print $4}'`
    echo $d_cmd
}

function get_ascend_driver_version() {
    cmd_exist=`(which npu-smi || true)`
    if [[ "$cmd_exist" != "" ]]; then
        ver=`npu-smi -v | awk '{print $3}'`
	echo $ver
    fi
}

function get_nvidia_driver_version() {
    cmd_exist=`(which npu-smi || true)`
    if [[ "$cmd_exist" != "" ]]; then
        ver=`cat /proc/driver/nvidia/version | (grep -i NVIDIA || true) | awk '{print $8}'`
	echo $ver
    fi
}

function check_gpu() {
    rs=`cat /proc/devices | (grep davinci || true)`
    if [[ "$rs" != "" ]]; then
        echo "ascend"
    else
        rs=`cat /proc/devices | (grep nvidia || true)`
	if [[ "$rs" != "" ]]; then
            echo "nvidia"
	fi
    fi
}

function check_os() {
    if [[ -f /etc/os-release ]]; then
        os_name=`cat /etc/os-release | (grep "^ID=" || true) | awk -F '=' '{print $2}' | sed 's/"//g' | tr A-Z a-z`
	os_ver=`cat /etc/os-release | (grep "^VERSION_ID=" || true) | awk -F '=' '{print $2}' | sed 's/"//g'`
	echo "${os_name}-${os_ver}"
    else
        echo ""
    fi
}
