~evilham/cdist-evilham

442519cd9438ba4fe60cce1ec05975a8648d77d0 — Evilham 3 months ago ff708c1
forgejo: add support for FreeBSD

we do this by generalising /etc to ETC_DIR and download the compiled
version from farga.eXO.cat
M type/__evilham_forgejo/explorer/lfs-jwt-secret => type/__evilham_forgejo/explorer/lfs-jwt-secret +14 -2
@@ 1,8 1,20 @@
#!/bin/sh -e

os="$(uname | tr '[:upper:]' '[:lower:]')"

ETC_DIR="/etc"
case "${os}" in
	*bsd)
		ETC_DIR="/usr/local/etc"
	;;
	*)
	;;
esac

FORGEJO_DIR="/var/lib/forgejo"
FORGEJO_SECRET_DIR="${FORGEJO_DIR}/secret"
FORGEJO_CONF="/etc/forgejo.conf"
if [ -f "${FORGEJO_SECRET_DIR}/lfs-jwt-secret" ]; then
FORGEJO_CONF="${ETC_DIR}/forgejo.conf"
if [ -f "${FORGEJO_SECRET_DIR}/lfs_jwt_secret" ]; then
	cat "${FORGEJO_SECRET_DIR}/lfs_jwt_secret"
else
	grep -sE "^LFS_JWT_SECRET" "${FORGEJO_CONF}" | sed -E 's!^.*=[[:space:]]*([^[:space:]]+)[[:space:]]*$!\1!'

M type/__evilham_forgejo/explorer/secret-key => type/__evilham_forgejo/explorer/secret-key +14 -2
@@ 1,8 1,20 @@
#!/bin/sh -e

os="$(uname | tr '[:upper:]' '[:lower:]')"

ETC_DIR="/etc"
case "${os}" in
	*bsd)
		ETC_DIR="/usr/local/etc"
	;;
	*)
	;;
esac

FORGEJO_DIR="/var/lib/forgejo"
FORGEJO_SECRET_DIR="${FORGEJO_DIR}/secret"
FORGEJO_CONF="/etc/forgejo.conf"
if [ -f "${FORGEJO_SECRET_DIR}/secret-key" ]; then
FORGEJO_CONF="${ETC_DIR}/forgejo.conf"
if [ -f "${FORGEJO_SECRET_DIR}/secret_key" ]; then
	cat "${FORGEJO_SECRET_DIR}/secret_key"
else
	grep -sE "^SECRET_KEY" "${FORGEJO_CONF}" | sed -E 's!^.*=[[:space:]]*([^[:space:]]*)[[:space:]]*$!\1!'

M type/__evilham_forgejo/manifest => type/__evilham_forgejo/manifest +21 -9
@@ 1,20 1,29 @@
#!/bin/sh -eu

os="$(cat "${__global}/explorer/os")"

FORGEJO_TYPE_VERSION="1.19.3-0"
FORGEJO_CHECKSUM='sha256:84ad6db129c491c9e4b935cdb6ad7003a804d27fb70e9bc3c653d931cf62d92d'
# URL to forgejo-${FORGEJO_TYPE_VERSION}-linux-amd64.xz
FORGEJO_DOWNLOAD_URL="https://codeberg.org/attachments/8dc303a9-8a4e-416c-8d6c-62e0d3e289e8"
ETC_DIR="/etc"

case "${os}" in
	devuan|debian)
	;;
	freebsd)
FORGEJO_TYPE_VERSION="1.19.3-0"
FORGEJO_CHECKSUM='sha256:51e4cf9e002d1df96b3d0688e63f6e6e2338e478621570226d2f1d76c61763bc'
# URL to forgejo-${FORGEJO_TYPE_VERSION}-linux-amd64.xz
FORGEJO_DOWNLOAD_URL="https://farga.exo.cat/attachments/ac981280-eb24-493e-9fbd-7042932c15be"
ETC_DIR="/usr/local/etc"
	;;
	*)
		echo "Your OS '${os}' is currently not supported." > /dev/stderr
		exit 1
	;;
esac

FORGEJO_TYPE_VERSION="1.19.3-0"
FORGEJO_CHECKSUM='sha256:84ad6db129c491c9e4b935cdb6ad7003a804d27fb70e9bc3c653d931cf62d92d'
# URL to forgejo-${FORGEJO_TYPE_VERSION}-linux-amd64.xz
FORGEJO_DOWNLOAD_URL="https://codeberg.org/attachments/8dc303a9-8a4e-416c-8d6c-62e0d3e289e8"

USER="$(cat "${__object}/parameter/user")"

DB_TYPE="$(cat "${__object}/parameter/database-type")"


@@ 102,7 111,7 @@ done
. "${__type}/files/forgejo.conf.sh"  # This defines FORGEJO_COFIG
echo "${FORGEJO_CONFIG}" | __single_binary_service forgejo \
	--user "${USER}" \
	--service-args "web --config /etc/forgejo.conf --work-path '${FORGEJO_DIR}' --custom-path '${FORGEJO_DIR}/custom'" \
	--service-args "web --config '${ETC_DIR}/forgejo.conf' --work-path '${FORGEJO_DIR}' --custom-path '${FORGEJO_DIR}/custom'" \
	--version "${FORGEJO_TYPE_VERSION}" \
	--checksum "${FORGEJO_CHECKSUM}" \
	--url "${FORGEJO_DOWNLOAD_URL}" \


@@ 118,15 127,18 @@ echo "${FORGEJO_CONFIG}" | __single_binary_service forgejo \
export require="__single_binary_service/forgejo"
__directory "${FORGEJO_SECRET_DIR}" --owner "${USER}" --mode 0700
export require="${require} __directory${FORGEJO_SECRET_DIR}"
__file "${FORGEJO_SECRET_DIR}/secret_key" --owner "${USER}" --mode 0440 --source '-' <<EOF
__file "${FORGEJO_SECRET_DIR}/secret_key" \
	--owner "${USER}" --mode 0440 --source '-' <<EOF
${SECRET_KEY}
EOF
__file "${FORGEJO_SECRET_DIR}/lfs_jwt_secret" --source '-' <<EOF
__file "${FORGEJO_SECRET_DIR}/lfs_jwt_secret" \
	--owner "${USER}" --mode 0400 --source '-' <<EOF
${LFS_JWT_SECRET}
EOF

FORGEJO_INTERNAL_TOKEN="${FORGEJO_SECRET_DIR}/internal_token"

__file  "${FORGEJO_INTERNAL_TOKEN}" --owner "${USER}" --mode 0440  --state exists \
__file  "${FORGEJO_INTERNAL_TOKEN}" \
	--owner "${USER}" --mode 0440  --state exists \
	--onchange "! test -s '${FORGEJO_INTERNAL_TOKEN}' && forgejo generate secret INTERNAL_TOKEN > '${FORGEJO_INTERNAL_TOKEN}'"
# oauth2_jwt_signing.key on the other hand will be an error if it is invalid