Decodal/examples/advanced/main.dcdl

48 lines
792 B
Plaintext

let
schema = import "./schema.dcdl";
profiles = import "./profiles.dcdl";
mkService = (cfg: schema.Service) =>
cfg // {
summary = match cfg.env {
"prod": "production service";
"dev": "development service";
_: "custom service";
};
};
devService = mkService(
profiles.base & {
name = "api-dev";
port = 8443;
}
);
prodService = mkService(
profiles.prod & {
name = "api";
port = 9443;
}
);
disabledService = mkService(
profiles.disabled & {
name = "api-disabled";
port = 10443;
}
);
in
{
services = [
devService,
prodService,
disabledService,
];
selected = match "prod" {
"prod": prodService;
"dev": devService;
_: disabledService;
};
}