elm-protobuf
elm-protobuf copied to clipboard
protobuf plugin for elm
elm-protobuf
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/floatfields - [x]
int32/int64/uint32/uint64/sint32/sint64/fixed32/fixed64/sfixed32/sfixed64fields - [x]
boolfields - [x]
stringfields - [ ]
bytesfields - [x] message fields
- [x] enum fields
- [x] imports
- [x] nested types
- [ ]
Anytype - [x]
Timestamptype - [ ]
Durationtype - [ ]
Structtype - [x] wrapper types
- [ ]
FieldMasktype - [ ]
ListValuetype - [ ]
Valuetype - [ ]
NullValuetype - [x]
oneof - [ ]
map - [ ] packages
- [ ] options
How to install
Release
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/binis included in your$PATH. See https://golang.org/doc/install for info. -
Install a recent
protoccompiler version from https://github.com/google/protobuf (it must have support forproto3format). -
Obtain the
protoc-gen-elmbinary usinggo 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 install tiziano88/elm-protobuf
References
https://developers.google.com/protocol-buffers/
https://developers.google.com/protocol-buffers/docs/proto3#json
https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.compiler.plugin.pb
https://github.com/google/protobuf/wiki/Third-Party-Add-ons