#!/usr/bin/env python3
"""Build a runnable exec script: load a source file via loadstring, then run a test body."""
import sys

def lua_long_string(s):
    level = 0
    while True:
        eq = "=" * level
        closer = "]" + eq + "]"
        if closer not in s:
            return "[" + eq + "[" + s + closer, eq
        level += 1

def main():
    src_path, out_path = sys.argv[1], sys.argv[2]
    test_path = sys.argv[3] if len(sys.argv) > 3 else None
    src = open(src_path).read()
    body = open(test_path).read() if test_path else ""
    lit, _ = lua_long_string(src)
    out = []
    out.append("local __src = %s" % lit)
    out.append("local __chunk, __err = loadstring(__src)")
    out.append('if not __chunk then error("load failed: " .. tostring(__err)) end')
    out.append("local Core = __chunk()")
    out.append(body)
    open(out_path, "w").write("\n".join(out) + "\n")
    print("wrote", out_path, len(src), "bytes source")

if __name__ == "__main__":
    main()
