paperless-ngx-update.sh 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/usr/bin/env bash
  2. clear
  3. RELEASE=$(curl -s https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
  4. YW=$(echo "\033[33m")
  5. RD=$(echo "\033[01;31m")
  6. BL=$(echo "\033[36m")
  7. GN=$(echo "\033[1;92m")
  8. CL=$(echo "\033[m")
  9. RETRY_NUM=10
  10. RETRY_EVERY=3
  11. NUM=$RETRY_NUM
  12. CM="${GN}✓${CL}"
  13. CROSS="${RD}✗${CL}"
  14. BFR="\\r\\033[K"
  15. HOLD="-"
  16. set -e
  17. function msg_info() {
  18. local msg="$1"
  19. echo -ne " ${HOLD} ${YW}${msg}..."
  20. }
  21. function msg_ok() {
  22. local msg="$1"
  23. echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
  24. }
  25. function msg_error() {
  26. local msg="$1"
  27. echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
  28. }
  29. cat <<"EOF"
  30. ____ __
  31. / __ \____ _____ ___ _____/ /__ __________ ____ ____ __ __
  32. / /_/ / __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/___/ __ \/ __ `/ |/_/
  33. / ____/ /_/ / /_/ / __/ / / / __(__ |__ )___/ / / / /_/ /> <
  34. /_/ \__,_/ .___/\___/_/ /_/\___/____/____/ /_/ /_/\__, /_/|_|
  35. /_/ UPDATE /____/
  36. EOF
  37. echo -e "🚨 This will break Paperless-ngx DO NOT UPGRADE to version 1.10.0"
  38. echo -e "Working on a solution"
  39. while true; do
  40. read -p "This will Update Paperless-ngx to $RELEASE. Proceed(y/n)?" yn
  41. case $yn in
  42. [Yy]*) break ;;
  43. [Nn]*) exit ;;
  44. *) echo "Please answer yes or no." ;;
  45. esac
  46. done
  47. sleep 2
  48. msg_info "Stopping Paperless-ngx"
  49. systemctl stop paperless-consumer paperless-webserver paperless-scheduler
  50. sleep 1
  51. msg_ok "Stopped Paperless-ngx"
  52. msg_info "Updating to ${RELEASE}"
  53. wget https://github.com/paperless-ngx/paperless-ngx/releases/download/$RELEASE/paperless-ngx-$RELEASE.tar.xz &>/dev/null
  54. tar -xf paperless-ngx-$RELEASE.tar.xz &>/dev/null
  55. cp -r /opt/paperless/paperless.conf paperless-ngx/
  56. cp -r paperless-ngx/* /opt/paperless/
  57. cd /opt/paperless
  58. sed -i -e 's|-e git+https://github.com/paperless-ngx/django-q.git|git+https://github.com/paperless-ngx/django-q.git|' /opt/paperless/requirements.txt
  59. pip install -r requirements.txt &>/dev/null
  60. cd /opt/paperless/src
  61. /usr/bin/python3 manage.py migrate &>/dev/null
  62. msg_ok "Updated to ${RELEASE}"
  63. msg_info "Cleaning up"
  64. cd ~
  65. rm paperless-ngx-$RELEASE.tar.xz
  66. rm -rf paperless-ngx
  67. msg_ok "Cleaned"
  68. msg_info "Starting Paperless-ngx"
  69. systemctl start paperless-consumer paperless-webserver paperless-scheduler
  70. sleep 1
  71. msg_ok "Finished Update"
  72. echo -e "\n${BL}It may take a minute or so for Paperless-ngx to become available.${CL}\n"