diff --git a/aptly-publish b/aptly-publish index e697d87..667c080 100644 --- a/aptly-publish +++ b/aptly-publish @@ -43,9 +43,11 @@ if not API_PASSWORD: MAX_RETRY = from_env('MAX_RETRIES', None) REPO_NAME = from_env('REPO_NAME', 'stable') +PREFIX = from_env('PREFIX', '.') REPO_COMPONENT = from_env('REPO_COMPONENT', 'main') INPUT_PATH = from_env('PATH', 'dist') SOURCE_NAME = from_env('SOURCE_PACKAGE_NAME', None) +DISTRIBUTIONS = [] # List changes files changes_files_regex = ( @@ -96,13 +98,14 @@ def list_files_in_changes_file(filepath): files = [] for infos in parser.parse(): for info in infos: - if info['tag'].lower() != 'files': - continue - - for line in info['value'].split(' '): - if not line: - continue - files.append(os.path.join(dirpath, line.split()[-1])) + if info['tag'].lower() == 'files': + for line in info['value'].split(' '): + if not line: + continue + files.append(os.path.join(dirpath, line.split()[-1])) + if info['tag'].lower() == 'distribution': + if info['value'] not in DISTRIBUTIONS: + DISTRIBUTIONS.append(info['value']) return files @@ -145,7 +148,9 @@ def include_file(package_name, changes_file): result.status_code == 200 and data.get('Report', {}).get('Added') ): - print(f'Unknown error occurred including {changes_file}') + print( + f'Unknown error occurred including {changes_file}' + 'See APTLY API logs for details.') return False return True @@ -158,9 +163,8 @@ for changes_file in changes_files: for filepath in filepaths: if not upload_file(package_name, filepath): print( - f' - {filepath}: fail to upload file, pass this changes ' - 'file' - ) + f' - {filepath}: fail to upload file. See APTLY API logs ' + 'for details.') sys.exit(1) else: print(f' - {filepath}') @@ -190,30 +194,35 @@ error = ( not data.get('CreatedAt') ) if error: - print(f'Fail to create snapshot "{snap_name}" of repository "{REPO_NAME}"') - sys.exit(1) - - -# Update published snapshot of repository -print( - f'Update published snapshot of repository "{REPO_NAME}" to "{snap_name}"') -url = f'{API_URL}/publish/:./{REPO_NAME}' -payload = { - 'Snapshots': [ - { - 'Component': REPO_COMPONENT, - 'Name': snap_name - } - ] -} -result = session.put(url, json=payload) -if ( - result.status_code < 200 or - result.status_code > 299 -): print( - f'Fail to update published snapshot of repository "{REPO_NAME}" to ' - f'"{snap_name}"') + f'Fail to create snapshot "{snap_name}" of repository "{REPO_NAME}".' + 'See APTLY API logs for details.') sys.exit(1) + +# Update published snapshot of repository for each distributions +for distribution in DISTRIBUTIONS: + print( + f'Update published snapshot of distribution "{distribution}" to ' + f'"{snap_name}" (prefix: {PREFIX})') + url = f'{API_URL}/publish/:{PREFIX}/{distribution}' + payload = { + 'Snapshots': [ + { + 'Component': REPO_COMPONENT, + 'Name': snap_name + } + ] + } + result = session.put(url, json=payload) + if ( + result.status_code < 200 or + result.status_code > 299 + ): + print( + f'Fail to update published snapshot of distribution "{distribution}" ' + f'to "{snap_name}" (prefix: {PREFIX}). See APTLY API logs for ' + 'details.') + sys.exit(1) + print("Done.")