#!/bin/bash
git diff --diff-filter=d --staged --name-only | grep -e '\.swift$' | while read line; do
  if [[ $line == *"/Generated"* ]]; then
    echo "IGNORING GENERATED FILE: " "$line";
  else
    mint run swiftformat swiftformat "${line}";
    git add "$line";
  fi
done

LINT=$(which mint)
if [[ -e "${LINT}" ]]; then
    # Export files in SCRIPT_INPUT_FILE_$count to lint against later
    count=0
    while IFS= read -r file_path; do
        export SCRIPT_INPUT_FILE_$count="$file_path"
        count=$((count + 1))
    done < <(git diff --name-only --cached --diff-filter=d | grep ".swift$")
    export SCRIPT_INPUT_FILE_COUNT=$count

    if [ "$count" -eq 0 ]; then
        echo "No files to lint!"
        exit 0
    fi

    echo "Found $count lintable files! Linting now.."
    mint run swiftlint --use-script-input-files --strict --config .swiftlint.yml
    RESULT=$? # swiftline exit value is number of errors

    if [ $RESULT -eq 0 ]; then
        echo "🎉  Well done. No violation."
    fi
    exit $RESULT
else
    echo "⚠️  WARNING: SwiftLint not found"
    echo "⚠️  You might want to edit .git/hooks/pre-commit to locate your swiftlint"
    exit 0
fi