#!/usr/bin/env bash

# Cause the script to exit if a single command fails
set -e  # o pipefail -v

EXCLUDE=${EXCLUDE:=".git,__pycache__,docs/source/conf.py,build,dist"}
IGNORE=${IGNORE:="C812,C813,C814,C815,C816,D100,D104,D200,D204,D205,D301,D400,D401,D402,D412,D413,DAR003,DAR103,DAR203,E203,E731,E800,E1101,N812,P101,RST201,RST203,RST210,RST213,RST301,RST304,S,W0221,W503,W504,W605,WPS0,WPS100,WPS101,WPS110,WPS111,WPS112,WPS125,WPS2,WPS300,WPS301,WPS305,WPS306,WPS309,WPS317,WPS323,WPS326,WPS331,WPS333,WPS335,WPS336,WPS337,WPS338,WPS342,WPS347,WPS348,WPS349,WPS350,WPS352,WPS402,WPS404,WPS405,WPS408,WPS410,WPS412,WPS414,WPS420,WPS421,WPS425,WPS426,WPS429,WPS430,WPS431,WPS432,WPS433,WPS434,WPS435,WPS440,WPS441,WPS5,WPS6"}
LINE_LENGTH=${LINE_LENGTH:=79}
QUOTES=${QUOTES:="double"}
# @TODO: add `--jobs`

_run_args=""
while (( "$#" )); do
  case "$1" in
    -l|--line-length)
      LINE_LENGTH=$2
      shift 2
      ;;
    --exclude)
      EXCLUDE=$2
      shift 2
      ;;
    --ignore)
      IGNORE=$2
      shift 2
      ;;
    --quotes)
      QUOTES=$2
      shift 2
      ;;
    *)
      _run_args="${_run_args} $1"
      shift
      ;;
  esac
done


flake8 \
    --exclude="${EXCLUDE}" \
    --ignore "${IGNORE}" \
    --max-line-length "${LINE_LENGTH}" \
    --max-doc-length "${LINE_LENGTH}" \
    --inline-quotes "${QUOTES}" \
    --multiline-quotes "${QUOTES}" \
    --docstring-quotes "${QUOTES}" \
    "$@"
