diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..d84a51a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,47 @@ +name: CI + +on: [push, pull_request] + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get -y install libxml2-utils + + - name: Validate against XSD schema + run: | + echo "::group::XSD Schema Validation" + + # Run validation and capture output + if xmllint --noout --schema Servers.xsd Servers.xml 2>&1 | tee validation_output.txt; then + # Check if there were any validation errors in the output + if grep -q "Schemas validity error\|fails to validate" validation_output.txt; then + echo "Validation errors found, creating annotations..." + # Parse xmllint output and create annotations + while IFS= read -r line; do + if [[ $line == *"Servers.xml:"* && $line == *"Schemas validity error"* ]]; then + # Extract line number and error message + if [[ $line =~ Servers\.xml:([0-9]+): ]]; then + line_num="${BASH_REMATCH[1]}" + error_msg=$(echo "$line" | sed 's/.*Schemas validity error : //') + echo "::error file=Servers.xml,line=${line_num}::${error_msg}" + fi + fi + done < validation_output.txt + echo "::error file=Servers.xml::XSD validation failed - see annotations above" + echo "::endgroup::" + exit 1 + else + echo "XSD validation passed" + echo "::endgroup::" + fi + else + echo "::error file=Servers.xml::XML parsing failed" + echo "::endgroup::" + exit 1 + fi diff --git a/.github/workflows/xmllint.yml b/.github/workflows/xmllint.yml deleted file mode 100644 index 361cf4e..0000000 --- a/.github/workflows/xmllint.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: xmllint - -on: [push, pull_request] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Install xmllint - run: sudo apt-get -y install libxml2-utils - - name: Check that Servers.xml at least parses cleanly - run: | - xmllint Servers.xml diff --git a/Servers.xml b/Servers.xml index 48387e5..cd674cf 100644 --- a/Servers.xml +++ b/Servers.xml @@ -56,7 +56,7 @@ df.drunkenfell.com 9000 PvE - + Stable http://www.drunkenfell.com https://discord.gg/e365fBcuaB @@ -80,7 +80,7 @@ serafino.ddns.net 9060 PvE - + Stable https://discord.gg/GHKk4ck @@ -92,7 +92,7 @@ serafino.ddns.net 9070 PvP - + Stable https://discord.gg/GHKk4ck @@ -104,7 +104,7 @@ levistras.acportalstorm.com 9000 PvE - + Stable https://discord.gg/TtkcWbv @@ -127,7 +127,7 @@ ACE thistlecrown.ddns.net 9000 - PVE + PvE Stable https://discord.gg/uhZ3hn7 @@ -199,7 +199,7 @@ ACE www.asheron4fun.com 9050 - PVE + PvE Stable https://web.asheron4fun.com/ https://discord.gg/afnQNXj @@ -212,7 +212,7 @@ asheronscall.hopto.org 9000 PvE - + Stable https://discord.gg/VSFtYXN3v7 @@ -247,7 +247,7 @@ ACE morgentau.online 9000 - PVE + PvE Development https://forum.morgentau.online/ https://discord.gg/gJCYTr5fPU @@ -464,7 +464,7 @@ ebontide.zapto.org 9000 PvP - + Stable https://discord.gg/r4b9yeNY diff --git a/Servers.xsd b/Servers.xsd new file mode 100644 index 0000000..533edc8 --- /dev/null +++ b/Servers.xsd @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +