From 99cc0c984516241b989c289c882f1bb56adfd7ac Mon Sep 17 00:00:00 2001 From: InsanePrawn Date: Wed, 21 Sep 2022 14:09:56 +0200 Subject: [PATCH] packages/flavour: add support for optional description in flavourinfo.json --- constants.py | 1 + packages/flavour.py | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/constants.py b/constants.py index 0cdbc32..e418209 100644 --- a/constants.py +++ b/constants.py @@ -167,3 +167,4 @@ SRCINFO_FILE = 'SRCINFO' SRCINFO_METADATA_FILE = 'srcinfo_meta.json' FLAVOUR_INFO_FILE = 'flavourinfo.json' +FLAVOUR_DESCRIPTION_PREFIX = 'kupfer flavour:' diff --git a/packages/flavour.py b/packages/flavour.py index d7cca05..456038b 100644 --- a/packages/flavour.py +++ b/packages/flavour.py @@ -9,7 +9,7 @@ from dataclasses import dataclass from typing import Optional from config import config -from constants import FLAVOUR_INFO_FILE +from constants import FLAVOUR_DESCRIPTION_PREFIX, FLAVOUR_INFO_FILE from .pkgbuild import discover_pkgbuilds, get_pkgbuild_by_name, init_pkgbuilds, Pkgbuild @@ -19,6 +19,7 @@ profile_option = click.option('-p', '--profile', help="name of the profile to us @dataclass class FlavourInfo: rootfs_size: int # rootfs size in GB + description: Optional[str] def __repr__(self): return f'rootfs_size: {self.rootfs_size}' @@ -39,7 +40,11 @@ class Flavour: if name.endswith('-common'): raise Exception(f'Flavour package "{name}" ends with "-common": "{name}"') name = name[8:] # split off 'flavour-' - return Flavour(name=name, pkgbuild=pkgbuild, description=pkgbuild.description, flavour_info=None) + description = pkgbuild.description + # cut off FLAVOUR_DESCRIPTION_PREFIX + if description.lower().startswith(FLAVOUR_DESCRIPTION_PREFIX.lower()): + description = description[len(FLAVOUR_DESCRIPTION_PREFIX):] + return Flavour(name=name, pkgbuild=pkgbuild, description=description.strip(), flavour_info=None) def __repr__(self): return f'Flavour "{self.name}": "{self.description}", package: {self.pkgbuild.name if self.pkgbuild else "??? PROBABLY A BUG!"}{f", {self.flavour_info}" if self.flavour_info else ""}' @@ -51,12 +56,15 @@ class Flavour: if not os.path.exists(infopath): raise Exception(f"Error parsing flavour info for flavour {self.name}: file doesn't exist: {infopath}") try: + defaults = {'description': None} with open(infopath, 'r') as fd: infodict = json.load(fd) - i = FlavourInfo(**infodict) + i = FlavourInfo(**(defaults | infodict)) except Exception as ex: raise Exception(f"Error parsing {FLAVOUR_INFO_FILE} for flavour {self.name}: {ex}") self.flavour_info = i + if i.description: + self.description = i.description return i @@ -112,5 +120,10 @@ def cmd_flavours_list(): flavours = get_flavours() if not flavours: raise Exception("No flavours found!") - for f in flavours.values(): + for name in sorted(flavours.keys()): + f = flavours[name] + try: + f.parse_flavourinfo() + except: + pass print(f)