diff --git a/scripts/lint.sh b/scripts/lint.sh index 38dabfbf31..2b6fd07185 100755 --- a/scripts/lint.sh +++ b/scripts/lint.sh @@ -18,7 +18,7 @@ IGNORED_DIRS="^third_party.*|^msgq.*|^msgq_repo.*|^opendbc.*|^opendbc_repo.*|^ce function run() { shopt -s extglob case $1 in - $SKIP ) return 0 ;; + $SKIP | $RUN ) return 0 ;; esac echo -en "$1" @@ -63,29 +63,46 @@ function run_tests() { function help() { echo "A fast linter" echo "" - echo -e "${BOLD}${UNDERLINE}Usage:${NC} op lint [OPTIONS]" + echo -e "${BOLD}${UNDERLINE}Usage:${NC} op lint [TESTS] [OPTIONS]" + echo "" + echo -e "${BOLD}${UNDERLINE}Tests:${NC}" + echo -e " ${BOLD}ruff${NC}" + echo -e " ${BOLD}mypy${NC}" + echo -e " ${BOLD}lint-imports${NC}" + echo -e " ${BOLD}codespell${NC}" + echo -e " ${BOLD}check_added_large_files${NC}" + echo -e " ${BOLD}check_shebang_scripts_are_executable${NC}" echo "" echo -e "${BOLD}${UNDERLINE}Options:${NC}" echo -e " ${BOLD}-f, --fast${NC}" echo " Skip slow tests" echo -e " ${BOLD}-s, --skip${NC}" - echo " Specify a test to skip" + echo " Specify tests to skip separated by spaces" echo "" echo -e "${BOLD}${UNDERLINE}Examples:${NC}" - echo " op lint --skip mypy --skip ruff" - echo " Skip the ruff and mypy check" + echo " op lint mypy ruff" + echo " Only run the mypy and ruff tests" + echo "" + echo " op lint --skip mypy ruff" + echo " Skip the mypy and ruff tests" + echo "" + echo " op lint" + echo " Run all the tests" } -while true; do +SKIP="" +RUN="" +while [[ $# -gt 0 ]]; do case $1 in -f | --fast ) shift 1; FAST="1" ;; - -s | --skip ) shift 1; SKIP+="$1|"; shift 1 ;; + -s | --skip ) shift 1; SKIP=" " ;; -h | --help | -help | --h ) help; exit 0 ;; - * ) break ;; + * ) if [[ -n $SKIP ]]; then SKIP+="$1 "; else RUN+="$1 "; fi; shift 1 ;; esac done -SKIP="@($(echo $SKIP | sed 's/|$//'))" +RUN=$([ -z "$RUN" ] && echo "" || echo "!($(echo $RUN | sed 's/ /|/g'))") +SKIP="@($(echo $SKIP | sed 's/ /|/g'))" GIT_FILES="$(git ls-files | sed -E "s/$IGNORED_FILES|$IGNORED_DIRS//g")" ALL_FILES=""