Build StatusGo Report Card

Join #elm-protobuf on Slack

Experimental protobuf plugin generating elm code to decode/encode Proto3/JSON from proto definitions.

The plugin itself is written in Go, and it requires the base protoc protobuf compiler to be installed on the system.

For a sample generated output file, see Repeated.elm.

Supported features

  • [x] double/float fields
  • [x] int32/int64/uint32/uint64/sint32/sint64/fixed32/fixed64/sfixed32/sfixed64 fields
  • [x] bool fields
  • [x] string fields
  • [ ] bytes fields
  • [x] message fields
  • [x] enum fields
  • [x] imports
  • [x] nested types
  • [ ] Any type
  • [x] Timestamp type
  • [ ] Duration type
  • [ ] Struct type
  • [x] wrapper types
  • [ ] FieldMask type
  • [ ] ListValue type
  • [ ] Value type
  • [ ] NullValue type
  • [x] oneof
  • [ ] map
  • [ ] packages
  • [ ] options

How to install


The simplest way to install the plugin is to download a pre-compiled binary from https://github.com/tiziano88/elm-protobuf/releases , then unpack it and copy or move the protoc-gen-elm binary somewhere in your $PATH.

From source

  • Make sure that you have a Go environment correctly set up, and that $GOPATH/bin is included in your $PATH. See https://golang.org/doc/install for info.

  • Install a recent protoc compiler version from https://github.com/google/protobuf (it must have support for proto3 format).

  • Obtain the protoc-gen-elm binary using go get:

    go get github.com/tiziano88/elm-protobuf/protoc-gen-elm

How to run

Run the protoc compiler specifying the --elm_out flag:

protoc --elm_out=. *.proto

protoc will automatically detect the protoc-gen-elm binary from your $PATH and use it to generate the output elm code.

Then, in your project, add a dependency on the runtime library:

elm package install tiziano88/elm-protobuf