diff options
Diffstat (limited to 'build-scripts/download-external-libs')
-rwxr-xr-x | build-scripts/download-external-libs | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/build-scripts/download-external-libs b/build-scripts/download-external-libs new file mode 100755 index 00000000..94d3ff52 --- /dev/null +++ b/build-scripts/download-external-libs @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +import json +import os +import requests +import sys +from zipfile import ZipFile +from operator import itemgetter + + +def warn(*args, **kwargs): + print(*args, **kwargs, file=sys.stderr) + + +def download_file(url, local_filename): + # From https://stackoverflow.com/questions/16694907/ + # download-large-file-in-python-with-requests + if os.path.exists(local_filename): + warn('Using existing', local_filename) + return + warn('Downloading', local_filename) + with requests.get(url, stream=True) as r: + r.raise_for_status() + with open(local_filename, 'wb') as f: + for chunk in r.iter_content(chunk_size=8192): + f.write(chunk) + return local_filename + + +bin_name = 'qpdf-external-libs-bin.zip' +src_name = 'qpdf-external-libs-src.zip' +dir_name = 'external-libs-dist' +os.makedirs(dir_name, exist_ok=True) + +r = requests.get( + 'https://api.github.com/repos/qpdf/external-libs/releases') +releases = json.loads(r.text) +by_tag = sorted( + [(r['tag_name'], r) for r in releases + if r['prerelease'] is False], + reverse=True) +latest = by_tag[0][1] +bin_url = None +src_url = None +for i in latest['assets']: + if i['name'] == bin_name: + bin_url = i['browser_download_url'] + elif i['name'] == src_name: + src_url = i['browser_download_url'] +print(bin_url) +download_file(bin_url, f'{dir_name}/{bin_name}') +download_file(src_url, f'{dir_name}/{src_name}') + +print('\n** external library information **') +with ZipFile(f'{dir_name}/{src_name}') as z1: + with z1.open('external-libs-src/versions') as z2: + print(z2.read().decode()) |