Open mr-cal opened 4 days ago
Create a base Project model and a set of inherited models for each base and snap type.
Some pseudocode from @lengau:
class Project: ... class BaseProject(Project): type: Literal["base"] build-base: BaseEnum class AppProject(Project): base: BaseEnum class BareProject(AppProject): base: BaseEnum.BARE class Core22Project(AppProject): base: BaseEnum.CORE22 class Core22KernelProject(Core22Project): type: kernel UnionAppProject = ... UnionKernelProject = ... SnapcraftProject = Annotated[ BaseProject | SnapdProject | GadgetProject | UnionAppProject | UnionKernelProject, Field(discriminator="type") ]
Snapcraft has a single Project model with declarative validation like "if base is core24, then architectures is not allowed".
architectures
This needs a more sophisticated approach:
What needs to get done
Create a base Project model and a set of inherited models for each base and snap type.
Some pseudocode from @lengau:
Why it needs to get done
Snapcraft has a single Project model with declarative validation like "if base is core24, then
architectures
is not allowed".This needs a more sophisticated approach: