mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-11 23:23:28 +01:00
Upgrades SpacemanDMM + Dreamchecker CI (#24247)
* update to suite 1.8 * lets go annotate dm * okay lets not fuck up * testing commit * return it to the natural state
This commit is contained in:
@@ -39,15 +39,9 @@ jobs:
|
||||
python -m tools.ci.check_icon_conflicts
|
||||
python -m tools.ci.check_icon_dupenames
|
||||
python -m tools.maplint.source --github
|
||||
DREAMCHECKER_EXIT_CODE=0
|
||||
~/dreamchecker > ${GITHUB_WORKSPACE}/output-annotations.txt 2>&1 || DREAMCHECKER_EXIT_CODE=$?
|
||||
echo 'DREAMCHECKER_ANNOTATED=1' >> "$GITHUB_ENV"
|
||||
exit $DREAMCHECKER_EXIT_CODE
|
||||
- name: Annotate Lints
|
||||
uses: yogstation13/DreamAnnotate@v2
|
||||
if: ${{ always() && env.DREAMCHECKER_ANNOTATED == '1' }}
|
||||
with:
|
||||
outputFile: output-annotations.txt
|
||||
- name: Run DreamChecker
|
||||
shell: bash
|
||||
run: ~/dreamchecker 2>&1 | bash tools/ci/annotate_dm.sh
|
||||
|
||||
odlint:
|
||||
name: Lint with OpenDream
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# This file has all the information on what versions of libraries are thrown into the code
|
||||
# For dreamchecker
|
||||
export SPACEMANDMM_TAG=suite-1.7.1
|
||||
export SPACEMANDMM_TAG=suite-1.8
|
||||
# For TGUI
|
||||
export NODE_VERSION=20
|
||||
# Stable Byond Major
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
import sys
|
||||
import re
|
||||
import os.path as path
|
||||
|
||||
# Usage: python3 annotate_dm.py [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/ci/annotate_dm.sh [filename]")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
python tools/ci/annotate_dm.py "$@"
|
||||
Reference in New Issue
Block a user