#!/bin/bash
# Modified from https://github.com/chaitanyagupta/gitutils

[ -n "$CI" ] && exit 0

GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$GIT_BRANCH" = "main" ]; then
    yarn lint-staged --relative
    lintStatus=$?

    if [ $lintStatus -ne 0 ]; then
        echo "❌ Linting failed"
        exit 1
    fi
fi

green='\033[0;32m'
no_color='\033[0m'
grey='\033[0;90m'
red='\033[0;31m'

ROOT_DIR=$(git rev-parse --show-cdup)
SUBMODULES=$(grep path ${ROOT_DIR}.gitmodules | sed 's/^.*path = //')
MOD_SUBMODULES=$(git diff --cached --name-only --ignore-submodules=none | grep -F "$SUBMODULES")

echo -e "Checking submodules ${grey}(pre-commit hook)${no_color} "

# If no modified submodules, exit with status code 0, else prompt the
# user and exit accordingly
if [[ -n "$MOD_SUBMODULES" ]]; then
    echo "Submodules to be committed:"
    echo "  (use \"git reset HEAD <file>...\" to unstage)"
    echo

    for SUB in $MOD_SUBMODULES
    do
        echo -e "\t${green}modified:\t$SUB${no_color}"
    done
    echo
    echo -e "${red}Aborting commit due to submodule update. Please unstage the submodule(s) and commit again.${no_color}"
    exit 1
else
    echo "No submodules in commit, continuing..."
    exit 0
fi