mirror of
https://github.com/unitedstates/congress-legislators.git
synced 2025-12-19 09:50:37 -05:00
38 lines
960 B
Python
Executable File
38 lines
960 B
Python
Executable File
# Check that each YAML file has been linted.
|
|
|
|
import difflib
|
|
import glob
|
|
import io
|
|
import sys
|
|
|
|
import rtyaml
|
|
|
|
ok = True
|
|
|
|
for fn in glob.glob("*.yaml"):
|
|
with open(fn) as f:
|
|
body = f.read()
|
|
|
|
# Round-trip the file. Because of the comment block at the top
|
|
# of legislators-social-media.yaml, we need to go through file-like
|
|
# streams so that rtyaml preserves it.
|
|
data = rtyaml.load(io.StringIO(body))
|
|
|
|
# Save it back to a buffer.
|
|
buf = io.StringIO()
|
|
rtyaml.dump(data, buf)
|
|
buf = buf.getvalue()
|
|
|
|
# Check that the file round-trips to the same bytes,
|
|
# except don't worry about trailing newlines because
|
|
# editors mess with the last line line ending.
|
|
if buf.rstrip() != body.rstrip():
|
|
ok = False
|
|
print(fn, "needs to be linted:")
|
|
|
|
# Show a diff.
|
|
for line in difflib.unified_diff(body.split("\n"), buf.split("\n"), fromfile='in repository', tofile='after linting', lineterm=''):
|
|
print(line)
|
|
|
|
sys.exit(0 if ok else 1)
|