xup 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/bin/sh
  2. SRC_BASE="$HOME/dox/src"
  3. XDG_REPO_BASE="$SRC_BASE/xdg-repo"
  4. XDG_REPO_ARCH="x86_64"
  5. get_pkgver() {
  6. grep "^\s*pkgver" .SRCINFO | sed "s/^\s*pkgver\s*=\s*//;"
  7. }
  8. get_pkgrel() {
  9. grep "^\s*pkgrel" .SRCINFO | sed "s/^\s*pkgrel\s*=\s*//;"
  10. }
  11. get_epoch() {
  12. raw_epoch="$(grep "^\s*epoch" .SRCINFO | sed "s/^\s*epoch\s*=\s*//;")"
  13. if [ -n "$raw_epoch" ]; then
  14. echo "$raw_epoch:"
  15. fi
  16. }
  17. get_full_pkgver() {
  18. echo "$(get_epoch)$(get_pkgver)-$(get_pkgrel)"
  19. }
  20. handle_bin_ver_pkg_upgrade() {
  21. if [ -e PKGBUILD ]; then
  22. binary_version="$(grep "^# binary version of this package (-bin):" PKGBUILD | head -n 1 | awk '{print $8}' | sed 's/^.*\///')"
  23. if [ -n "$binary_version" ]; then
  24. pkgver="$(get_pkgver)"
  25. pkgrel="$(get_pkgrel)"
  26. epoch="$(get_epoch)"
  27. cd "$SRC_BASE/$binary_version" || return
  28. git pull || return
  29. if [ -n "$epoch" ]; then
  30. sed -i "s/^\s*epoch\s*=.*$/epoch=$epoch/" PKGBUILD
  31. fi
  32. sed -i "s/^\s*pkgver\s*=.*$/pkgver=$pkgver/" PKGBUILD
  33. sed -i "s/^\s*pkgrel\s*=.*$/pkgrel=$pkgrel/" PKGBUILD
  34. updpkgsums || return
  35. makepkg --printsrcinfo >.SRCINFO
  36. git add .SRCINFO PKGBUILD || return
  37. # note: (hopefully up-to-date) copy of 'uppkg' zsh alias
  38. git commit -m "uppkg -> $(
  39. raw_pkgver="$(grep "^\s*epoch\|^\s*pkgver\|^\s*pkgrel" .SRCINFO | sed "/^\s*epoch/ {s/:$/::/;t;s/$/:/}; s/^\s*epoch\s*=\s*//; s/^\s*pkgver\s*=\s*//; s/^\s*pkgrel\s*=\s*/-/")"
  40. if echo "$raw_pkgver" | grep -q ":"; then raw_pkgver="$(echo "$raw_pkgver" | sed "1{N;h;d};3G")"; fi
  41. echo "$raw_pkgver" | tr -d "\n"
  42. )" || return
  43. git push
  44. fi
  45. fi
  46. }
  47. xdg_repo_path="$XDG_REPO_BASE/$XDG_REPO_ARCH"
  48. more_than_one_arguemt_given=0
  49. commit_msg="updated"
  50. for file in "$@"; do
  51. pkgver="$(get_full_pkgver)"
  52. pkgname="${file%%-"$pkgver"*}"
  53. for old_pkg in "$xdg_repo_path/$pkgname"*.pkg.tar.zst; do
  54. if [ -e "$old_pkg" ]; then
  55. rm "$xdg_repo_path/$pkgname"*.pkg.tar.zst*
  56. # TODO: broken, use another way to break out of inner loop
  57. # break
  58. fi
  59. done
  60. if [ "$more_than_one_arguemt_given" = 0 ]; then
  61. more_than_one_arguemt_given=1
  62. commit_msg="$commit_msg $pkgname -> $pkgver"
  63. else
  64. commit_msg="$commit_msg + $pkgname -> $pkgver"
  65. fi
  66. mv "$file" "$xdg_repo_path"
  67. done
  68. handle_bin_ver_pkg_upgrade
  69. cd "$XDG_REPO_BASE" || exit 1
  70. git pull
  71. ./signpkgs
  72. git add .
  73. git commit -m "$commit_msg"
  74. git push