xup 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/bin/sh
  2. SRC_BASE="$HOME/.local/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. # TODO: add epoch to $pkgver
  12. get_full_pkgver() {
  13. echo "$(get_pkgver)-$(get_pkgrel)"
  14. }
  15. handle_bin_ver_pkg_upgrade() {
  16. if [ -e PKGBUILD ]; then
  17. binary_version="$(grep "^# binary version of this package (-bin):" PKGBUILD | head -n 1 | awk '{print $8}' | sed 's/^.*\///')"
  18. if [ -n "$binary_version" ]; then
  19. pkgver="$(get_pkgver)"
  20. pkgrel="$(get_pkgrel)"
  21. cd "$SRC_BASE/$binary_version" || return
  22. git pull || return
  23. sed -i "s/^\s*pkgver\s*=.*$/pkgver=$pkgver/" PKGBUILD
  24. sed -i "s/^\s*pkgrel\s*=.*$/pkgrel=$pkgrel/" PKGBUILD
  25. updpkgsums || return
  26. makepkg --printsrcinfo > .SRCINFO
  27. git add .SRCINFO PKGBUILD || return
  28. git commit -m "uppkg -> $(grep "^\s*pkgver\|^\s*pkgrel" .SRCINFO | sed "s/^\s*pkgver\s*=\s*//; s/^\s*pkgrel\s*=\s*/-/"| tr -d "\n")" || return
  29. git push
  30. fi
  31. fi
  32. }
  33. xdg_repo_path="$XDG_REPO_BASE/$XDG_REPO_ARCH"
  34. more_than_one_arguemt_given=0
  35. commit_msg="updated"
  36. for file in "$@"; do
  37. pkgver="$(get_full_pkgver)"
  38. pkgname="${file%%-"$pkgver"*}"
  39. for old_pkg in "$xdg_repo_path/$pkgname"*.pkg.tar.zst; do
  40. if [ -e "$old_pkg" ]; then
  41. rm "$xdg_repo_path/$pkgname"*.pkg.tar.zst*
  42. # TODO: broken, use another way to break out of inner loop
  43. # break
  44. fi
  45. done
  46. if [ "$more_than_one_arguemt_given" = 0 ]; then
  47. more_than_one_arguemt_given=1
  48. commit_msg="$commit_msg $pkgname -> $pkgver"
  49. else
  50. commit_msg="$commit_msg + $pkgname -> $pkgver"
  51. fi
  52. mv "$file" "$xdg_repo_path"
  53. done
  54. handle_bin_ver_pkg_upgrade
  55. cd "$XDG_REPO_BASE" || exit 1
  56. git pull
  57. ./signpkgs
  58. git add .
  59. git commit -m "$commit_msg"
  60. git push