Files
fulpstation/tools/dm_annotator/__main__.py
Nick 2f028886fc Late September TGU: Bitrunning and other stuff probably (#1053)
* September TGU: Initial commit

* September TGU: Updates wounds

* some mob changes

* September TGU: Removed infil tool parcel

* September TGU: Spider path change

* September TGU: Updated m_intent to move_intent

* September TGU: Refactor of no_transform to trait

* September TGU: Removes BEPIS machines o7

* September TGU: Vomit refactor

* September TGU: Fixs typo

* September TGU: FULP EDIT
Adds our greyscales folder to a sanity check

* September TGU: Implemented icon_for for beefmen

* September TGU: Occupancy limits for shuttles

* September TGU: Added bitrunning to helio

* September TGU: Added bitrunning to selene

* September TGU: Pubbystation bitrunning

* September TGU: Added cams to bitrunner rooms

* September TGU: Appeasing linter

* September TGU: More linter appeasment

* More linter

* i love unit testing !!!

* more unit test fixes

* Maybe fixes screenshot test

* Removes bitrunning unit test.
This exact change has already been made on TG's master, right after
i copied stuff over from there

* Nah we just ignore it whatever

* Accidentally updated maps.txt oopsie

* Removes bitrunning unit tests
This has already been done on TG

* Fixed TGUI (missed a tg edit)

* Made a TG edit more visible

* Removing self-assigning objectives until we have a policy on that

* Maps now use proper MOD crate

* Ports chaplain offering fixes

* Ported #78622 from TG

* Merges helio rewiring

* oooooh spooky
Ports #79062 from upstream

* Fixing mapping issues
2023-10-21 16:48:16 -03:00

52 lines
1.6 KiB
Python

import sys
import re
import os.path as path
# Usage: tools/bootstrap/python -m dm_annotator [filename]
# If filename is not provided, stdin is checked instead
def red(text):
return "\033[31m" + str(text) + "\033[0m"
def green(text):
return "\033[32m" + str(text) + "\033[0m"
def yellow(text):
return "\033[33m" + str(text) + "\033[0m"
def annotate(raw_output):
# Remove ANSI escape codes
raw_output = re.sub(r'(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]', '', raw_output)
print("::group::DreamChecker Output")
print(raw_output)
print("::endgroup::")
annotation_regex = r'(?P<filename>.*?), line (?P<line>\d+), column (?P<column>\d+):\s{1,2}(?P<type>error|warning): (?P<message>.*)'
has_issues = False
print("DM Code Annotations:")
for annotation in re.finditer(annotation_regex, raw_output):
print(f"::{annotation['type']} file={annotation['filename']},line={annotation['line']},col={annotation['column']}::{annotation['message']}")
has_issues = True
if not has_issues:
print(green("No DM issues found"))
def main():
if len(sys.argv) > 1:
if not path.exists(sys.argv[1]):
print(red(f"Error: Annotations file '{sys.argv[1]}' does not exist"))
sys.exit(1)
with open(sys.argv[1], 'r') as f:
annotate(f.read())
elif not sys.stdin.isatty():
annotate(sys.stdin.read())
else:
print(red("Error: No input provided"))
print("Usage: tools/bootstrap/python -m dm_annotator [filename]")
sys.exit(1)
if __name__ == '__main__':
main()