#!/bin/bash cd $(dirname $0)/.. PROTOB=common/protob CORE_PROTOBUF_SOURCES="\ $PROTOB/messages.proto \ $PROTOB/messages-binance.proto \ $PROTOB/messages-bitcoin.proto \ $PROTOB/messages-cardano.proto \ $PROTOB/messages-common.proto \ $PROTOB/messages-crypto.proto \ $PROTOB/messages-debug.proto \ $PROTOB/messages-eos.proto \ $PROTOB/messages-ethereum.proto \ $PROTOB/messages-lisk.proto \ $PROTOB/messages-management.proto \ $PROTOB/messages-monero.proto \ $PROTOB/messages-nem.proto \ $PROTOB/messages-ripple.proto \ $PROTOB/messages-stellar.proto \ $PROTOB/messages-tezos.proto \ " PYTHON_PROTOBUF_SOURCES=$PROTOB/*.proto CORE_MESSAGES_IGNORE="\ CosiCommit \ CosiCommitment \ CosiSign \ CosiSignature \ DebugLinkFlashErase \ DebugLinkLog \ DebugLinkMemory \ DebugLinkMemoryRead \ DebugLinkMemoryWrite \ DebugLinkStop \ NEMDecryptMessage \ NEMDecryptedMessage \ PinMatrixAck \ PinMatrixRequest \ PinMatrixRequestType \ WordAck \ WordRequest \ WordRequestType \ " PYTHON_MESSAGES_IGNORE="" RETURN=0 do_rebuild() { # rebuild protobuf in specified directory local DESTDIR="$1" shift local SOURCES="$1" shift local IGNORE="$1" shift mkdir -p "$DESTDIR" rm -f "$DESTDIR"/[A-Z]*.py # note $SOURCES is unquoted - we want wildcard expansion and multiple args $PROTOB/pb2py "$@" -o "$DESTDIR" $SOURCES # delete unused messages for F in $IGNORE; do rm -f "$DESTDIR"/"$F".py done } do_check() { # rebuild protobuf in tmpdir and check result against specified directory local TMPDIR=$(mktemp -d proto-check.XXXXXX) local DESTDIR="$1" shift cp -rT "$DESTDIR" "$TMPDIR" do_rebuild "$TMPDIR" "$@" DIFF=$(diff -ur "$DESTDIR" "$TMPDIR") rm -r "$TMPDIR" if [ -n "$DIFF" ]; then echo "$DIFF" RETURN=1 fi } if [ "$1" == "--check" ]; then func=do_check else func=do_rebuild fi $func core/src/trezor/messages "$CORE_PROTOBUF_SOURCES" "$CORE_MESSAGES_IGNORE" --no-init-py $func python/src/trezorlib/messages "$PYTHON_PROTOBUF_SOURCES" "$PYTHON_MESSAGES_IGNORE" -P ..protobuf exit $RETURN