#!/usr/bin/env bash

# script/cibuild: Setup environment for CI to run tests. This is primarily
#                 designed to run on the continuous integration server.

set -e

cd "$(dirname "$0")/.."

if [ "$EMULATOR" = 1 ]; then
    make -C emulator
else
    make -C vendor/libopencm3 lib/stm32/f2
fi

make

if [ "$EMULATOR" != 1 ]; then
    make -C bootloader
fi

# invoking nanopb_generator to make sure its proto files are generated
nanopb_generator >/dev/null || true
make -C firmware/protob

make -C firmware

if [ "$EMULATOR" != 1 ]; then
    make -C firmware sign
    make -C intermediate_fw
    make -C intermediate_fw sign

    # Giving the firmware bin a descriptive name
    if [ "$BITCOIN_ONLY" = 1 ]; then
        BTCONLY="-bitcoinonly"
    else
        BTCONLY=""
    fi
    VERSION_MAJOR=$(grep -P '\bVERSION_MAJOR\b' firmware/version.h | cut -d' ' -f3)
    VERSION_MINOR=$(grep -P '\bVERSION_MINOR\b' firmware/version.h | cut -d' ' -f3)
    VERSION_PATCH=$(grep -P '\bVERSION_PATCH\b' firmware/version.h | cut -d' ' -f3)
    VERSION="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
    GITHASH=$(git rev-parse --short HEAD)
    if git status --porcelain | grep -q '.'; then
        echo "There are changes in the repository."
        DIRTY="-dirty"
    else
        DIRTY=""
    fi
    cp firmware/trezor.bin firmware/firmware-T1B1${BTCONLY}-${VERSION}-${GITHASH}${DIRTY}.bin
fi
