packages/flavour: add support for optional description in flavourinfo.json
This commit is contained in:
parent
f8af06959c
commit
99cc0c9845
2 changed files with 18 additions and 4 deletions
|
@ -167,3 +167,4 @@ SRCINFO_FILE = 'SRCINFO'
|
||||||
SRCINFO_METADATA_FILE = 'srcinfo_meta.json'
|
SRCINFO_METADATA_FILE = 'srcinfo_meta.json'
|
||||||
|
|
||||||
FLAVOUR_INFO_FILE = 'flavourinfo.json'
|
FLAVOUR_INFO_FILE = 'flavourinfo.json'
|
||||||
|
FLAVOUR_DESCRIPTION_PREFIX = 'kupfer flavour:'
|
||||||
|
|
|
@ -9,7 +9,7 @@ from dataclasses import dataclass
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from config import config
|
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
|
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
|
@dataclass
|
||||||
class FlavourInfo:
|
class FlavourInfo:
|
||||||
rootfs_size: int # rootfs size in GB
|
rootfs_size: int # rootfs size in GB
|
||||||
|
description: Optional[str]
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f'rootfs_size: {self.rootfs_size}'
|
return f'rootfs_size: {self.rootfs_size}'
|
||||||
|
@ -39,7 +40,11 @@ class Flavour:
|
||||||
if name.endswith('-common'):
|
if name.endswith('-common'):
|
||||||
raise Exception(f'Flavour package "{name}" ends with "-common": "{name}"')
|
raise Exception(f'Flavour package "{name}" ends with "-common": "{name}"')
|
||||||
name = name[8:] # split off 'flavour-'
|
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):
|
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 ""}'
|
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):
|
if not os.path.exists(infopath):
|
||||||
raise Exception(f"Error parsing flavour info for flavour {self.name}: file doesn't exist: {infopath}")
|
raise Exception(f"Error parsing flavour info for flavour {self.name}: file doesn't exist: {infopath}")
|
||||||
try:
|
try:
|
||||||
|
defaults = {'description': None}
|
||||||
with open(infopath, 'r') as fd:
|
with open(infopath, 'r') as fd:
|
||||||
infodict = json.load(fd)
|
infodict = json.load(fd)
|
||||||
i = FlavourInfo(**infodict)
|
i = FlavourInfo(**(defaults | infodict))
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
raise Exception(f"Error parsing {FLAVOUR_INFO_FILE} for flavour {self.name}: {ex}")
|
raise Exception(f"Error parsing {FLAVOUR_INFO_FILE} for flavour {self.name}: {ex}")
|
||||||
self.flavour_info = i
|
self.flavour_info = i
|
||||||
|
if i.description:
|
||||||
|
self.description = i.description
|
||||||
return i
|
return i
|
||||||
|
|
||||||
|
|
||||||
|
@ -112,5 +120,10 @@ def cmd_flavours_list():
|
||||||
flavours = get_flavours()
|
flavours = get_flavours()
|
||||||
if not flavours:
|
if not flavours:
|
||||||
raise Exception("No flavours found!")
|
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)
|
print(f)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue