44 lines
1.3 KiB
Bash
Executable file
44 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
set -eu
|
|
|
|
: "${FORGEJO_ADMIN_USERNAME:?FORGEJO_ADMIN_USERNAME must be set}"
|
|
: "${FORGEJO_ADMIN_EMAIL:?FORGEJO_ADMIN_EMAIL must be set}"
|
|
: "${FORGEJO_ADMIN_PASSWORD:?FORGEJO_ADMIN_PASSWORD must be set}"
|
|
|
|
shell_quote() {
|
|
printf "'%s'" "$(printf '%s' "$1" | sed "s/'/'\\\\''/g")"
|
|
}
|
|
|
|
run_forgejo() {
|
|
command="exec /usr/local/bin/forgejo"
|
|
for argument in "$@"; do
|
|
command="$command $(shell_quote "$argument")"
|
|
done
|
|
su forgejo -s /bin/sh -c "$command"
|
|
}
|
|
|
|
if ! run_forgejo -c "$GITEA_APP_INI" migrate >/tmp/forgejo-migrate.log 2>&1; then
|
|
cat /tmp/forgejo-migrate.log >&2
|
|
exit 1
|
|
fi
|
|
|
|
if run_forgejo -c "$GITEA_APP_INI" admin user create \
|
|
--username "$FORGEJO_ADMIN_USERNAME" \
|
|
--password "$FORGEJO_ADMIN_PASSWORD" \
|
|
--email "$FORGEJO_ADMIN_EMAIL" \
|
|
--admin \
|
|
--must-change-password=false >/tmp/forgejo-admin-create.log 2>&1; then
|
|
printf 'Created Forgejo admin user %s.\n' "$FORGEJO_ADMIN_USERNAME"
|
|
exit 0
|
|
fi
|
|
|
|
run_forgejo -c "$GITEA_APP_INI" admin user list >/tmp/forgejo-admin-list.log 2>/dev/null || true
|
|
while read -r _id username _rest; do
|
|
if [ "$username" = "$FORGEJO_ADMIN_USERNAME" ]; then
|
|
printf 'Forgejo admin user %s already exists; leaving it unchanged.\n' "$FORGEJO_ADMIN_USERNAME"
|
|
exit 0
|
|
fi
|
|
done < /tmp/forgejo-admin-list.log
|
|
|
|
cat /tmp/forgejo-admin-create.log >&2
|
|
exit 1
|