Access remote actors, publish services, subscribe to messages and state updates etc., via the Syndicate network protocol from bash (and perhaps other shells).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.4 KiB

syndicate-sh

This is an implementation of the Syndicate network protocol (based on Preserves) for Bash.

Q. Is this a joke, or is this serious?
A. Yes.

Dependencies

First, it depends on Bash-specific shell features.

Second, you'll need a Syndicate network server ("broker"). The best option at present is the Rust-language server. Unfortunately it relies on a few nightly-only features of Rust, so I use rustup to get a nightly toolchain, and then use that:

# compiling syndicate-server from source needs these things:
apt install libssl-dev pkg-config curl build-essential

# this is the command-line given by https://rustup.rs/:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# follow the instructions
# then log out and in again

# now you can get the nightly toolchain:
rustup toolchain install nightly

# and finally the server:
cargo +nightly install syndicate-server

Third, you'll need the preserves-tool program, which syndicate.sh uses to slice and dice network packets. It's also written in Rust (but doesn't require nightly), so you can get it with:

cargo install preserves-tools

Running the demo

Start the server in one terminal, in the same directory as the syndicate.sh file:

syndicate-server -s ./sock

Then, in one or more other terminals, run syndicate.sh:

./syndicate.sh