40 lines
944 B
Text
40 lines
944 B
Text
|
|
# Workspace Configuration Schema
|
||
|
|
# Defines the structure and validation rules for workspace metadata and settings
|
||
|
|
|
||
|
|
let defaults_val = import "./workspace-defaults.ncl" in
|
||
|
|
|
||
|
|
{
|
||
|
|
# Contract definitions for workspace components
|
||
|
|
|
||
|
|
WorkspaceKind = std.contract.from_predicate (fun x =>
|
||
|
|
x == 'tenant || x == 'fleet_host
|
||
|
|
),
|
||
|
|
|
||
|
|
WorkspaceMetadata = {
|
||
|
|
owner | String,
|
||
|
|
created | String,
|
||
|
|
environment | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
WorkspaceConfig = {
|
||
|
|
name | String,
|
||
|
|
path | String,
|
||
|
|
description | String,
|
||
|
|
metadata | WorkspaceMetadata,
|
||
|
|
kind | WorkspaceKind | default = 'tenant,
|
||
|
|
},
|
||
|
|
|
||
|
|
# Hybrid interface: Defaults, makers, and instances
|
||
|
|
defaults = defaults_val,
|
||
|
|
|
||
|
|
make_metadata | not_exported = fun o =>
|
||
|
|
defaults_val.metadata & o,
|
||
|
|
|
||
|
|
make_workspace | not_exported = fun o =>
|
||
|
|
defaults_val.workspace & o,
|
||
|
|
|
||
|
|
# Default instances
|
||
|
|
DefaultMetadata = defaults_val.metadata,
|
||
|
|
DefaultWorkspaceConfig = defaults_val.workspace,
|
||
|
|
}
|