[TASK] Init
This commit is contained in:
commit
7df68dc0eb
72
check
Executable file
72
check
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
#!/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())
|
||||||
|
directory = sys.argv[1]
|
||||||
|
|
||||||
|
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))
|
78
in
Executable file
78
in
Executable file
@ -0,0 +1,78 @@
|
|||||||
|
#!/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 shutil
|
||||||
|
import requests
|
||||||
|
import semver
|
||||||
|
|
||||||
|
root = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
config = json.loads(sys.stdin.read())
|
||||||
|
directory = sys.argv[1]
|
||||||
|
|
||||||
|
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')
|
||||||
|
|
||||||
|
match = False
|
||||||
|
|
||||||
|
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 semver.compare(version, package['Version']) != 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
match = package
|
||||||
|
|
||||||
|
if not match:
|
||||||
|
sys.exit('Package not found')
|
||||||
|
|
||||||
|
package_uri = config['source']['repo_uri'] \
|
||||||
|
+ '/' + config['source']['repo'] \
|
||||||
|
+ '/' + match['Filename']
|
||||||
|
|
||||||
|
package_filename = package_uri.rsplit('/', 1)[1]
|
||||||
|
package_filepath = directory + '/' + package_filename
|
||||||
|
|
||||||
|
with requests.get(package_uri, stream = True) as r:
|
||||||
|
with open(package_filepath, 'wb') as f:
|
||||||
|
shutil.copyfileobj(r.raw, f)
|
||||||
|
|
||||||
|
with open(directory + '/filemane', 'wb') as f:
|
||||||
|
f.write(package_filename.encode())
|
||||||
|
|
||||||
|
print(json.dumps({
|
||||||
|
'version': {'version': match['Version']},
|
||||||
|
'metadata': [
|
||||||
|
{'name': 'sha256', 'value': match['SHA256']}
|
||||||
|
]
|
||||||
|
}))
|
85
out
Executable file
85
out
Executable file
@ -0,0 +1,85 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
'''
|
||||||
|
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 hashlib
|
||||||
|
from pprint import pprint
|
||||||
|
from aptly_api import Client
|
||||||
|
from aptly_api.base import AptlyAPIException
|
||||||
|
|
||||||
|
BLOCK_SIZE = 65536
|
||||||
|
|
||||||
|
root = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
config = json.loads(sys.stdin.read())
|
||||||
|
directory = sys.argv[1]
|
||||||
|
|
||||||
|
aptly = Client(
|
||||||
|
config['source']['api_uri'],
|
||||||
|
http_auth = (
|
||||||
|
config['source']['username'],
|
||||||
|
config['source']['password']
|
||||||
|
),
|
||||||
|
timeout = config['source']['timeout']
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
repo = aptly.repos.show(config['source']['repo'])
|
||||||
|
except AptlyAPIException as e:
|
||||||
|
if e.status_code != 404:
|
||||||
|
raise e
|
||||||
|
aptly.repos.create(
|
||||||
|
reponame = config['source']['repo'],
|
||||||
|
default_distribution = config['source']['distribution'],
|
||||||
|
default_component = config['source']['component']
|
||||||
|
)
|
||||||
|
|
||||||
|
with open(
|
||||||
|
directory + '/' + config['params']['archive_file'],
|
||||||
|
'r',
|
||||||
|
encoding = 'utf8'
|
||||||
|
) as f:
|
||||||
|
archive_path = f.read().strip()
|
||||||
|
|
||||||
|
|
||||||
|
archive_filename = archive_path.split('/', -1)[-1]
|
||||||
|
archive_filename_parts = archive_filename.split('_')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
file_hash = hashlib.sha256()
|
||||||
|
with open(directory + '/' + archive_filename, 'rb') as f:
|
||||||
|
fb = f.read(BLOCK_SIZE)
|
||||||
|
while len(fb) > 0:
|
||||||
|
file_hash.update(fb)
|
||||||
|
fb = f.read(BLOCK_SIZE)
|
||||||
|
|
||||||
|
|
||||||
|
#aptly.files.upload(
|
||||||
|
# config['source']['repo'],
|
||||||
|
# directory + '/' + archive_path
|
||||||
|
# )
|
||||||
|
|
||||||
|
aptly.repos.add_uploaded_file(
|
||||||
|
reponame = config['source']['repo'],
|
||||||
|
dir = config['source']['repo'],
|
||||||
|
remove_processed_files = False,
|
||||||
|
force_replace = True
|
||||||
|
)
|
||||||
|
|
||||||
|
print(json.dumps({
|
||||||
|
'version': {'version': archive_filename_parts[1]},
|
||||||
|
'metadata': [
|
||||||
|
{'name': 'sha256', 'value': file_hash.hexdigest()}
|
||||||
|
]
|
||||||
|
}))
|
Loading…
x
Reference in New Issue
Block a user