diff --git a/script/rubocop-diff.sh b/script/rubocop-diff.sh index 32dbef1ca8..d1dca94e04 100755 --- a/script/rubocop-diff.sh +++ b/script/rubocop-diff.sh @@ -1,14 +1,41 @@ #!/bin/bash # # While you are developing, you can call this script to check all -# changed files. And then you can also tell Git to check before every +# changed files. You can auto-correct them if you wish: +# +# ./script/rubocop-diff.sh -a +# +# And then you can also tell Git to check before every # commit by adding this line to your `.git/hooks/pre-commit` file: # # ./script/rubocop-diff.sh --cached || exit 1 # -rubocop="`dirname $0`/../bin/rubocop" -cached="$1" # may be empty +# If you prefer to use faster boot times of the Rubocop Server then you can +# define your way of calling rubocop: +# +# export RUBOCOP_BIN="rubocop --server" +# +# Or locked to the bundled version (needs update after `bundle update`): +# +# export RUBOCOP_BIN="`bundle show rubocop`/exe/rubocop --server" +# +# I don't know how to set that automatically though. +# +# But I observed some performance improvement: +# +# * Using default binstup with spring: boot: 6.2s, repeat: 0.4s, 0.4s, ... +# * Using rubocop server binstub without bundler: boot: 2s, repeat: 1s, 0.3s, ... +# * Using rubocop executable directly: boot: 2.1s, repeat: 1s, 0.16s, ... +# +# The default binstub is still the safest, always using the bundled version. +: ${RUBOCOP_BIN="`dirname $0`/../bin/rubocop"} + +if [ "$1" = "--cached" ]; then + cached="$1" +else + rubocop_opt="$1" +fi if git diff $cached --diff-filter=ACMR HEAD --quiet; then # nothing changed @@ -17,7 +44,9 @@ fi exec git diff $cached --name-only --relative --diff-filter=ACMR HEAD |\ xargs \ - $rubocop --force-exclusion \ - --fail-level A \ - --format simple \ - --parallel --cache true + $RUBOCOP_BIN \ + --force-exclusion \ + --fail-level A \ + --format simple \ + --parallel --cache true \ + "$rubocop_opt"