Move scripts to a .scripts/ directory.
ci/woodpecker/push/woodpecker Pipeline was successful Details
ci/woodpecker/pr/woodpecker Pipeline was successful Details

This commit is contained in:
Julien Palard 2023-03-30 09:40:37 +02:00
parent 3a64e23583
commit ca8099afb2
Signed by: mdk
GPG Key ID: 0EFC1AC1006886F8
4 changed files with 40 additions and 12 deletions

1
.gitignore vendored
View File

@ -7,3 +7,4 @@ venv/
.potodo/
locales/
.venv/
.envrc

38
.scripts/line-length.py Normal file
View File

@ -0,0 +1,38 @@
#!/usr/bin/env python
"""Measure line length in given files, run as:
python line-length.py *.po
It does not count zero-width caracters from the Mn Unicode category
(Nonspacing Mark).
It returns 0 on success, 1 on failure.
"""
from unicodedata import category
import fileinput
import sys
SOFT_LIMIT = 80 # used for splitables lines (with spaces in them)
HARD_LIMIT = 88 # used for non-splitables lines (without spaces in them)
def clean(line):
return "".join(char for char in line if category(char) != "Mn").rstrip("\n")
return_code = 0
for line in fileinput.input(encoding="utf-8"):
line = clean(line)
limit = SOFT_LIMIT if line.count(" ") > 1 else HARD_LIMIT
if len(line) > limit:
print(
f"{fileinput.filename()}:{fileinput.filelineno()} line too long "
f"({len(line)} > {limit} characters)",
file=sys.stderr,
)
return_code = 1
sys.exit(return_code)

View File

@ -150,18 +150,7 @@ spell: ensure_test_prerequisites $(DESTS)
.PHONY: line-length
line-length:
@echo "Searching for long lines..."
# soft limit is used for splitables lines (with spaces in them)
# hard limit is used for non-splitables lines (without spaces in them)
@python -c 'soft_limit=80; \
hard_limit=88; \
from unicodedata import category; \
import fileinput as fi; \
clean = lambda line: "".join(char for char in line if category(char) != "Mn").strip(); \
[print(f"""{fi.filename()}:{fi.filelineno()} line too long ({len(line)} > {soft_limit if line.count(" ") > 1 else hard_limit} characters)""") \
for _line in fi.input(encoding="utf-8") \
for line in [clean(_line)] \
if line.count(" ") > 1 and len(line) > soft_limit or line.count(" ") <= 1 and len(line) > hard_limit]' \
*.po */*.po
@python .scripts/line-length.py *.po */*.po
.PHONY: sphinx-lint
sphinx-lint: ensure_test_prerequisites