#!/bin/bash rm ./rust-grpc/src/lib.rs for f in *.proto do name=$(basename $f .proto) module=./rust-grpc/src/$name mkdir -p $module protoc \ --prost_out=$module \ --tonic_out=$module \ $f #I couldn't figure out how to configure protoc to do this sed -i "s/, PartialEq, ::prost::Message)\]/, PartialEq, ::prost::Message, serde::Serialize, serde::Deserialize)\]\n#\[serde(rename_all = \"PascalCase\")\]/g" "$module/$name.rs" sed -i "s/ pub id:/ #\[serde(rename = \"ID\")\]\n pub id:/g" "$module/$name.rs" sed -i "s/ pub map_id:/ #\[serde(rename = \"MapID\")\]\n pub map_id:/g" "$module/$name.rs" sed -i "s/ pub time_id:/ #\[serde(rename = \"TimeID\")\]\n pub time_id:/g" "$module/$name.rs" sed -i "s/ pub file_id:/ #\[serde(rename = \"FileID\")\]\n pub file_id:/g" "$module/$name.rs" sed -i "s/ pub game_id:/ #\[serde(rename = \"GameID\")\]\n pub game_id:/g" "$module/$name.rs" sed -i "s/ pub user_id:/ #\[serde(rename = \"UserID\")\]\n pub user_id:/g" "$module/$name.rs" sed -i "s/ pub mode_id:/ #\[serde(rename = \"ModeID\")\]\n pub mode_id:/g" "$module/$name.rs" sed -i "s/ pub style_id:/ #\[serde(rename = \"StyleID\")\]\n pub style_id:/g" "$module/$name.rs" sed -i "s/ pub state_id:/ #\[serde(rename = \"StateID\")\]\n pub state_id:/g" "$module/$name.rs" sed -i "s/ pub place_id:/ #\[serde(rename = \"PlaceID\")\]\n pub place_id:/g" "$module/$name.rs" sed -i "s/ pub vip_server_id:/ #\[serde(rename = \"VipServerID\")\]\n pub vip_server_id:/g" "$module/$name.rs" mv "$module/$name.rs" "$module/mod.rs" echo "pub mod $name;" >> ./rust-grpc/src/lib.rs done