// can be false, it's compiled on the server anyway // defaults to true static new ThreadLocal transpileForServer_compile; static long transpileForServer_localTime; sbool transpileForServer_forceJavacOnServer; sbool transpileForServer_forceJavacWhenLibs; svoid transpileForServer(S progID) { S server = tb_mainServer(); S javax = loadSnippet(progID); print("Source: " + l(javax)); long time = sysNow(); time "Transpile" { transpileRaw_silent = false; S java; try { java = transpileRaw(javax); } on fail e { printLineContextAfterJavaCompilerError(e, loadProgramTextFile("error.java")); } print("Transpiled: " + l(java)); } new L libs; java = findTranslators2(java, libs); print("Libs: " + or2(joinWithComma(libs), "-")); S dehlibs = join(" ", libs); if (!isFalse(transpileForServer_compile!)) { File bytecode = javaCompile_overInternalBot(java, dehlibs); print("Bytecode: " + f2s(assertNotNull(bytecode))); } transpileForServer_localTime = sysNow()-time; // Compiled OK, let's upload S result = postPageWithCredentials(server + "/tb/upload-transpilation.php", id := psI(progID), transpilation := java, libs := lines(splitAtSpace(dehlibs)), computer := computerID()); Matcher m = regexp("URL=/(dexcompile\\.php.*?)'", result); if (!m.find()) fail("Server said: " + result); S url = server + "/" + m.group(1); if (transpileForServer_forceJavacOnServer || transpileForServer_forceJavacWhenLibs && nempty(libs)) url += "&javac=1"; result = postPageWithCredentials(url); bool ok = result.contains("SUCCESS"); sendToSnippetUpdatesBot("/transpile" + (ok ? "OK" : "Fail") + "/" + psI(progID)); if (!ok) fail("Server said: " + result); print("Transpiled & uploaded " + fsI(progID) + "!"); }