42 lines
1.2 KiB
Python
Executable File
42 lines
1.2 KiB
Python
Executable File
#!/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())
|