#!/bin/bash
# Template generated by https://github.com/coreos/repo-templates; do not edit downstream

set -euo pipefail

main() {
    local found_errors="false"
    # Let's start with error, then we can do warning, info, style
    local -r severity="error"

    while IFS= read -r -d '' f; do
        # Skip non-text files that are very unlikely to be shell scripts
        if [[ "$(file -b --mime-type "${f}" | sed 's|/.*||')" != "text" ]]; then
            continue
        fi
        shebang="$(head -1 "${f}")"
        if [[ "${f}" == *.sh ]] || \
            [[ ${shebang} =~ ^#!/.*/bash.* ]] || \
            [[ ${shebang} =~ ^#!/.*/env\ bash ]]; then
            echo "[+] Checking ${f}"
            shellcheck --external-sources --shell bash --severity="${severity}" "${f}" || found_errors="true"
            bash -n "${f}" || found_errors="true"
        fi
    done< <(find . -path "./.git" -prune -o -path "./vendor" -prune -o -type f -print0)

    if [[ "${found_errors}" != "false" ]]; then
        echo "[+] Found errors with ShellCheck"
        exit 1
    fi

    echo "[+] No error found with ShellCheck"
    exit 0
}

main "${@}"
