A command-line utility to pretty print structures encoded using Erlang's External Term Format. The input is read from stdin or a file and written to stdout, making ppbert a good candidate for shell pipelines.
At the moment, ppbert supports the following subset of the External Term Format:
``` $ ppbert -h ppbert 0.4.0 Vincent Foley Pretty print structure encoded in Erlang's External Term Format
USAGE: ppbert [FLAGS] [OPTIONS] [FILES]...
FLAGS: -2, --bert2 Parse .bert2 files -h, --help Prints help information -j, --json Output in JSON -p, --parse Parse the input, don't pretty print it --transform-proplists Transform proplists into JSON objects (only valid with --json) -V, --version Prints version information -v, --verbose Enable verbose mode
OPTIONS:
-i, --indent-width
ARGS:
$ ppbert mini_dict.bert [ {host, "localhost"}, {port, 80}, { headers, [ { <<"X-Real-Ip">>, {127, 0, 0, 1} }, {<<"Keep-alive">>, true} ] } ]
$ printf "\x83\x77\x04atom" | ppbert atom ```
Ppbert is written in Rust and offers an appreciable performance gain
over using Erlang's erlang:binary_to_term/1
and io:format/2
.
```sh $ cat erl_ppbert
main(Args) -> lists:foreach(fun (Filename) -> {ok, Binary} = file:readfile(Filename), io:format("~p~n", [binaryto_term(Binary)]) end, Args).
$ du large.bert 96M large.bert
$ time ./erl_ppbert large.bert >/dev/null
real 1m10.968s user 0m49.644s sys 0m13.628s
$ time ppbert large.bert >/dev/null
real 0m6.902s user 0m6.116s sys 0m0.452s ```
A command-line utility to convert a bert file encoded in bertconf's DB format to rig's format.
``` $ bert-convert -h bert-convert 0.4.0 Vincent Foley Convert bertconf .bert files to rig .bert2 files
USAGE: bert-convert [FLAGS] [OPTIONS] [FILES]...
FLAGS: -h, --help Prints help information -V, --version Prints version information -v, --verbose Enables verbose mode
OPTIONS: -d, --output-dir
ARGS:
$ bert-convert -v -d /tmp/bert2 large.bert bert-convert: large.bert: Parse time: 0.556925379s; Dump time: 0.580329024s
$ ls /tmp/bert2 large.bert2 ```