From b8f3bb107e79c5816ce22930d67d03a9202f718c Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 24 Jul 2018 02:00:13 -0400 Subject: [PATCH] build: add lint-py which uses flake8 PR-URL: https://github.com/nodejs/node/pull/21952 Reviewed-By: Refael Ackermann --- Makefile | 24 +++++++++++++++++++++++- tools/pip/.gitignore | 2 ++ tools/pip/sitecustomize.py | 3 +++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 tools/pip/.gitignore create mode 100644 tools/pip/sitecustomize.py diff --git a/Makefile b/Makefile index dadc1e91ec5b72..88be22fcace3ec 100644 --- a/Makefile +++ b/Makefile @@ -1208,6 +1208,28 @@ lint-addon-docs: test/addons/.docbuildstamp cpplint: lint-cpp @echo "Please use lint-cpp instead of cpplint" +.PHONY: lint-py-build +# python -m pip install flake8 +# Try with '--system' is to overcome systems that blindly set '--user' +lint-py-build: + @echo "Pip installing flake8 linter on $(shell $(PYTHON) --version)..." + $(PYTHON) -m pip install --upgrade -t tools/pip/site-packages flake8 || \ + $(PYTHON) -m pip install --upgrade --system -t tools/pip/site-packages flake8 + +ifneq ("","$(wildcard tools/pip/site-packages)") +.PHONY: lint-py +# Lints the Python code with flake8. +# Flag the build if there are Python syntax errors or undefined names +lint-py: + PYTHONPATH=tools/pip $(PYTHON) -m flake8 . \ + --count --show-source --statistics --select=E901,E999,F821,F822,F823 \ + --exclude=deps,lib,src,tools/*_macros.py,tools/gyp,tools/jinja2,tools/pip +else +lint-py: + @echo "Python linting with flake8 is not avalible" + @echo "Run 'make lint-py-build'" +endif + .PHONY: lint .PHONY: lint-ci ifneq ("","$(wildcard tools/node_modules/eslint/)") @@ -1221,7 +1243,7 @@ lint: ## Run JS, C++, MD and doc linters. CONFLICT_RE=^>>>>>>> [0-9A-Fa-f]+|^<<<<<<< [A-Za-z]+ # Related CI job: node-test-linter -lint-ci: lint-js-ci lint-cpp lint-md lint-addon-docs +lint-ci: lint-js-ci lint-cpp lint-py lint-md lint-addon-docs @if ! ( grep -IEqrs "$(CONFLICT_RE)" benchmark deps doc lib src test tools ) \ && ! ( find . -maxdepth 1 -type f | xargs grep -IEqs "$(CONFLICT_RE)" ); then \ exit 0 ; \ diff --git a/tools/pip/.gitignore b/tools/pip/.gitignore new file mode 100644 index 00000000000000..03eb26e01302fd --- /dev/null +++ b/tools/pip/.gitignore @@ -0,0 +1,2 @@ +*.pyc +site-packages \ No newline at end of file diff --git a/tools/pip/sitecustomize.py b/tools/pip/sitecustomize.py new file mode 100644 index 00000000000000..aa8087c8989604 --- /dev/null +++ b/tools/pip/sitecustomize.py @@ -0,0 +1,3 @@ +import os +import site +site.addsitedir(os.path.dirname(os.path.realpath(__file__)) + '/site-packages')