Files
gitea-loader/gitea-loader.sh
2025-06-10 21:20:37 +03:00

121 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
for GITEALOCALAPPBIN in "/opt/gitea/app/bin" "./app/bin" "../../app/bin"; do
# echo ${GITEALOCALAPPBIN}
if [ -d "${GITEALOCALAPPBIN}" ]; then
break
fi
done
if [ ! -d "${GITEALOCALAPPBIN}" ]; then
echo "Directory ${GITEALOCALAPPBIN} not found"
exit 1
fi
if [ x"$1" == x"--self-install" ]; then
ln -s "../../gitea-loader/gitea-loader.sh" "${GITEALOCALAPPBIN}/gitea-loader.sh" && {
echo "Success installed ${GITEALOCALAPPBIN}/gitea-loader.sh"
exit 0
} || {
exit 1
}
fi
jq --version > /dev/null 2>&1 || {
echo "Command jq not found"
exit 1
}
GITEALATESTVERSION="$(curl https://dl.gitea.com/gitea/version.json 2>/dev/null | jq -r .latest.version)"
#GITEALATESTVERSION="1.20"
GITEALATESTFILE="gitea-${GITEALATESTVERSION}-linux-amd64"
GITEALATESTURLXZ="https://dl.gitea.com/gitea/${GITEALATESTVERSION}/${GITEALATESTFILE}.xz"
GITEALATESTURLXZASC="https://dl.gitea.com/gitea/${GITEALATESTVERSION}/${GITEALATESTFILE}.xz.asc"
while true; do
if [ -f "${GITEALOCALAPPBIN}/${GITEALATESTFILE}.xz" ]; then
echo "Gitea version ${GITEALATESTVERSION} exists"
exit 0
fi
# gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
# gpg --verify gitea-1.20-linux-amd64.xz.asc gitea-1.20-linux-amd64.xz && {
# echo ok
# } || {
# echo no
# }
break
done
if [ x"${GITEALATESTVERSION}" = x"" ]; then
echo "Empty GITEALATESTVERSION"
exit 1
fi
echo "Download gitea version ${GITEALATESTVERSION}"
curl "${GITEALATESTURLXZ}" 2>/dev/null > "${GITEALOCALAPPBIN}/${GITEALATESTFILE}.xz.part" && {
echo "Success"
mv "${GITEALOCALAPPBIN}/${GITEALATESTFILE}.xz.part" "${GITEALOCALAPPBIN}/${GITEALATESTFILE}.xz"
} || {
echo "Failed"
rm -vf "${GITEALOCALAPPBIN}/${GITEALATESTFILE}.xz.part"
exit 1
}
echo "Extract gitea version ${GITEALATESTVERSION}"
xz -cd "${GITEALOCALAPPBIN}/${GITEALATESTFILE}.xz" > "${GITEALOCALAPPBIN}/${GITEALATESTFILE}.part" && {
echo "Success"
mv "${GITEALOCALAPPBIN}/${GITEALATESTFILE}.part" "${GITEALOCALAPPBIN}/${GITEALATESTFILE}"
} || {
echo "Failed"
rm -vf "${GITEALOCALAPPBIN}/${GITEALATESTFILE}"
exit 1
}
chmod +x "${GITEALOCALAPPBIN}/${GITEALATESTFILE}"
curl \
-L \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/go-gitea/gitea/releases?per_page=15" \
> "gitea-releases.json" 2>/dev/null || {
exit 1
}
for x in {3..15}; do
GITEAVERSION="$(cat gitea-releases.json | jq -r ".[$x].tag_name" | grep -aoE '[0-9]+\.[0-9]+\.[0-9]+')"
GITEABIN="--"
GITEARCH="--"
GITEABINFILE="${GITEALOCALAPPBIN}/gitea-${GITEAVERSION}-linux-amd64"
GITEARCHFILE="${GITEALOCALAPPBIN}/gitea-${GITEAVERSION}-linux-amd64.xz"
if [ -f "${GITEABINFILE}" ]; then
GITEABIN="OK"
fi
if [ -f "${GITEARCHFILE}" ]; then
GITEARCH="OK"
fi
# echo ${GITEAVERSION} ${GITEABIN} ${GITEAARCH}
if [ x"${GITEABIN}" = x"OK" ]; then
echo rm "${GITEABINFILE}"
fi
if [ $x -gt 7 -a x"${GITEARCH}" = x"OK" ]; then
echo rm "${GITEARCHFILE}"
fi
done