124 lines
3.8 KiB
Markdown
124 lines
3.8 KiB
Markdown
# Syndicate utils
|
|
|
|
## cache_actor
|
|
|
|
An actor that observes patterns and reässerts the values they capture for a given lifetime. Takes the arguments `{ dataspace: #!any lifetime: double }`. The lifetime of a cache counts down from moment a value is asserted.
|
|
|
|
Example configuration:
|
|
```
|
|
? <nixspace ?nixspace> [
|
|
; Require the nix_actor during observations.
|
|
?nixspace> ? <Observe <rec eval _> _> [
|
|
$config <require-service <daemon nix_actor>> ]
|
|
?nixspace> ? <Observe <rec realise _> _> [
|
|
$config <require-service <daemon nix_actor>> ]
|
|
|
|
; Cache anything captured by observers in the $nixspace for an hour.
|
|
; The nix_actor is not required during caching.
|
|
$config ? <service-object <daemon cache_actor> ?cap> [
|
|
$cap { dataspace: $nixspace lifetime: 3600.0 } ]
|
|
]
|
|
```
|
|
|
|
## json_translator
|
|
|
|
Wrapper that executes a command, parses its JSON output, converts to Preserves record `<recv @jsonData any>`, and publishes and messages to its initial dataspace.
|
|
|
|
## json_socket_translator
|
|
|
|
Utility to communicate with sockets that send and receive lines of JSON using `<send …>` and `<recv …>` messages. Compatible with [mpv](https://mpv.io/), see [mpv.config-example.pr](./mpv.config-example.pr).
|
|
|
|
Do not send messages immediately to the dataspace passed `json_socket_translator`, wait until it asserts `<connected @socketPath string>`.
|
|
|
|
## mintsturdyref
|
|
|
|
A utility for minting [Sturdyrefs](https://synit.org/book/operation/builtin/gatekeeper.html#sturdyrefs).
|
|
|
|
## mount_actor
|
|
|
|
Actor for mounting filesystems on Linux.
|
|
|
|
Sample Syndicate server script:
|
|
```
|
|
# Assert a file-system we want to mount.
|
|
<mount "/dev/sda3" "/boot" "vfat">
|
|
|
|
# Transform mount assertions into mount status observations.
|
|
? <mount ?source ?target ?fs> [
|
|
? <mount $source $target $fs _> [ ]
|
|
]
|
|
|
|
# Assert mounting succeded.
|
|
? <mount _ ?target _ #t> [
|
|
<service-state <mountpoint $target> ready>
|
|
]
|
|
# Assert mount failed.
|
|
? <mount _ ?target _ <failure _>> [
|
|
<service-state <mountpoint $target> failed>
|
|
]
|
|
|
|
# Assert the details into the machine dataspace.
|
|
? <machine-dataspace ?machine> [
|
|
$config ? <mount ?source ?target ?fs ?status> [
|
|
$machine <mount $source $target $fs $status>
|
|
]
|
|
]
|
|
|
|
# Require the mount_actor daemon.
|
|
<require-service <daemon mount_actor>>
|
|
<daemon mount_actor {
|
|
argv: ["/home/emery/src/bin/mount_actor"]
|
|
protocol: application/syndicate
|
|
}>
|
|
|
|
# Pass the daemon the config dataspace.
|
|
? <service-object <daemon mount_actor> ?cap> [
|
|
$cap { dataspace: $config }
|
|
]
|
|
```
|
|
|
|
## msg
|
|
|
|
A utility that sends messages to `$SYNDICATE_ROUTE`.
|
|
|
|
|
|
## net_mapper
|
|
|
|
Publishes ICMP packet round-trip-times. See [net_mapper.prs](./net_mapper.prs) for a protocol description. [Source](./src/net_mapper.nim).
|
|
|
|
Example script:
|
|
```
|
|
? <machine-dataspace ?machine> [
|
|
$machine ? <rtt "10.0.33.136" ?min ?avg ?max> [
|
|
$log ! <log "-" { ping: { min: $min avg: $avg max: $max } }>
|
|
]
|
|
|
|
$config [
|
|
<require-service <daemon net_mapper>>
|
|
<daemon net_mapper {
|
|
argv: ["/bin/net_mapper"]
|
|
protocol: application/syndicate
|
|
}>
|
|
? <service-object <daemon net_mapper> ?cap> [
|
|
$cap { dataspace: $machine }
|
|
]
|
|
]
|
|
]
|
|
```
|
|
|
|
## preserve_process_environment
|
|
|
|
This utility serializes it's process environment to Preserves and prints it to stdout.
|
|
It can be used to feed the environment variables of a nested child of the Syndicate server back to the server. For example, to retreive the environmental variables that a desktop manager passed on to its children.
|
|
|
|
|
|
## syndump
|
|
|
|
Utility for printing assertions and messages. Parses the command-line arguments as a pattern, connects a dataspace via `$SYNDICATE_ROUTE`, and writes observations to standard-output. Published assertions are prefixed by the `+` character, retractions by `-`, and messages by `!`.
|
|
|
|
Example
|
|
```sh
|
|
# Print patterns in use, filter down with AWK to only the published patterns.
|
|
$ FS=':' syndump '<Observe ? _>' | awk -F : '/^+/ { print $2 }'
|
|
```
|