#!/usr/bin/env python3 #pylint: disable=invalid-name ''' aptly-resource out https://github.com/gopythongo/aptly-api-client HTTPS_PROXY="http://localhost:8080" \ CURL_CA_BUNDLE="$HOME/.mitmproxy/mitmproxy-ca-cert.pem" \ ./out_test.py ''' import json import sys import os import functools import requests import semver root = os.path.dirname(os.path.abspath(__file__)) config = json.loads(sys.stdin.read()) previous_version = False if 'version' in config and 'version' in config['version']: previous_version = config['version']['version'] package_file_uri = config['source']['repo_uri'] \ + '/' + config['source']['repo'] \ + '/dists' \ + '/' + config['source']['distribution'] \ + '/' + config['source']['component'] \ + '/binary-' + config['source']['architecture'] \ + '/Packages' packages_data = requests.get(package_file_uri).text packages_data_blocks = packages_data.strip().split('\n\n') packages = [] versions = [] for packages_data_block in packages_data_blocks: packages_data_block_rows = packages_data_block.split('\n') package = {} for packages_data_block_row in packages_data_block_rows: package_data = packages_data_block_row.split(': ') package[package_data[0]] = package_data[1] if package['Package'] != config['source']['package']: continue if previous_version \ and semver.compare(previous_version, package['Version']) > 0: continue versions.append({ 'version': package['Version'] }) versions.reverse() def compare_func(a, b): return semver.compare(a['version'], b['version']) versions.sort(key=functools.cmp_to_key(compare_func)) if not previous_version and versions: versions = [versions[-1]] print(json.dumps(versions))