[FEATURE] Add keep_versions to remove older versions after set threshold

This commit is contained in:
Philipp Dieter 2022-03-21 21:32:23 +01:00
parent 18061966d7
commit 9152671b1c

38
out
View File

@ -1,4 +1,5 @@
#!/usr/bin/env python3
#pylint: disable=invalid-name
'''
aptly-resource out
@ -14,9 +15,11 @@ import json
import sys
import os
import hashlib
import functools
from pprint import pprint
from aptly_api import Client
from aptly_api.base import AptlyAPIException
import semver
BLOCK_SIZE = 65536
@ -83,6 +86,41 @@ aptly.publish.update(
force_overwrite = True
)
if 'keep_versions' in config['source'] \
and config['source']['keep_versions'] > 0:
packages_delete = aptly.repos.search_packages(
'datentonne',
config['source']['package'] + ' (<= ' + archive_filename_parts[1] + ')'
)
versions_delete = []
for package in packages_delete:
package_data = package.key.split(' ')
versions_delete.append({
'version': package_data[2],
'key': package.key,
})
def compare_func(a, b):
return semver.compare(a['version'], b['version'])
versions_delete.sort(key=functools.cmp_to_key(compare_func))
versions_delete.reverse()
for i, package in enumerate(versions_delete):
if i >= config['source']['keep_versions']:
aptly.repos.delete_packages_by_key(
config['source']['repo'],
package['key'],
)
aptly.publish.update(
prefix = config['source']['repo'],
distribution = config['source']['distribution'],
force_overwrite = True
)
print(json.dumps({
'version': {'version': archive_filename_parts[1]},
'metadata': [