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:
 | 
			
		||||
    parser = argparse.ArgumentParser()
 | 
			
		||||
    defaults = Utils.get_options()["server_options"]
 | 
			
		||||
    parser.add_argument('multidata', nargs="?", default=defaults["multidata"])
 | 
			
		||||
    parser.add_argument('--host', default=defaults["host"])
 | 
			
		||||
    parser.add_argument('--port', default=defaults["port"], type=int)
 | 
			
		||||
    parser.add_argument('--server_password', default=defaults["server_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('--disable_save', default=defaults["disable_save"], action='store_true')
 | 
			
		||||
    parser.add_argument('--loglevel', default=defaults["loglevel"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1408,7 +1408,21 @@ async def main(args: argparse.Namespace):
 | 
			
		|||
            import tkinter.filedialog
 | 
			
		||||
            root = tkinter.Tk()
 | 
			
		||||
            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)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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: "{#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\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: "{#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\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