in bigquery_etl/format_sql/format.py [0:0]
def format(paths, check=False, parallelism=8):
"""Format SQL files."""
if not paths:
query = sys.stdin.read()
formatted = reformat(query, trailing_newline=True)
if not check:
print(formatted, end="")
if check and query != formatted:
sys.exit(1)
else:
sql_files = []
for path in paths:
if os.path.isdir(path):
sql_files.extend(
filepath
for dirpath, _, filenames in os.walk(path, followlinks=True)
for filename in filenames
if filename.endswith(".sql")
# skip tests/**/input.sql
and not (path.startswith("tests") and filename == "input.sql")
for filepath in [os.path.join(dirpath, filename)]
if not any([filepath.endswith(s) for s in skip_format()])
)
elif path:
sql_files.append(path)
if not sql_files:
print("Error: no files were found to format")
sys.exit(255)
with Pool(parallelism) as pool:
results = pool.map(partial(_format_path, check), sql_files)
reformatted = sum([x[0] for x in results])
unchanged = len(sql_files) - reformatted
invalid = sum([x[1] for x in results])
print(
", ".join(
f"{number} file{'s' if number > 1 else ''}"
f"{' would be' if check else ''} {msg}"
for number, msg in [
(reformatted, "reformatted"),
(unchanged, "left unchanged"),
(invalid, "invalid"),
]
if number > 0
)
+ "."
)
if check and (reformatted or invalid):
sys.exit(1)