diff options
Diffstat (limited to 'misc/build_scripts/build_server.py')
-rw-r--r-- | misc/build_scripts/build_server.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/misc/build_scripts/build_server.py b/misc/build_scripts/build_server.py new file mode 100644 index 0000000..d3ea564 --- /dev/null +++ b/misc/build_scripts/build_server.py @@ -0,0 +1,64 @@ +from http.server import HTTPServer, SimpleHTTPRequestHandler +import os +import subprocess + +build_files = { + '/ClassiCube.exe' : 'cc-w32-d3d.exe', '/ClassiCube.opengl.exe' : 'cc-w32-ogl.exe', + '/ClassiCube.64.exe' : 'cc-w64-d3d.exe', '/ClassiCube.64-opengl.exe' : 'cc-w64-ogl.exe', + '/ClassiCube.32' : 'cc-nix32', '/ClassiCube' : 'cc-nix64', + '/ClassiCube.osx' : 'cc-osx32', '/ClassiCube.64.osx' : 'cc-osx64', + '/ClassiCube.js' : 'cc.js', '/ClassiCube.apk' : 'cc.apk', + '/ClassiCube.rpi' : 'cc-rpi', + '/cc-nix32-gl2' : 'cc-nix32-gl2', '/cc-nix64-gl2' : 'cc-nix64-gl2', + '/cc-osx32-gl2' : 'cc-osx32-gl2', '/cc-osx64-gl2' : 'cc-osx64-gl2', +} + +release_files = { + '/win32' : 'win32/ClassiCube.exe', '/win64' : 'win64/ClassiCube.exe', + '/osx32' : 'osx32/ClassiCube.tar.gz', '/osx64' : 'osx64/ClassiCube.tar.gz', + '/mac32' : 'mac32/ClassiCube.tar.gz', '/mac64' : 'mac64/ClassiCube.tar.gz', + '/nix32' : 'nix32/ClassiCube.tar.gz', '/nix64' : 'nix64/ClassiCube.tar.gz', + '/rpi32' : 'rpi32/ClassiCube.tar.gz', +} + +def run_script(file): + args = ["sh", file] + su = subprocess.Popen(args) + return su.wait() + +class Handler(SimpleHTTPRequestHandler): + + def serve_script(self, file, msg): + ret = run_script(file) + self.send_response(200) + self.end_headers() + self.wfile.write(msg % ret) + + def do_GET(self): + if self.path in build_files: + self.serve_exe('client/src/' + build_files[self.path]) + elif self.path in release_files: + self.serve_exe('client/release/' + release_files[self.path]) + elif self.path == '/rebuild': + self.serve_script('build.sh', 'Rebuild client (%s)') + elif self.path == '/release': + self.serve_script('build_release.sh', 'Package release (%s)') + else: + self.send_error(404, "Unknown action") + return + + def serve_exe(self, path): + try: + f = open(path, 'rb') + fs = os.fstat(f.fileno()) + self.send_response(200) + self.send_header("Content-type", "application/octet-stream") + self.send_header("Content-Length", str(fs[6])) + self.end_headers() + self.copyfile(f, self.wfile) + f.close() + except IOError: + self.send_error(404, "File not found") + +httpd = HTTPServer(('', 80), Handler) +httpd.serve_forever() |