mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 18:11:47 +00:00
* 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
52 lines
1.6 KiB
Python
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()
|