#!/usr/bin/env bash

set -euo pipefail

fail () {
    echo "pre-push hook: $@" >&2
    echo "    --no-verify to bypass this hook" >&2
    exit 1
}

# only push to oss when the enterprise version is absent
# ====================
oss="git@github.com:hashicorp/nomad.git"
ent="git@github.com:hashicorp/nomad-enterprise.git"
if [ "$2" != "$ent" -a -f version/version_ent.go ]; then
    fail "found enterprise version file version/version_ent.go while pushing to oss remote"
fi

# do not push directly to main, stable-*, release/*
# ====================
while read local_ref local_sha remote_ref remote_sha
do
    if [ "$remote_ref" = "refs/heads/main" ]; then
        fail "refusing to push directly to main"
    fi

    if echo "$remote_ref"|grep -q 'refs/heads/stable-.*'; then
        fail "refusing to push directly to a branch prefixed \`stable-\`"
    fi

    if echo "$remote_ref"|grep -q 'refs/heads/release/.*'; then
        fail "refusing to push directly to a branch prefixed \`release/\`"
    fi
done
