| #!/bin/sh -ex |
| |
| cd "$(dirname "$0")" |
| |
| die() { |
| echo "$@" >&2 |
| exit 1 |
| } |
| |
| protoc_ver=$(protoc --version) |
| case "$protoc_ver" in |
| "libprotoc 3"*) ;; |
| *) |
| die "you need to use protobuf 3 to regenerate .rs from .proto" |
| ;; |
| esac |
| |
| cargo build --manifest-path=../protobuf-codegen/Cargo.toml |
| cargo build --manifest-path=../protoc-bin-vendored/Cargo.toml --bin protoc-bin-which |
| |
| PROTOC=$(cargo run --manifest-path=../protoc-bin-vendored/Cargo.toml --bin protoc-bin-which) |
| |
| where_am_i=$( |
| cd .. |
| pwd |
| ) |
| |
| rm -rf tmp-generated |
| mkdir tmp-generated |
| |
| case $(uname) in |
| Linux) |
| exe_suffix="" |
| ;; |
| MSYS_NT*) |
| exe_suffix=".exe" |
| ;; |
| esac |
| |
| "$PROTOC" \ |
| --plugin=protoc-gen-rust="$where_am_i/target/debug/protoc-gen-rust$exe_suffix" \ |
| --rust_out tmp-generated \ |
| --rust_opt 'serde_derive=true inside_protobuf=true' \ |
| -I../proto \ |
| -I../protoc-bin-vendored/include \ |
| ../protoc-bin-vendored/include/google/protobuf/*.proto \ |
| ../protoc-bin-vendored/include/google/protobuf/compiler/* \ |
| ../proto/rustproto.proto |
| |
| mv tmp-generated/descriptor.rs tmp-generated/plugin.rs tmp-generated/rustproto.rs src/ |
| mv tmp-generated/*.rs src/well_known_types/ |
| ( |
| cd src/well_known_types |
| exec >mod.rs |
| echo "// This file is generated. Do not edit" |
| echo '//! Generated code for "well known types"' |
| echo "//!" |
| echo "//! [This document](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf) describes these types." |
| |
| mod_list() { |
| # shellcheck disable=SC2010 |
| ls | grep -v mod.rs | sed -e 's,\.rs$,,' |
| } |
| |
| echo |
| mod_list | sed -e 's,^,mod ,; s,$,;,' |
| |
| echo |
| mod_list | while read -r mod; do |
| echo "pub use self::$mod::*;" |
| done |
| ) |
| |
| # vim: set ts=4 sw=4 et: |