MultiServer: allow loading a .zip containing a .archipelago directly.
This commit is contained in:
		
							parent
							
								
									fe9094dedc
								
							
						
					
					
						commit
						f6b3dfe5ba
					
				| 
						 | 
					@ -1322,11 +1322,11 @@ async def console(ctx: Context):
 | 
				
			||||||
def parse_args() -> argparse.Namespace:
 | 
					def parse_args() -> argparse.Namespace:
 | 
				
			||||||
    parser = argparse.ArgumentParser()
 | 
					    parser = argparse.ArgumentParser()
 | 
				
			||||||
    defaults = Utils.get_options()["server_options"]
 | 
					    defaults = Utils.get_options()["server_options"]
 | 
				
			||||||
 | 
					    parser.add_argument('multidata', nargs="?", default=defaults["multidata"])
 | 
				
			||||||
    parser.add_argument('--host', default=defaults["host"])
 | 
					    parser.add_argument('--host', default=defaults["host"])
 | 
				
			||||||
    parser.add_argument('--port', default=defaults["port"], type=int)
 | 
					    parser.add_argument('--port', default=defaults["port"], type=int)
 | 
				
			||||||
    parser.add_argument('--server_password', default=defaults["server_password"])
 | 
					    parser.add_argument('--server_password', default=defaults["server_password"])
 | 
				
			||||||
    parser.add_argument('--password', default=defaults["password"])
 | 
					    parser.add_argument('--password', default=defaults["password"])
 | 
				
			||||||
    parser.add_argument('--multidata', default=defaults["multidata"])
 | 
					 | 
				
			||||||
    parser.add_argument('--savefile', default=defaults["savefile"])
 | 
					    parser.add_argument('--savefile', default=defaults["savefile"])
 | 
				
			||||||
    parser.add_argument('--disable_save', default=defaults["disable_save"], action='store_true')
 | 
					    parser.add_argument('--disable_save', default=defaults["disable_save"], action='store_true')
 | 
				
			||||||
    parser.add_argument('--loglevel', default=defaults["loglevel"],
 | 
					    parser.add_argument('--loglevel', default=defaults["loglevel"],
 | 
				
			||||||
| 
						 | 
					@ -1408,7 +1408,21 @@ async def main(args: argparse.Namespace):
 | 
				
			||||||
            import tkinter.filedialog
 | 
					            import tkinter.filedialog
 | 
				
			||||||
            root = tkinter.Tk()
 | 
					            root = tkinter.Tk()
 | 
				
			||||||
            root.withdraw()
 | 
					            root.withdraw()
 | 
				
			||||||
            data_filename = tkinter.filedialog.askopenfilename(filetypes=(("Multiworld data", "*.archipelago"),))
 | 
					            data_filename = tkinter.filedialog.askopenfilename(filetypes=(("Multiworld data", "*.archipelago, *.zip"),))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if data_filename.endswith(".zip"):
 | 
				
			||||||
 | 
					            import zipfile
 | 
				
			||||||
 | 
					            with zipfile.ZipFile(data_filename) as zf:
 | 
				
			||||||
 | 
					                for file in zf.namelist():
 | 
				
			||||||
 | 
					                    if file.endswith(".archipelago"):
 | 
				
			||||||
 | 
					                        import tempfile
 | 
				
			||||||
 | 
					                        tmp = tempfile.NamedTemporaryFile("w+b", delete=False)
 | 
				
			||||||
 | 
					                        tmp.write(zf.open(file).read())
 | 
				
			||||||
 | 
					                        tmp.close()
 | 
				
			||||||
 | 
					                        data_filename = tmp.name
 | 
				
			||||||
 | 
					                        break
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    raise Exception("No .archipelago found in archive.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ctx.load(data_filename, args.use_embedded_options)
 | 
					        ctx.load(data_filename, args.use_embedded_options)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,7 +67,7 @@ Root: HKCR; Subkey: "{#MyAppName}patch\shell\open\command";  ValueData: """{app}
 | 
				
			||||||
Root: HKCR; Subkey: ".archipelago";                                ValueData: "{#MyAppName}multidata";        Flags: uninsdeletevalue; ValueType: string;  ValueName: ""
 | 
					Root: HKCR; Subkey: ".archipelago";                                ValueData: "{#MyAppName}multidata";        Flags: uninsdeletevalue; ValueType: string;  ValueName: ""
 | 
				
			||||||
Root: HKCR; Subkey: "{#MyAppName}multidata";                     ValueData: "Archipelago Server Data";       Flags: uninsdeletekey;   ValueType: string;  ValueName: ""
 | 
					Root: HKCR; Subkey: "{#MyAppName}multidata";                     ValueData: "Archipelago Server Data";       Flags: uninsdeletekey;   ValueType: string;  ValueName: ""
 | 
				
			||||||
Root: HKCR; Subkey: "{#MyAppName}multidata\DefaultIcon";         ValueData: "{app}\ArchipelagoServer.exe,0";                           ValueType: string;  ValueName: ""
 | 
					Root: HKCR; Subkey: "{#MyAppName}multidata\DefaultIcon";         ValueData: "{app}\ArchipelagoServer.exe,0";                           ValueType: string;  ValueName: ""
 | 
				
			||||||
Root: HKCR; Subkey: "{#MyAppName}multidata\shell\open\command";  ValueData: """{app}\ArchipelagoServer.exe"" --multidata ""%1""";                  ValueType: string;  ValueName: ""
 | 
					Root: HKCR; Subkey: "{#MyAppName}multidata\shell\open\command";  ValueData: """{app}\ArchipelagoServer.exe"" ""%1""";                  ValueType: string;  ValueName: ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,7 +67,7 @@ Root: HKCR; Subkey: "{#MyAppName}patch\shell\open\command";  ValueData: """{app}
 | 
				
			||||||
Root: HKCR; Subkey: ".archipelago";                                ValueData: "{#MyAppName}multidata";        Flags: uninsdeletevalue; ValueType: string;  ValueName: ""
 | 
					Root: HKCR; Subkey: ".archipelago";                                ValueData: "{#MyAppName}multidata";        Flags: uninsdeletevalue; ValueType: string;  ValueName: ""
 | 
				
			||||||
Root: HKCR; Subkey: "{#MyAppName}multidata";                     ValueData: "Archipelago Server Data";       Flags: uninsdeletekey;   ValueType: string;  ValueName: ""
 | 
					Root: HKCR; Subkey: "{#MyAppName}multidata";                     ValueData: "Archipelago Server Data";       Flags: uninsdeletekey;   ValueType: string;  ValueName: ""
 | 
				
			||||||
Root: HKCR; Subkey: "{#MyAppName}multidata\DefaultIcon";         ValueData: "{app}\ArchipelagoServer.exe,0";                           ValueType: string;  ValueName: ""
 | 
					Root: HKCR; Subkey: "{#MyAppName}multidata\DefaultIcon";         ValueData: "{app}\ArchipelagoServer.exe,0";                           ValueType: string;  ValueName: ""
 | 
				
			||||||
Root: HKCR; Subkey: "{#MyAppName}multidata\shell\open\command";  ValueData: """{app}\ArchipelagoServer.exe"" --multidata ""%1""";                  ValueType: string;  ValueName: ""
 | 
					Root: HKCR; Subkey: "{#MyAppName}multidata\shell\open\command";  ValueData: """{app}\ArchipelagoServer.exe"" ""%1""";                  ValueType: string;  ValueName: ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue