72 lines
1.7 KiB
Python
Executable File
72 lines
1.7 KiB
Python
Executable File
#!/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))
|