Skip to content

Instantly share code, notes, and snippets.

@cambierr
Created September 14, 2016 13:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cambierr/330af815f18860ad9a9af8c3ed0ad0c1 to your computer and use it in GitHub Desktop.
Save cambierr/330af815f18860ad9a9af8c3ed0ad0c1 to your computer and use it in GitHub Desktop.
The Things Network java protobuf extractor
#!/bin/bash
root=$(pwd)
workdir="$root/src/main/proto"
javaPackageName='com.example.foo.bar'
branch='refactor'
echo "##############################"
echo "Cleaning workspace...";
echo "##############################"
rm -rf "$workdir/github.com/TheThingsNetwork/ttn"
rm -rf "$workdir/github.com/gogo/protobuf/gogoproto/gogo.proto"
mkdir -p "$workdir/github.com/gogo/protobuf/gogoproto/"
mkdir -p "$workdir/github.com/TheThingsNetwork"
echo "done."
echo "##############################"
echo "Fetching gogo.proto";
echo "##############################"
cd "$workdir/github.com/gogo/protobuf/gogoproto/"
wget https://raw.githubusercontent.com/gogo/protobuf/master/gogoproto/gogo.proto
echo "done."
echo "##############################"
echo "Fetching ttn repo..";
echo "##############################"
cd "$workdir/github.com/TheThingsNetwork"
git clone -b $branch https://github.com/TheThingsNetwork/ttn.git
echo "done."
echo "##############################"
echo "Patching files...";
echo "##############################"
folders=`find "$workdir/github.com/TheThingsNetwork/ttn/api" -type f -name "*.proto"`
for i in $folders
do
sed -n -i "H;\${x;s/^\n//;s/package .*\n/option java_package = \"$javaPackageName\";\n\n&/;p;}" $i
done
echo "done."
echo "##############################"
echo "over!"
echo "##############################"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment