27 lines
736 B
Python
27 lines
736 B
Python
from marshmallow import Schema, fields
|
|
from marshmallow.validate import Length, Equal
|
|
from marshmallow import RAISE
|
|
|
|
SUPPORTED_PROGRAM_STRUCTURE_VERSION = 1
|
|
|
|
|
|
class CommandSchema(Schema):
|
|
command = fields.Str(required=True)
|
|
args = fields.Dict(required=True)
|
|
|
|
class Meta:
|
|
unknown = RAISE
|
|
|
|
|
|
class ProgramSchema(Schema):
|
|
_id = fields.Str(required=False)
|
|
created_at = fields.DateTime(required=False)
|
|
name = fields.Str()
|
|
|
|
version = fields.Int(required=True, validate=Equal(SUPPORTED_PROGRAM_STRUCTURE_VERSION))
|
|
load_plugins = fields.List(fields.Str(), required=True)
|
|
program = fields.Nested(CommandSchema, many=True, required=True, validate=Length(min=1))
|
|
|
|
class Meta:
|
|
unknown = RAISE
|