diff options
| -rwxr-xr-x | .local/bin/zypper-wassup | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/.local/bin/zypper-wassup b/.local/bin/zypper-wassup index 749052a..100f0ea 100755 --- a/.local/bin/zypper-wassup +++ b/.local/bin/zypper-wassup @@ -6,7 +6,7 @@ import re from subprocess import run -Package = namedtuple('Package', ('package', 'old', 'new')) +Update = namedtuple('Update', ('package', 'old', 'new')) ZYPPER_PATTERN = re.compile( r' +\| +'.join(( @@ -38,7 +38,7 @@ def zypper_list_updates(): zypp_output = execute(('zypper', 'list-updates')) return tuple( - Package(**match.groupdict()) + Update(**match.groupdict()) for match in ZYPPER_PATTERN.finditer(zypp_output) ) @@ -50,12 +50,12 @@ def source_package_name(package): return match.group('name') -def sort_by_source_package(packages): - sorted_packages = defaultdict(list) +def sort_by_source_package(updates): + sorted_updates = defaultdict(list) - for p in packages: + for u in updates: source_pkgs = execute( - ('rpm', '--query', '--queryformat', r'%{SOURCERPM}\n', p.package) + ('rpm', '--query', '--queryformat', r'%{SOURCERPM}\n', u.package) ) # Some packages, e.g. kernel-default and kernel-devel, may be @@ -65,9 +65,9 @@ def sort_by_source_package(packages): *_, last_source_pkg = source_pkgs.splitlines() name = source_package_name(last_source_pkg) - sorted_packages[name].append(p) + sorted_updates[name].append(u) - return sorted_packages + return sorted_updates class Sgr(IntEnum): @@ -120,30 +120,30 @@ def print_header(widths, name): def print_footer(i, n, widths): if i < n: - print('─┼─'.join('─'*widths[f] for f in Package._fields)) + print('─┼─'.join('─'*widths[f] for f in Update._fields)) def main(): print('Querying zypper list-updates… ', end='', flush=True) - packages = zypper_list_updates() - print(f'{len(packages)} updates.') + updates = zypper_list_updates() + print(f'{len(updates)} updates.') - if not packages: + if not updates: return widths = { - field: max(len(p._asdict()[field]) for p in packages) - for field in Package._fields + field: max(len(u._asdict()[field]) for u in updates) + for field in Update._fields } print('Sorting by source package… ', end='', flush=True) - packages = sort_by_source_package(packages) + updates = sort_by_source_package(updates) print('Done') - for i, src in enumerate(sorted(packages), 1): + for i, src in enumerate(sorted(updates), 1): print_header(widths, src) - for pkg, old, new in sorted(packages[src]): + for pkg, old, new in sorted(updates[src]): old_padding = padding(old, widths['old']) new_padding = padding(new, widths['new']) @@ -155,7 +155,7 @@ def main(): new+new_padding ))) - print_footer(i, len(packages), widths) + print_footer(i, len(updates), widths) if __name__ == '__main__': |
