diff --git a/clamp/build.py b/clamp/build.py index b57b2cd..93fefd8 100644 --- a/clamp/build.py +++ b/clamp/build.py @@ -258,6 +258,10 @@ def copy_file(self, relpath, path): self.jar.write(chunk, 0, read) self.jar.closeEntry() + def copy_bytes(self, relpath, bytez): + self.jar.putNextEntry(JarEntry(relpath)) + self.jar.write(bytez) + self.jar.closeEntry() class JarBuilder(OutputJar): @@ -453,3 +457,28 @@ def create_singlejar(output_path, classpath, runpy): if runpy and os.path.exists(runpy): singlejar.copy_file("__run__.py", runpy) + +def create_war_fromjar(output_path, jar, application): + with JarCopy(output_path=output_path) as war: + print("Building war...") + war.copy_file("WEB-INF/lib/wsgi-app.jar", jar) + war.copy_bytes("WEB-INF/web.xml", + b""" + + + + modjy + com.xhaus.modjy.ModjyJServlet + + app_import_name + {} + + + + modjy + /* + + + """.format(application))