75 lines
1.7 KiB
Bash
Executable File
75 lines
1.7 KiB
Bash
Executable File
#!/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:
|