pyZDL: a launcher for GZDoom profiles
pyZDL is a Python launcher for GZDoom and other Doom source ports.
Each profile bundles a source port, an IWAD, an ordered mod list, extra arguments, and optional config and save directories. Per-profile directories keep total conversions from overwriting each other's settings.
Features:
- Searchable profile library with cover art and keyboard navigation
- Ordered load list with enable/disable toggles and drag-and-drop
- Automatic
-dehhandling for.dehand.bexpatches

Splitting extra arguments
Profile arguments are typed as a single string, so the launcher has to split them the way a shell would. On Windows, shlex leaves surrounding quotes in place, so they are stripped by hand:
def split_args(value: Optional[str]) -> list[str]:
"""Split an argument string, respecting quotes and multiple spaces."""
if not value:
return []
try:
parts = shlex.split(value, posix=(os.name != "nt"))
except ValueError as exc:
raise LoaderError(f"Could not parse extra arguments: {exc}") from exc
if os.name == "nt":
# shlex in non-POSIX mode leaves surrounding quotes in place.
parts = [
(
part[1:-1]
if len(part) >= 2 and part[0] == part[-1] and part[0] in "\"'"
else part
)
for part in parts
]
return parts
Downloads: