chkfrog.sh 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #!/bin/bash
  2. # A script to check jfrog (bintray) for binaries existence and update package file
  3. #
  4. # Usage
  5. #
  6. # chkfrog package... Check packages
  7. #
  8. # Directory structure
  9. #
  10. # Unfortunately, we need to have sha256 files locally to update URL correctly.
  11. #
  12. # release/armv7l/*.tar.xz.sha256 SHA256 files for armv7l
  13. # release/i686/*.tar.xz.sha256 SHA256 files for i686
  14. # release/x86_64/*.tar.xz.sha256 SHA256 files for x86_64
  15. URL="https://dl.bintray.com/chromebrew/chromebrew"
  16. case $# in
  17. 0) set `basename -s .rb packages/*`
  18. esac
  19. function update_url () {
  20. if sed -e '/binary_url.*({/,/})/p; d' packages/$1.rb | grep -q $2:; then
  21. # sed -e "/binary_url.*({/,/})/s,$2:.*,$2: '$3'," -i packages/$1.rb
  22. sed -e "/$2:.*\(http\|https\|ftp\):/c\ \ \ \ $(printf %7s $2): '$3'," -i packages/$1.rb
  23. else
  24. sed -e "/binary_url.*({/a\ \ \ \ $(printf %7s $2): '$3'," -i packages/$1.rb
  25. fi
  26. }
  27. function update_sha256 () {
  28. if sed -e '/binary_sha256.*({/,/})/p; d' packages/$1.rb | grep -q $2:; then
  29. # sed -e "/binary_sha256.*({/,/})/s,$2:.*,$2: '$3'," -i packages/$1.rb
  30. sed -e "/$2:.*['\"][0-9a-f]*['\"]/c\ \ \ \ $(printf %7s $2): '$3'," -i packages/$1.rb
  31. else
  32. sed -e "/binary_sha256.*({/a\ \ \ \ $(printf %7s $2): '$3'," -i packages/$1.rb
  33. fi
  34. }
  35. function get_sha256 () {
  36. if [ -f release/$2/$1.sha256 ]; then
  37. cut -d' ' -f1 release/$2/$1.sha256
  38. else
  39. echo not found
  40. fi
  41. }
  42. function check_url () {
  43. curl --output /dev/null --silent --header -L --fail $1
  44. }
  45. for name in "$@"; do
  46. name=`basename -s .rb $name`
  47. pkg=`echo $name | sed -e 's/-.*//'`
  48. if ! grep -q binary_url packages/$pkg.rb; then
  49. sed -e '/source_sha256/ a\
  50. \
  51. \ \ binary_url ({\
  52. \ \ })\
  53. \ \ binary_sha256 ({\
  54. \ \ })' -i packages/$pkg.rb
  55. fi
  56. version=`grep '\<version ['"'"'"]' packages/$pkg.rb | head -1 | sed -e 's/^.*version *['"'"'"]//' -e 's/['"'"'"].*$//'`
  57. echo $pkg $version
  58. for arch in x86_64 i686 armv7l; do
  59. tarname="$pkg-$version-chromeos-$arch.tar"
  60. if check_url "$URL/$tarname.xz"; then
  61. url="$URL/$tarname.xz"
  62. sha256=`get_sha256 $tarname.xz $arch`
  63. elif check_url "$URL/$tarname.gz"; then
  64. url="$URL/$tarname.gz"
  65. sha256=`get_sha256 $tarname.gz $arch`
  66. else
  67. url=""
  68. fi
  69. echo $url : $sha256
  70. case x$url in
  71. x) ;;
  72. *)
  73. update_url $pkg $arch $url
  74. update_sha256 $pkg $arch $sha256
  75. case $arch in
  76. armv7l)
  77. update_url $pkg aarch64 $url
  78. update_sha256 $pkg aarch64 $sha256
  79. ;;
  80. esac
  81. ;;
  82. esac
  83. done
  84. done