From af5972814503fa97f3cace9028e76e9d23d61a7f Mon Sep 17 00:00:00 2001 From: Valentin Niess Date: Sun, 12 Nov 2023 23:41:03 +0100 Subject: [PATCH] Generate update summary --- scripts/update-appimages.py | 41 +++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/scripts/update-appimages.py b/scripts/update-appimages.py index fd00674..51b03e7 100755 --- a/scripts/update-appimages.py +++ b/scripts/update-appimages.py @@ -12,7 +12,7 @@ from github import Auth, Github from python_appimage.commands.build.manylinux import execute as build_manylinux from python_appimage.commands.list import execute as list_pythons from python_appimage.utils.log import log -from python_appimage.utils.manylinux import format_appimage_name +from python_appimage.utils.manylinux import format_appimage_name, format_tag # Build matrix @@ -74,6 +74,15 @@ class AssetMeta: '''Returns Python AppImage name''' return format_appimage_name(self.abi, self.version, self.tag) + def formated_tag(self): + '''Returns formated manylinux tag''' + return format_tag(self.tag) + + def previous_version(self): + '''Returns previous version''' + if self.asset: + return self.asset.name[6:-9].split('-', 1)[0] + def release_tag(self): '''Returns release git tag''' version = self.version.rsplit('.', 1)[0] @@ -190,6 +199,9 @@ def update(args): if meta.release is not None: log('DRY', f'reformat release for {meta.title()}') + if new_assets: + log('DRY', f'new update summary with {len(new_assets)} entries') + return if new_assets: @@ -217,6 +229,7 @@ def update(args): log('UPDATE', f'new release for {title}') # Update assets. + update_summary = [] for meta in new_assets: release = releases[meta.release_tag()].release appimage = meta.appimage_name() @@ -226,10 +239,19 @@ def update(args): ) if meta.asset: meta.asset.delete_asset() + update_summary.append( + f'- update {meta.formated_tag()}/{meta.abi} ' + f'{meta.previous_version()} -> {meta.version}' + ) + else: + update_summary.append( + f'- add {meta.formated_tag()}/{meta.abi} {meta.version}' + ) + meta.asset = new_asset assets[meta.tag][meta.abi] = meta - # Update git tags SHA. + # Update git tags SHA for meta in releases.values(): if meta.ref is not None: meta.ref.edit( @@ -248,6 +270,21 @@ def update(args): ) log('UPDATE', f'reformat release for {title}') + # Generate update summary + if update_summary: + for release in repo.get_releases(): + if release.tag_name == 'update-summary': + release.delete_release() + break + + message = os.linesep.join(update_summary) + repo.create_git_release( + tag = 'update-summary', + name = 'Update summary', + message = message, + prerelease = True + ) + if __name__ == '__main__': parser = argparse.ArgumentParser(