mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-18 05:28:40 +00:00
266955ba65
This also includes the capability to build Rust protobuf blobs.
111 lines
2.6 KiB
Bash
Executable File
111 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env 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 \
|
|
$PROTOB/messages-webauthn.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() {
|
|
local FILE_OR_DIR="$1"
|
|
shift
|
|
local OUTPUT="$1"
|
|
shift
|
|
local SOURCES="$1"
|
|
shift
|
|
|
|
if [ "$FILE_OR_DIR" == file ]; then
|
|
local param="--outfile"
|
|
else
|
|
local param="--python-outdir"
|
|
fi
|
|
|
|
# note $SOURCES is unquoted - we want wildcard expansion and multiple args
|
|
$PROTOB/pb2py "$@" $param="$OUTPUT" $SOURCES
|
|
}
|
|
|
|
do_check() {
|
|
# rebuild protobuf in tmpdir and check result against specified directory
|
|
local TMPDIR=$(mktemp -d proto-check.XXXXXX)
|
|
|
|
local FILE_OR_DIR="$1"
|
|
shift
|
|
local OUTPUT="$1"
|
|
shift
|
|
|
|
if [ "$FILE_OR_DIR" == file ]; then
|
|
local TMPDEST="$TMPDIR/testfile"
|
|
else
|
|
cp -rT "$OUTPUT" "$TMPDIR"
|
|
local TMPDEST="$TMPDIR"
|
|
fi
|
|
|
|
do_rebuild "$FILE_OR_DIR" "$TMPDEST" "$@"
|
|
DIFF=$(diff -ur --exclude __pycache__ "$OUTPUT" "$TMPDEST")
|
|
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 dir core/src/trezor/enums "$CORE_PROTOBUF_SOURCES"
|
|
$func file core/src/trezor/enums/__init__.py "$CORE_PROTOBUF_SOURCES" --template=core/src/trezor/enums/_proto_init.mako
|
|
$func file core/src/trezor/messages.py "$CORE_PROTOBUF_SOURCES" --template=core/src/trezor/_proto_messages.mako
|
|
|
|
$func file python/src/trezorlib/messages.py "$PYTHON_PROTOBUF_SOURCES" \
|
|
--template=python/src/trezorlib/_proto_messages.mako \
|
|
--include-deprecated
|
|
|
|
exit $RETURN
|