syndicate-rs/syndicate-server/protocols/schemas/externalServices.prs

56 lines
2.2 KiB
Plaintext

version 1 .
embeddedType EntityRef.Cap .
Service = DaemonService .
DaemonService = <daemon @id any> .
DaemonProcess = <daemon @id any @config DaemonProcessSpec>.
DaemonProcessSpec = @simple CommandLine / @oneShot <one-shot @setup CommandLine> / @full FullDaemonProcess .
FullDaemonProcess = @process FullProcess & @readyOnStart ReadyOnStart & @restart RestartField & @protocol ProtocolField .
ReadyOnStart = @present { readyOnStart: bool } / @invalid { readyOnStart: any } / @absent {} .
RestartField = @present { restart: RestartPolicy } / @invalid { restart: any } / @absent {} .
ProtocolField = @present { protocol: Protocol } / @invalid { protocol: any } / @absent {} .
Process = @simple CommandLine / @full FullProcess .
FullProcess =
& { argv: CommandLine }
& @env ProcessEnv
& @dir ProcessDir
& @clearEnv ClearEnv
.
ProcessEnv = @present { env: { EnvVariable: EnvValue ...:... } } / @invalid { env: any } / @absent {} .
ProcessDir = @present { dir: string } / @invalid { dir: any } / @absent {} .
ClearEnv = @present { clearEnv: bool } / @invalid { clearEnv: any } / @absent {} .
CommandLine = @shell string / @full FullCommandLine .
FullCommandLine = [@program string, @args string ...] .
EnvVariable = @string string / @symbol symbol / @invalid any .
EnvValue = @set string / @remove #f / @invalid any .
RestartPolicy =
/ # Whether the process terminates normally or abnormally, restart it
# without affecting any peer processes within the service.
=always
/ # If the process terminates normally, leave everything alone; if it
# terminates abnormally, restart it without affecting peers.
@onError =on-error
/ # If the process terminates normally, leave everything alone; if it
# terminates abnormally, restart the whole daemon (all processes
# within the daemon).
=all
/ # Treat both normal and abnormal termination as normal termination; that is, never restart,
# and enter state "complete" even if the process fails.
=never
.
Protocol =
/ # stdin is /dev/null, output and error are logged
=none
/ # stdin and stdout are *binary* Syndicate-protocol channels
@binarySyndicate =application/syndicate
/ # stdin and stdout are *text* Syndicate-protocol channels
@textSyndicate =text/syndicate
.