tornado/maint/scripts/download_wheels.py

42 lines
1.2 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
import asyncio
import json
import pathlib
import sys
from tornado.httpclient import AsyncHTTPClient
BASE_URL = "https://ci.appveyor.com/api"
async def fetch_job(directory, job):
http = AsyncHTTPClient()
artifacts = await http.fetch(f"{BASE_URL}/buildjobs/{job}/artifacts")
paths = [pathlib.PurePosixPath(a["fileName"]) for a in json.loads(artifacts.body)]
for path in paths:
artifact = await http.fetch(f"{BASE_URL}/buildjobs/{job}/artifacts/{path}")
with open(directory.joinpath(path.name), "wb") as f:
f.write(artifact.body)
async def main():
http = AsyncHTTPClient()
try:
_, version = sys.argv
except ValueError:
print("usage: maint/scripts/download_wheels.py v6.0.1", file=sys.stderr)
sys.exit(1)
directory = pathlib.Path(f"downloads-{version}")
directory.mkdir(exist_ok=True)
build = await http.fetch(f"{BASE_URL}/projects/bdarnell/tornado/branch/{version}")
jobs = [job["jobId"] for job in json.loads(build.body)["build"]["jobs"]]
await asyncio.gather(*(fetch_job(directory, job) for job in jobs))
if __name__ == "__main__":
asyncio.run(main())