#!/usr/bin/env bash

# 参数:
python_version="3.6.5";
system_version="centos";


# parse options
while true; do
  [ -z "${1:-}" ] && break;  # break if there are no arguments
  case "$1" in
    --*) name=$(echo "$1" | sed s/^--// | sed s/-/_/g);
      eval '[ -z "${'"$name"'+xxx}" ]' && echo "$0: invalid option $1" 1>&2 && exit 1;
      old_value="(eval echo \\$$name)";
      if [ "${old_value}" == "true" ] || [ "${old_value}" == "false" ]; then
        was_bool=true;
      else
        was_bool=false;
      fi

      # Set the variable to the right value-- the escaped quotes make it work if
      # the option had spaces, like --cmd "queue.pl -sync y"
      eval "${name}=\"$2\"";

      # Check that Boolean-valued arguments are really Boolean.
      if $was_bool && [[ "$2" != "true" && "$2" != "false" ]]; then
        echo "$0: expected \"true\" or \"false\": $1 $2" 1>&2
        exit 1;
      fi
      shift 2;
      ;;

    *) break;
  esac
done

echo "python_version: ${python_version}";
echo "system_version: ${system_version}";


if [ ${system_version} = "centos" ]; then
  # 安装 python 开发编译环境
  yum -y groupinstall "Development tools"
  yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
  yum install libffi-devel -y
  yum install -y wget
  yum install -y make

  mkdir -p /data/dep
  cd /data/dep || exit 1;
  if [ ! -e Python-${python_version}.tgz ]; then
    wget -P /data/dep https://www.python.org/ftp/python/${python_version}/Python-${python_version}.tgz
  fi

  cd /data/dep || exit 1;
  if [ ! -d Python-${python_version} ]; then
    tar -zxvf Python-${python_version}.tgz
    cd /data/dep/Python-${python_version} || exit 1;
  fi

  mkdir /usr/local/python-${python_version}
  ./configure --prefix=/usr/local/python-${python_version}
  make && make install

  /usr/local/python-${python_version}/bin/python3 -V
  /usr/local/python-${python_version}/bin/pip3 -V

  rm -rf /usr/local/bin/python3
  rm -rf /usr/local/bin/pip3
  ln -s /usr/local/python-${python_version}/bin/python3 /usr/local/bin/python3
  ln -s /usr/local/python-${python_version}/bin/pip3 /usr/local/bin/pip3

  python3 -V
  pip3 -V

elif [ ${system_version} = "ubuntu" ]; then
  # 安装 python 开发编译环境
  # https://zhuanlan.zhihu.com/p/506491209

  # 刷新软件包目录
  sudo apt update
  # 列出当前可用的更新
  sudo apt list --upgradable
  # 如上一步提示有可以更新的项目,则执行更新
  sudo apt -y upgrade
  # 安装 GCC 编译器
  sudo apt install gcc
  # 检查安装是否成功
  gcc -v

  # 安装依赖
  sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libbz2-dev liblzma-dev sqlite3 libsqlite3-dev tk-dev uuid-dev libgdbm-compat-dev

  mkdir -p /data/dep
  cd /data/dep || exit 1;
  if [ ! -e Python-${python_version}.tgz ]; then
    # sudo wget -P /data/dep https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
    sudo wget -P /data/dep https://www.python.org/ftp/python/${python_version}/Python-${python_version}.tgz
  fi

  cd /data/dep || exit 1;
  if [ ! -d Python-${python_version} ]; then
    # tar -zxvf Python-3.6.5.tgz
    tar -zxvf Python-${python_version}.tgz
    # cd /data/dep/Python-3.6.5
    cd /data/dep/Python-${python_version} || exit 1;
  fi

  # mkdir /usr/local/python-3.6.5
  mkdir /usr/local/python-${python_version}

  # 检查依赖与配置编译
  # sudo ./configure --prefix=/usr/local/python-3.6.5 --enable-optimizations --with-lto --enable-shared
  sudo ./configure --prefix=/usr/local/python-${python_version} --enable-optimizations --with-lto --enable-shared
  cpu_count=$(cat /proc/cpuinfo | grep processor | wc -l)
  # sudo make -j 4
  sudo make -j "${cpu_count}"

  /usr/local/python-${python_version}/bin/python3 -V
  /usr/local/python-${python_version}/bin/pip3 -V

  rm -rf /usr/local/bin/python3
  rm -rf /usr/local/bin/pip3
  ln -s /usr/local/python-${python_version}/bin/python3 /usr/local/bin/python3
  ln -s /usr/local/python-${python_version}/bin/pip3 /usr/local/bin/pip3

  python3 -V
  pip3 -V
fi