#!/usr/bin/env bash

# shellcheck source=bin/_config.sh
source "$(dirname "${BASH_SOURCE[0]}")/_config.sh"

declare diff_from
declare -a paths
declare -a args

# Parse options
for arg in "$@"
do
    case $arg in
        --diff-only=*)
            diff_from="${arg#*=}"
            shift
            ;;
        -*)
            args+=("$arg")
            shift
            ;;
        *)
            paths+=("$arg")
            shift
            ;;
    esac
done

if [[ -n "${diff_from}" ]]; then
    # Run pylint only on modified files located in src/backend
    # (excluding deleted files and migration files)
    # shellcheck disable=SC2207
    paths=($(git diff "${diff_from}" --name-only --diff-filter=d -- src/backend ':!**/migrations/*.py' | grep -E '^src/backend/.*\.py$'))
fi

# Fix docker vs local path when project sources are mounted as a volume
read -ra paths <<< "$(echo "${paths[@]}" | sed "s|src/backend/||g")"
_dc_run --no-deps app-dev pylint "${paths[@]}" "${args[@]}"
