Christian Boltz c34100
#!/bin/bash
Christian Boltz c34100
Christian Boltz c34100
# managed by salt - do not edit
Christian Boltz c34100
Christian Boltz c34100
BASEDIR=/home/web_static/git
Christian Boltz c34100
Christian Boltz c34100
SERVERS='{% for server in server_list %}
Christian Boltz c34100
    {{ server }}
Christian Boltz c34100
{%- endfor %}'
Christian Boltz c34100
Christian Boltz c34100
GIT_DIRS='{% for dir in git_dirs.keys() %}
Christian Boltz c34100
    {{ dir }}
Christian Boltz c34100
{%- endfor %}'
Christian Boltz c34100
Christian Boltz c34100
EXPECTED_GITMODULES="$(echo '{%- for file in expected_gitmodules.keys() %}
Christian Boltz c34100
{{ file }}
Christian Boltz c34100
{%- endfor %}' | grep .)"
Christian Boltz c34100
Christian Boltz c34100
EXPECTED_SHA256="$(echo '{%- for file, sha256 in expected_gitmodules.items() %}
Christian Boltz c34100
{{ sha256 }}  {{ file }}
Christian Boltz c34100
{%- endfor %}' | grep .)"
Christian Boltz c34100
Christian Boltz c34100
# update all git repos, exit if one of them fails (better outdated than inconsistent)
Christian Boltz c34100
cd "$BASEDIR" || exit 1
Christian Boltz c34100
for dir in $GIT_DIRS ; do
Christian Boltz 56d1b0
    cd "$BASEDIR/$dir" && git pull -q || exit 1
Christian Boltz c34100
done
Christian Boltz c34100
Christian Boltz c34100
# check if any .gitmodules appeared or disappeared
Christian Boltz c34100
cd "$BASEDIR" || exit 1
Christian Boltz c34100
test "$(find -name .gitmodules | LANG=C sort)" == "$EXPECTED_GITMODULES" || {
Christian Boltz c34100
    echo ".gitmodules added or removed, please check manually" >&2
Christian Boltz c34100
    exit 1
Christian Boltz c34100
}
Christian Boltz c34100
Christian Boltz c34100
# check if content of .gitmodules matches the known ones
Christian Boltz c34100
cd "$BASEDIR" || exit 1
Christian Boltz c34100
echo "$EXPECTED_SHA256" | sha256sum -c --quiet --strict || {
Christian Boltz c34100
    echo ".gitmodules were modified, please check manually" >&2
Christian Boltz c34100
    exit 1
Christian Boltz c34100
}
Christian Boltz c34100
Christian Boltz c34100
# sync to all servers
Christian Boltz c34100
cd $BASEDIR || exit 1
Christian Boltz c34100
for dir in *.opensuse.org ; do
Christian Boltz c34100
    for server in $SERVERS ; do
Christian Boltz 0c36f7
        rsync -az --exclude '.git' --delete-after "$@" -e ssh "$BASEDIR/$dir/" "web_static@$server:/srv/www/vhosts/$dir/"
Christian Boltz c34100
    done
Christian Boltz c34100
done
Christian Boltz c34100
Christian Boltz c34100
# vim: ts=4 expandtab