Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,21 @@ repos:
- id: foxylint-imports
name: Import Modules not Names
description: disallows the from_x_import_y import statement
entry: foxylint-imports
entry: foxylint-main imports
language: python
types: [python]
args:
- "--exclude=tests/fixtures/*.py"
- "--exclude=pre-commit-sentinels/**/*.py"
- "--accept=/from mylogging/"
- id: foxylint-loggingcase
name: Enforce lowercase logging
description: do not capitalize sentences in log messages like you would in ordinary English
entry: foxylint-main loggingcase
language: python
types: [python]
args:
- "--exclude=tests/fixtures/*.py"
- id: yaml-not-yml
name: YAML files must end with .yaml
description: disallows the .yml suffix, allows only .yaml
Expand Down
8 changes: 7 additions & 1 deletion .pre-commit-hooks.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
- id: foxylint-imports
name: Import Modules not Names
description: disallows the from_x_import_y import statement
entry: foxylint-imports
entry: foxylint-main imports
language: python
types: [python]
- id: foxylint-loggingcase
name: Enforce lowercase logging
description: do not capitalize sentences in log messages like you would in ordinary English
entry: foxylint-main loggingcase
language: python
types: [python]
- id: yaml-not-yml
Expand Down
41 changes: 34 additions & 7 deletions foxylint/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import os
import glob
import foxylint.imports
import foxylint.loggingcase


def red(text):
Expand All @@ -12,11 +13,7 @@ def bold(text):
return click.secho(text, fg='white', bold=True)


@click.command()
@click.argument('files', nargs=-1, type=click.Path())
@click.option('--exclude', '-e', multiple=True)
@click.option('--accept', multiple=True)
def main(files, exclude, accept):
def _find_files(files, exclude):
excluded = []
for pattern in exclude:
excluded.extend(glob.glob(pattern, recursive=True))
Expand All @@ -29,8 +26,10 @@ def main(files, exclude, accept):
if os.path.abspath(file) not in excluded:
files.append(file)

accept = [pattern.strip('/') for pattern in accept]
findings = foxylint.imports.analyze(files, acceptable_patterns=accept)
return files


def _show_findings(findings):
bad_files = 0
for file, analysis in findings.items():
if analysis['ok']:
Expand All @@ -45,3 +44,31 @@ def main(files, exclude, accept):
quit(1)
else:
quit(0)


@click.group()
@click.pass_context
def main(context):
pass


@main.command()
@click.pass_context
@click.argument('files', nargs=-1, type=click.Path())
@click.option('--exclude', '-e', multiple=True)
@click.option('--accept', multiple=True)
def imports(context, files, exclude, accept):
files = _find_files(files, exclude)
accept = [pattern.strip('/') for pattern in accept]
findings = foxylint.imports.analyze(files, acceptable_patterns=accept)
_show_findings(findings)


@main.command()
@click.pass_context
@click.argument('files', nargs=-1, type=click.Path())
@click.option('--exclude', '-e', multiple=True)
def loggingcase(context, files, exclude):
files = _find_files(files, exclude=exclude)
findings = foxylint.loggingcase.analyze(files)
_show_findings(findings)
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "foxylint"
version = "1.2.0"
version = "1.3.0"
description = ""
authors = ["Yoav Kleinberger <haarcuba@gmail.com>"]
license = "MIT"
Expand All @@ -23,5 +23,5 @@ build-backend = "poetry.core.masonry.api"


[tool.poetry.scripts]
foxylint-imports = 'foxylint.main:main'
foxylint-main = 'foxylint.main:main'
foxylint-noyml = 'foxylint.noyml:main'