aboutsummaryrefslogtreecommitdiff
path: root/regenerate.sh
diff options
context:
space:
mode:
Diffstat (limited to 'regenerate.sh')
-rwxr-xr-xregenerate.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/regenerate.sh b/regenerate.sh
new file mode 100755
index 0000000..a1e0dd9
--- /dev/null
+++ b/regenerate.sh
@@ -0,0 +1,66 @@
+#!/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
+
+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 \
+ ../proto/google/protobuf/*.proto \
+ ../proto/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() {
+ ls | grep -v mod.rs | sed -e 's,\.rs$,,'
+ }
+
+ echo
+ mod_list | sed -e 's,^,mod ,; s,$,;,'
+
+ echo
+ mod_list | while read mod; do
+ echo "pub use self::$mod::*;"
+ done
+)
+
+# vim: set ts=4 sw=4 et: