1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#!/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:
|