service-gitit/docker-entrypoint.sh

77 lines
1.8 KiB
Bash
Executable file

#!/bin/sh
set -e
set -u
GITIT_USER_EMAIL="${GITIT_USER_EMAIL:-}"
GITIT_USER_NAME="${GITIT_USER_NAME:-}"
GITIT_REMOTE_REPOSITORY="${GITIT_REMOTE_REPOSITORY:-}"
GITIT_REMOTE_DOMAIN="${GITIT_REMOTE_DOMAIN:-}"
if [ ! -f /data/gitit.conf ]; then
echo "Building config for gitit"
gitit --print-default-config > /data/gitit.conf
sed -i 's|default-extension: page|default-extension: md|' /data/gitit.conf
fi
## Check existing variables
if [ -z "$GITIT_USER_EMAIL" ]; then
>&2 echo "ERROR: Environment variable GITIT_USER_EMAIL not defined"
exit 1
fi
if [ -z "$GITIT_USER_NAME" ]; then
>&2 echo "ERROR: Environment variable GITIT_USER_NAME not defined"
exit 1
fi
# Configure GIT
CUR="$(pwd)"
mkdir -p /data/wikidata
cd /data/wikidata
if [ ! -d /data/wikidata/.git ]; then
git init
fi
git config diff.renames false
git config --global user.email "$GITIT_USER_EMAIL"
git config --global user.name "$GITIT_USER_NAME"
if [ -n "$GITIT_REMOTE_REPOSITORY" ]; then
if [ -z "$GITIT_REMOTE_DOMAIN" ]; then
>&2 echo "ERROR: Environment variable GITIT_REMOTE_DOMAIN not defined"
exit 1
fi
mkdir -p /data/ssh
if [ ! -f /data/ssh/mirror_rsa ]; then
>&2 echo "ERROR: SSH Key file /data/ssh/mirror_rsa is missing."
>&2 echo " Please create it with 'ssh-keygen -f /data/ssh/mirror_rsa' ."
exit 1
fi
git remote remove origin
git remote add origin "$GITIT_REMOTE_REPOSITORY"
mkdir -p /root/.ssh
cat > /root/.ssh/config <<-MARK
Host $GITIT_REMOTE_DOMAIN
IdentityFile /data/ssh/mirror_rsa
StrictHostKeyChecking no
MARK
chmod 600 /root/.ssh/config
chmod 700 /root/.ssh
else
>&2 echo "INFO: Environment variable GITIT_REMOTE_REPOSITORY not defined."
>&2 echo " Skipping mirror repository configuration."
fi
cd "$CUR"
if [ "$1" = 'gitit' ]; then
exec gitit "$@"
fi
exec "$@"