download_utils.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/bin/bash
  2. function check_and_install() {
  3. pkg=$1
  4. if ! command -v ${pkg} >/dev/null 2>&1; then
  5. # Ubuntu/Debian
  6. if command -v apt-get >/dev/null 2>&1; then
  7. sudo apt-get update
  8. sudo apt-get install -y ${pkg}
  9. # CentOS/RHEL
  10. elif command -v yum >/dev/null 2>&1; then
  11. sudo yum install -y epel-release
  12. sudo yum install -y ${pkg}
  13. # Fedora
  14. elif command -v dnf >/dev/null 2>&1; then
  15. sudo dnf install -y ${pkg}
  16. # Arch Linux
  17. elif command -v pacman >/dev/null 2>&1; then
  18. sudo pacman -S ${pkg}
  19. # openSUSE
  20. elif command -v zypper >/dev/null 2>&1; then
  21. sudo zypper install -y ${pkg}
  22. else
  23. echo -e "\e[31mUnable to install ${pkg}, unsupported Linux distro\e[0m"
  24. exit 1
  25. fi
  26. fi
  27. }
  28. get_tag() {
  29. curl -fsSL "https://api.github.com/repos/$1/releases/latest" | jq -r '.tag_name'
  30. }
  31. # 定义下载函数
  32. download_file() {
  33. name=$1
  34. version=$2
  35. url=$3
  36. local_version=$(jq -r ".[\"$name\"]" <$VERSION_FILE)
  37. echo -e "\e[1;47;34m$name Version Info: 【本地版本】$local_version | 【最新版本】$version\e[0m"
  38. if [ "$version" != "$local_version" ]; then
  39. echo "Updating $name to $version"
  40. # 下载
  41. if ! curl -L -o "$FILE_DIR/$name" "$url"; then
  42. echo -e "\e[31mFailed to download $name\e[0m"
  43. return 1
  44. fi
  45. return 0
  46. fi
  47. return 0
  48. }
  49. process_files() {
  50. json="{"
  51. for doc in "${!docs[@]}"; do
  52. if [[ $doc == *_name ]]; then
  53. name=${docs[$doc]}
  54. version=${docs[${doc/_name/_version}]}
  55. url=${docs[${doc/_name/_url}]}
  56. download_file "$name" "$version" "$url"
  57. json+="\"$name\":\"$version\","
  58. fi
  59. done
  60. json="${json%,}}"
  61. echo "$json" >$VERSION_FILE
  62. }