From 0ba7194fa1cb709b40a6699a8bda29292999277b Mon Sep 17 00:00:00 2001
From: lauralani <dev@lauka.net>
Date: Wed, 29 Mar 2023 10:21:43 +0200
Subject: [PATCH] [BRANDING] adapt forgejo/contrib/upgrade.sh

Reviewed at: https://codeberg.org/forgejo/forgejo/pulls/605

(cherry picked from commit ab986185d08a30e0172c4fcd7870803c31f843bd)
(cherry picked from commit 6068aed2a7f413e3196dd4cf704bc2cf63b36329)
(cherry picked from commit 0cbd599c0c418f9a53a039fd06d9861ac58dcc68)
(cherry picked from commit c3ef13588230e8eba9c42ddfddf966a20ab3f745)
---
 contrib/upgrade.sh | 94 +++++++++++++++++++++++-----------------------
 1 file changed, 47 insertions(+), 47 deletions(-)

diff --git a/contrib/upgrade.sh b/contrib/upgrade.sh
index 4b166a02a0..4240b5694f 100755
--- a/contrib/upgrade.sh
+++ b/contrib/upgrade.sh
@@ -1,42 +1,42 @@
 #!/usr/bin/env bash
-# This is an update script for gitea installed via the binary distribution
-# from dl.gitea.com on linux as systemd service. It performs a backup and updates
-# Gitea in place.
-# NOTE: This adds the GPG Signing Key of the Gitea maintainers to the keyring.
+# This is an update script for forgejo installed via the binary distribution
+# from codeberg.org/forgejo/forgejo on linux as systemd service. It
+# performs a backup and updates Forgejo in place.
+# NOTE: This adds the GPG Signing Key of the Forgejo maintainers to the keyring.
 # Depends on: bash, curl, xz, sha256sum. optionally jq, gpg
 #   See section below for available environment vars.
 #   When no version is specified, updates to the latest release.
 # Examples:
 #   upgrade.sh 1.15.10
-#   giteahome=/opt/gitea giteaconf=$giteahome/app.ini upgrade.sh
+#   forgejohome=/opt/forgejo forgejoconf=$forgejohome/app.ini upgrade.sh
 
-# Check if gitea service is running
-if ! pidof gitea &> /dev/null; then
-  echo "Error: gitea is not running."
+# Check if forgejo service is running
+if ! pidof forgejo &> /dev/null; then
+  echo "Error: forgejo is not running."
   exit 1
 fi
 
-# Continue with rest of the script if gitea is running
-echo "Gitea is running. Continuing with rest of script..."
+# Continue with rest of the script if forgejo is running
+echo "Forgejo is running. Continuing with rest of script..."
 
 # apply variables from environment
-: "${giteabin:="/usr/local/bin/gitea"}"
-: "${giteahome:="/var/lib/gitea"}"
-: "${giteaconf:="/etc/gitea/app.ini"}"
-: "${giteauser:="git"}"
+: "${forgejobin:="/usr/local/bin/forgejo"}"
+: "${forgejohome:="/var/lib/forgejo"}"
+: "${forgejoconf:="/etc/forgejo/app.ini"}"
+: "${forgejouser:="git"}"
 : "${sudocmd:="sudo"}"
 : "${arch:="linux-amd64"}"
-: "${service_start:="$sudocmd systemctl start gitea"}"
-: "${service_stop:="$sudocmd systemctl stop gitea"}"
-: "${service_status:="$sudocmd systemctl status gitea"}"
-: "${backupopts:=""}" # see `gitea dump --help` for available options
+: "${service_start:="$sudocmd systemctl start forgejo"}"
+: "${service_stop:="$sudocmd systemctl stop forgejo"}"
+: "${service_status:="$sudocmd systemctl status forgejo"}"
+: "${backupopts:=""}" # see `forgejo dump --help` for available options
 
-function giteacmd {
+function forgejocmd {
   if [[ $sudocmd = "su" ]]; then
     # `-c` only accept one string as argument.
-    "$sudocmd" - "$giteauser" -c "$(printf "%q " "$giteabin" "--config" "$giteaconf" "--work-path" "$giteahome" "$@")"
+    "$sudocmd" - "$forgejouser" -c "$(printf "%q " "$forgejobin" "--config" "$forgejoconf" "--work-path" "$forgejohome" "$@")"
   else
-    "$sudocmd" --user "$giteauser" "$giteabin" --config "$giteaconf" --work-path "$giteahome" "$@"
+    "$sudocmd" --user "$forgejouser" "$forgejobin" --config "$forgejoconf" --work-path "$forgejohome" "$@"
   fi
 }
 
@@ -49,7 +49,7 @@ function require {
 # parse command line arguments
 while true; do
   case "$1" in
-    -v | --version ) giteaversion="$2"; shift 2 ;;
+    -v | --version ) forgejoversion="$2"; shift 2 ;;
     -y | --yes ) no_confirm="yes"; shift ;;
     --ignore-gpg) ignore_gpg="yes"; shift ;;
     "" | -- ) shift; break ;;
@@ -65,9 +65,9 @@ if [[ -f /etc/os-release ]]; then
 
   if [[ "$os_release" =~ "OpenWrt" ]]; then
     sudocmd="su"
-    service_start="/etc/init.d/gitea start"
-    service_stop="/etc/init.d/gitea stop"
-    service_status="/etc/init.d/gitea status"
+    service_start="/etc/init.d/forgejo start"
+    service_stop="/etc/init.d/forgejo stop"
+    service_status="/etc/init.d/forgejo status"
   else
     require systemctl
   fi
@@ -76,31 +76,31 @@ fi
 require curl xz sha256sum "$sudocmd"
 
 # select version to install
-if [[ -z "${giteaversion:-}" ]]; then
+if [[ -z "${forgejoversion:-}" ]]; then
   require jq
-  giteaversion=$(curl --connect-timeout 10 -sL https://dl.gitea.com/gitea/version.json | jq -r .latest.version)
-  echo "Latest available version is $giteaversion"
+  forgejoversion=$(curl --connect-timeout 10 -sL 'https://codeberg.org/api/v1/repos/forgejo/forgejo/releases?draft=false&pre-release=false&limit=1' -H 'accept: application/json' | jq -r '.[0].tag_name | sub("v"; "")')
+  echo "Latest available version is $forgejoversion"
 fi
 
 # confirm update
 echo "Checking currently installed version..."
-current=$(giteacmd --version | cut -d ' ' -f 3)
-[[ "$current" == "$giteaversion" ]] && echo "$current is already installed, stopping." && exit 1
+current=$(forgejocmd --version | cut -d ' ' -f 3)
+[[ "$current" == "$forgejoversion" ]] && echo "$current is already installed, stopping." && exit 1
 if [[ -z "${no_confirm:-}"  ]]; then
-  echo "Make sure to read the changelog first: https://github.com/go-gitea/gitea/blob/main/CHANGELOG.md"
-  echo "Are you ready to update Gitea from ${current} to ${giteaversion}? (y/N)"
+  echo "Make sure to read the changelog first: https://codeberg.org/forgejo/forgejo/src/branch/forgejo/CHANGELOG.md"
+  echo "Are you ready to update forgejo from ${current} to ${forgejoversion}? (y/N)"
   read -r confirm
   [[ "$confirm" == "y" ]] || [[ "$confirm" == "Y" ]] || exit 1
 fi
 
-echo "Upgrading gitea from $current to $giteaversion ..."
+echo "Upgrading forgejo from $current to $forgejoversion ..."
 
 pushd "$(pwd)" &>/dev/null
-cd "$giteahome" # needed for gitea dump later
+cd "$forgejohome" # needed for forgejo dump later
 
 # download new binary
-binname="gitea-${giteaversion}-${arch}"
-binurl="https://dl.gitea.com/gitea/${giteaversion}/${binname}.xz"
+binname="forgejo-${forgejoversion}-${arch}"
+binurl="https://codeberg.org/forgejo/forgejo/releases/download/v${forgejoversion}/${binname}.xz"
 echo "Downloading $binurl..."
 curl --connect-timeout 10 --silent --show-error --fail --location -O "$binurl{,.sha256,.asc}"
 
@@ -108,28 +108,28 @@ curl --connect-timeout 10 --silent --show-error --fail --location -O "$binurl{,.
 sha256sum -c "${binname}.xz.sha256"
 if [[ -z "${ignore_gpg:-}" ]]; then
   require gpg
-  gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
+  gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710
   gpg --verify "${binname}.xz.asc" "${binname}.xz" || { echo 'Signature does not match'; exit 1; }
 fi
 rm "${binname}".xz.{sha256,asc}
 
 # unpack binary + make executable
 xz --decompress --force "${binname}.xz"
-chown "$giteauser" "$binname"
+chown "$forgejouser" "$binname"
 chmod +x "$binname"
 
-# stop gitea, create backup, replace binary, restart gitea
-echo "Flushing gitea queues at $(date)"
-giteacmd manager flush-queues
-echo "Stopping gitea at $(date)"
+# stop forgejo, create backup, replace binary, restart forgejo
+echo "Flushing forgejo queues at $(date)"
+forgejocmd manager flush-queues
+echo "Stopping forgejo at $(date)"
 $service_stop
-echo "Creating backup in $giteahome"
-giteacmd dump $backupopts
-echo "Updating binary at $giteabin"
-cp -f "$giteabin" "$giteabin.bak" && mv -f "$binname" "$giteabin"
+echo "Creating backup in $forgejohome"
+forgejocmd dump $backupopts
+echo "Updating binary at $forgejobin"
+cp -f "$forgejobin" "$forgejobin.bak" && mv -f "$binname" "$forgejobin"
 $service_start
 $service_status
 
-echo "Upgrade to $giteaversion successful!"
+echo "Upgrade to $forgejoversion successful!"
 
 popd