2021-08-24 15:30:35 +02:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
import argparse
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
|
|
def countFileLines(filename: str) -> int:
|
|
|
|
with open(filename) as f:
|
|
|
|
return len(f.readlines())
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
parser = argparse.ArgumentParser()
|
2023-07-29 19:03:17 +02:00
|
|
|
parser.add_argument(
|
|
|
|
"currentwarnings",
|
|
|
|
help="Name of file which contains the current warnings of the repo.",
|
|
|
|
)
|
|
|
|
parser.add_argument(
|
|
|
|
"newwarnings",
|
|
|
|
help="Name of file which contains the *new* warnings of the repo.",
|
|
|
|
)
|
2021-08-24 15:30:35 +02:00
|
|
|
parser.add_argument("--pr-message", action="store_true")
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
currentLines = countFileLines(args.currentwarnings)
|
|
|
|
newLines = countFileLines(args.newwarnings)
|
|
|
|
if newLines > currentLines:
|
|
|
|
stderr = False
|
|
|
|
if args.pr_message:
|
|
|
|
delta = newLines - currentLines
|
|
|
|
|
|
|
|
if delta == 1:
|
|
|
|
print(f"⚠️ This PR introduces a warning:")
|
|
|
|
else:
|
|
|
|
print(f"⚠️ This PR introduces {delta} warnings:")
|
|
|
|
|
|
|
|
if delta > 100:
|
|
|
|
stderr = True
|
|
|
|
print("See log for details.")
|
|
|
|
else:
|
|
|
|
print()
|
|
|
|
print("There are more warnings now. Go fix them!")
|
|
|
|
print("\tCurrent warnings: " + str(currentLines))
|
|
|
|
print("\tNew warnings: " + str(newLines))
|
|
|
|
print()
|
|
|
|
|
|
|
|
with open(args.newwarnings) as new:
|
|
|
|
new = new.readlines()
|
|
|
|
with open(args.currentwarnings) as current:
|
|
|
|
current = current.readlines()
|
|
|
|
for newLine in new:
|
2021-08-26 10:10:41 +02:00
|
|
|
if "warning: previous declaration of" in newLine:
|
|
|
|
continue
|
|
|
|
|
2021-08-24 15:30:35 +02:00
|
|
|
if newLine not in current:
|
|
|
|
if stderr:
|
|
|
|
print(newLine.strip(), file=sys.stderr)
|
|
|
|
else:
|
|
|
|
print("- " + newLine.strip())
|
|
|
|
elif newLines < currentLines:
|
|
|
|
delta = currentLines - newLines
|
|
|
|
|
|
|
|
if args.pr_message:
|
|
|
|
print(f"✅ This PR fixes {delta} warnings!")
|
|
|
|
else:
|
|
|
|
print(f"{delta} warnings fixed.")
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|