#!/bin/bash

set -eu

error() {
  echo -e "\e[31m$1\e[0m"
}

main_branch=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')
working_branch=$(git rev-parse --abbrev-ref HEAD)

if [ "$working_branch" == "$main_branch" ]; then
    error "Interdiction de commiter sur la branche principale '$main_branch' !"
    exit 1
fi

main_working_diff=$(git rev-list --count origin/$main_branch..$working_branch)

# --amend can be used to change the last commit
if ps -ocommand= -p $PPID | grep -e '--amend'; then
    if [ "$main_working_diff" -lt 1 ]; then
        last_commit_title=$(git log $working_branch --format=%s -n 1)

        error "Attention, vous ne pouvez *amender* le commit antérieur à votre branche : 'last_commit_title'."
        exit 1
    fi

    exit 0
fi

if [ "$main_working_diff" -gt 0 ]; then
    last_commit_title=$(git log $working_branch --format=%s -n 1)

    error "Vous avez déjà un commit défini : '$last_commit_title'. Faites un « git commit --amend » pour le modifier."
    exit 1
fi
