evo/tools/waves_n14.py

61 lines
1.7 KiB
Python

"""Волна N+14: vfbuild29 — 3 EF в aef.java. Запуск: python3 tools/waves_n14.py"""
import os, sys
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
JAVA = os.path.join(ROOT, "src/main/java")
p = os.path.join(JAVA, "defpackage/aef.java")
L = open(p, encoding="utf-8", errors="replace").read().splitlines()
ok = True
def edit(ln, old, new):
global ok
i = ln - 1
if i < len(L) and old in L[i]:
L[i] = L[i].replace(old, new, 1)
elif i < len(L) and new in L[i]:
pass
else:
ok = False
print(f"MISS {ln}: {old!r} got {(L[i] if i < len(L) else '<oob>').strip()!r}")
def insert(ln, lines, guard_prefix, marker):
global ok
i = ln - 1
if marker in L[max(0, i - 6) : i + 1]:
return
if i < len(L) and L[i].strip().startswith(guard_prefix):
L[i:i] = lines
else:
ok = False
print(f"INS-MISS {ln}: guard {guard_prefix!r} got {L[i].strip()[:60]!r}")
edit(186, "adx.ownedOnly(var1x).applyTo(var0);", "adx.ownedOnly(var1xf).applyTo(var0);")
edit(179, "if (var2.player != null) {", "if (var2f.player != null) {")
insert(
178,
[
" final Minecraft var2f = var2;",
" final aee var1xf = var1x;",
],
"var2.execute(() -> {",
"final Minecraft var2f",
)
edit(
123,
"Files.writeString(var2x, var1, StandardCharsets.UTF_8);",
"Files.writeString(var2x, var1f, StandardCharsets.UTF_8);",
)
insert(
115,
[" final String var1f = var1;"],
"IO.execute(",
"final String var1f",
)
open(p, "w", encoding="utf-8").write("\n".join(L) + "\n")
print("OK" if ok else "PROBLEMS")
sys.exit(0 if ok else 1)