This the multi-page printable view of this section. Click here to print.
CLI
1 - Factcast CLI
In order to help with quick testing or debugging, FactCast provides a very simple CLI that you can use to publish Facts or subscribe and print Facts received to stdout.
Usage
Once module factcast-grpc-cli is built, it provides a self-contained fc-cli.jar in its target folder. In order to use it, you can either run
java -jar path_to/fc-cli.jar <OPTIONS> <COMMAND> <COMMAND OPTIONS>
or just execute it as
path_to/fc-cli.jar <OPTIONS> <COMMAND> <COMMAND OPTIONS>
Help output at the time of writing is
Usage: fc-cli [options] [command] [command options]
Options:
--debug
show debug-level debug messages
--address
the address to connect to
Default: static://localhost:9090
--basic, -basic
Basic-Auth Crendentials in the form "user:password"
--no-tls
do NOT use TLS to connect (plaintext-communication)
--pretty
format JSON output
Commands:
catchup Read all the matching facts up to now and exit.
Usage: catchup [options]
Options:
-from
start reading AFTER the fact with the given id
* -ns
the namespace filtered on
follow read all matching facts and keep connected while listening for
new ones
Usage: follow [options]
Options:
-from
start reading AFTER the fact with the given id
-fromNowOn
read only future facts
* -ns
the namespace filtered on
publish publish a fact
Usage: publish [options]
Options:
* --header, -h
Filename of an existing json file to read the header from
* --payload, -p
Filename of an existing json file to read the payload from
enumerateNamespaces lists all namespaces in the factstore in no
particular order
Usage: enumerateNamespaces
enumerateTypes lists all types used with a namespace in no particular
order
Usage: enumerateTypes namespace
serialOf get the serial of a fact identified by id
Usage: serialOf id
2 - Schema Registry CLI
This CLI provides a convenient way to create a suitable Schema Registry for your FactCast installation. It will give you the ability to validate events against examples and to make sure that there’s always an upcast and if necessary a downcast transformation.
It produces a human and a machine-readable output. You will have to use hugo in order to get a proper static website.
A working example can be found here.
Build the example
The example will be built during mvn install
, but you can reach the same via
$ java -jar target/fc-schema-cli.jar build -p ../factcast-examples/factcast-example-schema-registry/src/main/resources
build
validates and builds the example and also produces a output
directory that contains the static website. Inside this folder run
$ hugo server
to get quick feedback or
$ hugo
in order to create the deployable schema registry (located at output/public
).
About CI Pipelines and Artifacts
We propose to the following pipeline
Build -> Package -> Upload
Build:
- runs the fc-schema-cli to build the registry
- fails on wrong input/broken schema
Package:
- runs
$ hugo
in order to produce the artifact
Upload:
- uploads
output/public
to static file server (like S3)
Available commands and options
$ java -jar target/fc-schema-cli.jar -h
███████╗ █████╗ ██████╗████████╗ ██████╗ █████╗ ███████╗████████╗
██╔════╝██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔══██╗██╔════╝╚══██╔══╝
█████╗ ███████║██║ ██║ ██║ ███████║███████╗ ██║
██╔══╝ ██╔══██║██║ ██║ ██║ ██╔══██║╚════██║ ██║
██║ ██║ ██║╚██████╗ ██║ ╚██████╗██║ ██║███████║ ██║
╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝
Usage: fc-schema [-hV] [COMMAND]
Tool for working with the FactCast Schema Registry spec
-h, --help Show this help message and exit.
-V, --version Print version information and exit.
Commands:
validate Validate your current events
build Validates and builds your registry
3 - 3rd Party CLI
As an alternative to the Factcast CLI there is the Python based PyFactCast. It is still in early development, but you might want to check it out.