-
Notifications
You must be signed in to change notification settings - Fork 990
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adds pylint on only changed files. (#3038)
- Loading branch information
Showing
5 changed files
with
161 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
#!/usr/bin/env bash | ||
|
||
################################################################################ | ||
# Runs pylint on changed files using a preconfigured .pylintrc file. | ||
# | ||
# Usage: | ||
# check/pylint-changed-files [BASE_REVISION] | ||
# | ||
# You can specify a base git revision to compare against (i.e. to use when | ||
# determining whether or not a line is considered to have "changed"). To make | ||
# the tool more consistent, it actually diffs against the most recent common | ||
# ancestor of the specified id and HEAD. So if you choose 'origin/master' you're | ||
# actually diffing against the output of 'git merge-base origin/master HEAD'. | ||
# | ||
# If you don't specify a base revision, the following defaults will be tried, | ||
# in order, until one exists: | ||
# | ||
# 1. upstream/master | ||
# 2. origin/master | ||
# 3. master | ||
# | ||
# If none exists, the script fails. | ||
# | ||
# See check/pylint for linting all files. | ||
################################################################################ | ||
|
||
# Get the working directory to the repo root. | ||
cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | ||
cd "$(git rev-parse --show-toplevel)" | ||
|
||
# Figure out which revision to compare against. | ||
if [ ! -z "$1" ] && [[ $1 != -* ]]; then | ||
if [ "$(git cat-file -t $1 2> /dev/null)" != "commit" ]; then | ||
echo -e "\033[31mNo revision '$1'.\033[0m" >&2 | ||
exit 1 | ||
fi | ||
rev=$1 | ||
elif [ "$(git cat-file -t upstream/master 2> /dev/null)" == "commit" ]; then | ||
rev=upstream/master | ||
elif [ "$(git cat-file -t origin/master 2> /dev/null)" == "commit" ]; then | ||
rev=origin/master | ||
elif [ "$(git cat-file -t master 2> /dev/null)" == "commit" ]; then | ||
rev=master | ||
else | ||
echo -e "\033[31mNo default revision found to compare against. Argument #1 must be what to diff against (e.g. 'origin/master' or 'HEAD~1').\033[0m" >&2 | ||
exit 1 | ||
fi | ||
base="$(git merge-base ${rev} HEAD)" | ||
if [ "$(git rev-parse ${rev})" == "${base}" ]; then | ||
echo -e "Comparing against revision '${rev}'." >&2 | ||
else | ||
echo -e "Comparing against revision '${rev}' (merge base ${base})." >&2 | ||
rev="${base}" | ||
fi | ||
|
||
changed=$(git diff --name-only ${rev} -- \ | ||
| grep -E "^(cirq|dev_tools|examples).*" | ||
) | ||
|
||
num_changed=$(echo -e "${changed[@]}" | wc -w) | ||
|
||
# Run it. | ||
echo "Found ${num_changed} lintable files associated with changes." >&2 | ||
if [ "${num_changed}" -eq 0 ]; then | ||
exit 0 | ||
fi | ||
pylint --rcfile=dev_tools/conf/.pylintrc ${changed[@]} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters