Skip to content

Update README.md with explanation of the design. #21

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ web-based playground hosted on Github](https://google.github.io/xtoproto).

More details about how to use xtoproto will be added soon.

## Design

xtoproto uses example data to infer a both *protobuf definition*, a *source
record spec*, and a *mapping definition*.

* The *protobuf definition* can be
represented in a `.proto` file with a custom `message` type for the record being
inferred.
* The *source record spec* is a specification for well-formed input data. For a
CSV-to-proto translation, this would be a schema for the CSV input: names and
types of columns.
* The *mapping definition* defines how to convert from the source record spec to
the destination proto type.


### Formats
The following formats currently have some support:

1. CSV (comma separated values).

## Building

The project is buildable with Bazel and `go build`. Bazel is recommended because
Expand Down