record-query 1.0.4

A tool for doing record analysis and transformation
Documentation
# Protobuf

The Google Protocol Buffer support in `rq` is special because Protobuf
requires an external schema to parse messages.

`rq` maintains its own database of Protobuf schemata that is used to
parse messages.  You can add a schema to the database and all
definitions in that schema will be made available.  The schemata all
share the same namespace so you can't provide conflicting definitions
for messages.

## Adding new schemata

Adding new schemata to the database is simple:

    rq protobuf add myschema.proto

This stashes away the schema to be used the next time you run `rq`
with the `-p` flag.

Some schemata need to be in specific directories because of references
by other schema files.  `rq` will by default use the relative file
name specified in the invocation to save the file internally.  That
means that if you call `rq` like so:

    rq protobuf add foo/bar/schema.proto

...then the schema will be stored internally with the given relative
path of `foo/bar/schema.proto`.  You can control this behavior with
the `--base` flag, so this:

    rq protobuf add foo/bar/schema.proto --base foo

...will store the schema as `bar/schema.proto`.

## Deserializing messages

You specify the fully qualified message name when deserializing
Protobuf:

    rq -p .foo.bar.Person

The leading `.` is needed to disambiguate namespace/package aliases,
which are yet to be implemented.