#!/bin/sh

onlystatic="yes"

if [ $# -ge 1 ]; then
    onlystatic=""
fi

set -e

pullpush_repo() {
    repo=$1
    echo $repo
    if [ ! -d $repo ]; then echo "Repo $repo does not exist, skipping"; return; fi

    cd $repo
    git pull
    git push
}

update_repo() {
    repo=$1
    echo $repo
    cd $repo

    case $repo in
        ~/.password-store)
            git checkout master
            git add .
            git commit -m "updated by $0"  || true
            git pull
            git checkout nico-privat
            ;;
        ~/vcs/cdist-workdir)
            mr update
            ;;
    esac

    git add .
    git commit -m "updated by $0 on $(hostname)"  || true
    git pull
    git push

}

REPOLIST="$HOME/.ctt $HOME/bin $HOME/vcs/notes $HOME/vcs/nico-dot-cdist $HOME/vcs/cdist-workdir/dot-cdist $HOME/vcs/ansible-main"
REPOLIST="$REPOLIST $HOME/.password-store"

PULL_PUSH_REPOS="$HOME/vcs/k8s-config/"

# First in parallel, then en sequence to spot errors
for repo in ${REPOLIST}; do echo $repo ; ( update_repo $repo  ) ; done
for repo in ${PULL_PUSH_REPOS}; do echo $repo; ( pullpush_repo $repo ) ; done


echo "Waiting for async process to finish ..."
wait
exit 0

################################################################################
# Old stuff skipped atm

echo "Starting for sync process ..."
for repo in ${REPOLIST}; do update_repo $repo ; done
for repo in ${PULL_PUSH_REPOS}; do pullpush_repo $repo ; done

# Step 2: pull/push all other repos in ~/vcs/
# We cannot commit as we do not know the state, but we
# can ensure everything committed before is pushed out

if [ $onlystatic ]; then
    exit 0
fi

set +e

for repo in ~/vcs/*; do
    echo "$repo"
    cd ${repo}
    git pull
    git push
done
