Files
SDL/build-scripts/download-gameinput-headers.py
2026-05-15 03:00:10 +02:00

45 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
import argparse
import logging
from pathlib import Path
import urllib.request
logger = logging.getLogger(__name__)
def download_headers(tag: str, lowercase: bool, output: Path):
base_url = f"https://raw.githubusercontent.com/microsoftconnect/GameInput/refs/tags/{tag}/"
url_relpaths = (
"include/GameInput.h",
"include/v0/GameInput.h",
"include/v1/GameInput.h",
"include/v2/GameInput.h",
)
remove_prefix = "include/"
for url_relpath in url_relpaths:
url = base_url + url_relpath
local_relpath = url_relpath.removeprefix(remove_prefix)
if lowercase:
local_relpath = local_relpath.lower()
local_path = output / local_relpath
local_dirpath = local_path.parent
local_dirpath.mkdir(parents=False, exist_ok=True)
logger.info("Downloading %s to %s...", url, local_path)
urllib.request.urlretrieve(url, local_path)
logger.info("... done")
def main():
logging.basicConfig(level=logging.INFO)
parser = argparse.ArgumentParser(description="Download Microsoft.GameInput headers", allow_abbrev=False)
parser.add_argument("--version", required=True, help="GameInput release tag (see https://github.com/microsoftconnect/GameInput/tags)")
parser.add_argument("--no-lowercase", action="store_false", dest="lowercase", help="Don't lowercase downloaded headers")
parser.add_argument("-o", "--output", type=Path, default=Path.cwd(), help="Headers will be stored here (subdirectories created as ")
args = parser.parse_args()
download_headers(tag=args.version, lowercase=args.lowercase, output=args.output)
if __name__ == "__main__":
raise SystemExit(main())