mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	 1be1b15a57
			
		
	
	
		1be1b15a57
		
			
		
	
	
	
	
		
			
			This makes it easier to set up, as you always have Python installed when building Godot. On the other hand, you don't always have Node.js + npm installed (and you may not want to spend time running `npm install`). Co-authored-by: Fabio Alessandrelli <fabio.alessandrelli@gmail.com>
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env python3
 | |
| 
 | |
| from http.server import HTTPServer, SimpleHTTPRequestHandler, test  # type: ignore
 | |
| from pathlib import Path
 | |
| import os
 | |
| import sys
 | |
| import argparse
 | |
| import subprocess
 | |
| 
 | |
| 
 | |
| class CORSRequestHandler(SimpleHTTPRequestHandler):
 | |
|     def end_headers(self):
 | |
|         self.send_header("Cross-Origin-Opener-Policy", "same-origin")
 | |
|         self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
 | |
|         self.send_header("Access-Control-Allow-Origin", "*")
 | |
|         super().end_headers()
 | |
| 
 | |
| 
 | |
| def shell_open(url):
 | |
|     if sys.platform == "win32":
 | |
|         os.startfile(url)
 | |
|     else:
 | |
|         opener = "open" if sys.platform == "darwin" else "xdg-open"
 | |
|         subprocess.call([opener, url])
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     parser = argparse.ArgumentParser()
 | |
|     parser.add_argument("-p", "--port", help="port to listen on", default=8060, type=int)
 | |
|     parser.add_argument(
 | |
|         "-r", "--root", help="path to serve as root (relative to `platform/web/`)", default="../../bin", type=Path
 | |
|     )
 | |
|     browser_parser = parser.add_mutually_exclusive_group(required=False)
 | |
|     browser_parser.add_argument(
 | |
|         "-n", "--no-browser", help="don't open default web browser automatically", dest="browser", action="store_false"
 | |
|     )
 | |
|     parser.set_defaults(browser=True)
 | |
|     args = parser.parse_args()
 | |
| 
 | |
|     # Change to the directory where the script is located,
 | |
|     # so that the script can be run from any location.
 | |
|     os.chdir(Path(__file__).resolve().parent)
 | |
| 
 | |
|     if args.root:
 | |
|         os.chdir(args.root)
 | |
| 
 | |
|     if args.browser:
 | |
|         # Open the served page in the user's default browser.
 | |
|         print("Opening the served URL in the default browser (use `--no-browser` or `-n` to disable this).")
 | |
|         shell_open(f"http://127.0.0.1:{args.port}")
 | |
| 
 | |
|     test(CORSRequestHandler, HTTPServer, port=args.port)
 |