Move scripts to a .scripts/ directory.
This commit is contained in:
parent
3a64e23583
commit
ca8099afb2
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -7,3 +7,4 @@ venv/
|
||||||
.potodo/
|
.potodo/
|
||||||
locales/
|
locales/
|
||||||
.venv/
|
.venv/
|
||||||
|
.envrc
|
||||||
|
|
38
.scripts/line-length.py
Normal file
38
.scripts/line-length.py
Normal 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)
|
13
Makefile
13
Makefile
|
@ -150,18 +150,7 @@ spell: ensure_test_prerequisites $(DESTS)
|
||||||
.PHONY: line-length
|
.PHONY: line-length
|
||||||
line-length:
|
line-length:
|
||||||
@echo "Searching for long lines..."
|
@echo "Searching for long lines..."
|
||||||
# soft limit is used for splitables lines (with spaces in them)
|
@python .scripts/line-length.py *.po */*.po
|
||||||
# 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
|
|
||||||
|
|
||||||
.PHONY: sphinx-lint
|
.PHONY: sphinx-lint
|
||||||
sphinx-lint: ensure_test_prerequisites
|
sphinx-lint: ensure_test_prerequisites
|
||||||
|
|
Loading…
Reference in New Issue
Block a user