check_updates.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #!/bin/bash
  2. if [ ! -f packages.yaml ]; then
  3. echo "packages.yaml not found."
  4. exit 1
  5. fi
  6. if test "$1"; then
  7. valid=
  8. opt="core high medium low"
  9. for o in $opt; do
  10. [ "$1" == "$o" ] && valid=1
  11. done
  12. if ! test "$valid"; then
  13. echo "Usage: $0 [activity] [offset] [lines]"
  14. echo "activity: core|high|medium|low"
  15. echo "offset: # of lines to skip"
  16. echo "lines: # of lines to check"
  17. exit 1
  18. fi
  19. if [[ "$1" == "core" ]]; then
  20. rm -f /tmp/urls.txt
  21. cat core_packages.txt > /tmp/names.txt
  22. ps=$(< /tmp/names.txt)
  23. ps=$(echo "$ps" | xargs)
  24. for p in $ps; do
  25. grep -1 "^name: ${p}$" packages.yaml | tail -1 | cut -d' ' -f2 >> /tmp/urls.txt
  26. done
  27. else
  28. grep -2 "^activity: $1" packages.yaml > /tmp/activity.txt
  29. grep ^name: /tmp/activity.txt | cut -d' ' -f2 > /tmp/names.txt
  30. grep ^url: /tmp/activity.txt | cut -d' ' -f2 > /tmp/urls.txt
  31. rm -f /tmp/activity.txt
  32. fi
  33. else
  34. grep ^name: packages.yaml | cut -d' ' -f2 > /tmp/names.txt
  35. grep ^url: packages.yaml | cut -d' ' -f2 > /tmp/urls.txt
  36. fi
  37. if test "$2"; then
  38. lines=$(wc -l /tmp/urls.txt | cut -d' ' -f1)
  39. offset="$2"
  40. urls=$((lines-offset))
  41. if test "$3"; then
  42. count=$3
  43. tail "-$urls" /tmp/names.txt | head "-$count" > /tmp/new_names.txt
  44. tail "-$urls" /tmp/urls.txt | head "-$count" > /tmp/new_urls.txt
  45. else
  46. tail "-$urls" /tmp/names.txt > /tmp/new_names.txt
  47. tail "-$urls" /tmp/urls.txt > /tmp/new_urls.txt
  48. fi
  49. mv /tmp/new_names.txt /tmp/names.txt
  50. mv /tmp/new_urls.txt /tmp/urls.txt
  51. fi
  52. c=0
  53. ps=$(< /tmp/names.txt)
  54. ps=$(echo "$ps" | xargs)
  55. for p in $ps; do
  56. a=$(grep -2 "^name: ${p}$" packages.yaml | tail -1 | cut -d' ' -f2)
  57. if [ "$a" != "none" ]; then
  58. star=
  59. repo=
  60. u=$(grep -1 "^name: ${p}$" packages.yaml | tail -1 | cut -d' ' -f2)
  61. version=$(grep "^ @_ver" ../packages/"$p.rb" 2>/dev/null | cut -d= -f2 | xargs)
  62. [ -z "$version" ] && version=$(grep "^ version" ../packages/"$p.rb" | cut -d"'" -f2)
  63. cp=$(grep "^${p}$" core_packages.txt)
  64. test "$cp" && star="*"
  65. [[ "$u" == *"gnu.org"* ]] && repo="gnu"
  66. [[ "$u" == *"github.com"* && $u == *"/releases"* ]] && repo="github"
  67. [[ "$u" == *"savannah.gnu.org"* && $u == *"/releases"* ]] && repo="savannah"
  68. case "$repo" in
  69. gnu)
  70. content=$(curl -Ls "$u")
  71. content=${content/[ds|latest].tar//}
  72. d=${content##*\.tar\.[g|l|x]z\">}
  73. rel=$(echo "$d" | cut -d'<' -f1 | cut -d'-' -f2 | xargs)
  74. ver=${rel%.tar*}
  75. nu="$u/$p-$rel"
  76. [[ "$version" != "$ver" ]] && echo "- [ ] $p$star | $nu | $version | $ver"
  77. ;;
  78. github)
  79. relu=${u#*com}/tag/
  80. content=$(curl -Ls "$u" | grep "href=\"$relu")
  81. d=${content#*/releases/tag/}
  82. rel=$(echo "$d" | cut -d'"' -f1)
  83. rel=$(echo "$rel" | cut -d' ' -f1)
  84. ver=${rel%.zip*}
  85. nu=${u/releases/archive}
  86. [[ "$version" != "$ver" ]] && echo "- [ ] $p$star | $nu/$ver.tar.gz | $version | $ver"
  87. ;;
  88. savannah)
  89. content=$(curl -Ls "$u")
  90. d=${content##*\.tar\.[g|l|x]z\">}
  91. rel=$(echo "$d" | cut -d'<' -f1 | cut -d'-' -f2 | xargs | cut -d' ' -f1)
  92. rel=${rel% *}
  93. ver=${rel%.tar*}
  94. nu="$u/$p-$rel"
  95. [[ "$version" != "$ver" ]] && echo "- [ ] $p$star | $nu | $version | $ver"
  96. ;;
  97. *)
  98. echo "- [ ] $p$star | $u | $version | not checked"
  99. esac
  100. c=$((c+1))
  101. fi
  102. done
  103. echo "Total packages: $c"
  104. #most /tmp/urls.txt
  105. #if ! test $(command -v elinks 2> /dev/null); then
  106. # crew install elinks
  107. #fi
  108. #for u in $(cat /tmp/urls.txt); do elinks $u; done
  109. #rm -f /tmp/names.txt
  110. #rm -f /tmp/urls.txt