+
+detect_flavour() {
+ arch="$(uname -m)"
+ if [ "$arch" = "x86_64" ]; then
+ arch="amd64"
+ elif [ "$arch" = "armv7l" ]; then
+ arch="arm"
+ elif [ "$arch" = "aarch64" ]; then
+ arch="arm64"
+ else
+ echo "Unsupported arch: $arch" >&2
+ exit 1
+ fi
+
+ if getconf GNU_LIBC_VERSION >/dev/null; then
+ libc_postfix=""
+ elif [ "$(ldd 2>&1 | head -c 9)" = "musl libc" ]; then
+ libc_postfix="-musl"
+ elif [ "$(find /lib/libc.musl* | wc -l)" ]; then
+ libc_postfix="-musl"
+ else
+ echo "Unsupported libc" >&2
+ exit 1
+ fi
+
+ echo "$arch$libc_postfix"
+}
+
+detect_branch() {
+ version="$(cut -d' ' -f2 <"$RELEASE_ROOT"/releases/start_erl.data)"
+ # Expected format: major.minor.patch_version(-number_of_commits_ahead_of_tag-gcommit_hash).branch
+ branch="$(echo "$version" | cut -d'.' -f 4)"
+ if [ "$branch" = "develop" ]; then
+ echo "develop"
+ elif [ "$branch" = "" ]; then
+ echo "stable"
+ else
+ # Note: branch name in version is of SemVer format and may only contain [0-9a-zA-Z-] symbols —
+ # if supporting releases for more branches, need to ensure they contain only these symbols.
+ echo "Can't detect the branch automatically, please specify it by using the --branch option." >&2
+ exit 1
+ fi
+}
+update() {
+ set -e
+ NO_RM=false
+
+ while echo "$1" | grep "^-" >/dev/null; do
+ case "$1" in
+ --zip-url)
+ FULL_URI="$2"
+ shift 2
+ ;;
+ --no-rm)
+ NO_RM=true
+ shift
+ ;;
+ --flavour)
+ FLAVOUR="$2"
+ shift 2
+ ;;
+ --branch)
+ BRANCH="$2"
+ shift 2
+ ;;
+ --tmp-dir)
+ TMP_DIR="$2"
+ shift 2
+ ;;
+ -*)
+ echo "invalid option: $1" 1>&2
+ shift
+ ;;
+ esac
+ done
+
+ RELEASE_ROOT=$(dirname "$SCRIPTPATH")
+ uri="https://git.pleroma.social"
+ project_id="2"
+ project_branch="${BRANCH:-$(detect_branch)}"
+ flavour="${FLAVOUR:-$(detect_flavour)}"
+ tmp="${TMP_DIR:-/tmp}"
+ artifact="$tmp/pleroma.zip"
+ full_uri="${FULL_URI:-${uri}/api/v4/projects/${project_id}/jobs/artifacts/${project_branch}/download?job=${flavour}}"
+ echo "Downloading the artifact from ${full_uri} to ${artifact}"
+ curl "$full_uri" -o "${artifact}"
+ echo "Unpacking ${artifact} to ${tmp}"
+ unzip -q "$artifact" -d "$tmp"
+ echo "Copying files over to $RELEASE_ROOT"
+ if [ "$NO_RM" = false ]; then
+ echo "Removing files from the previous release"
+ rm -r "${RELEASE_ROOT:-?}"/*
+ fi
+ cp -rf "$tmp/release"/* "$RELEASE_ROOT"
+ echo "Removing temporary files"
+ rm -r "$tmp/release"
+ rm "$artifact"
+ echo "Done! Please refer to the changelog/release notes for changes and update instructions"
+ set +e
+}
+