Files
contract/bin/build
dexorder 25def69c66 dexorder
2024-10-17 02:42:28 -04:00

49 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# this script requires the jq command $(sudo apt install jq)
# build_args=$(echo "$@" | sed 's/--debug//')
build_args=$(echo "$@")
## force full rebuild
#echo Full build, not incremental...
#rm -rf out/ broadcast/ cache/ gen/
# first-pass build
echo Building...
forge build $build_args || exit 1
# Debug print
# if echo "$@" | grep -wqe "--debug"; then
# echo Orderlib.sol should be first, if not then build --force should be triggered
# date
# OrderLib_deps
# fi
# Rebuild --force if OrderLib dependencies not built due to bug in forge
# if [ "./src/OrderLib.sol" != $(OrderLib_deps | head -n 1 | colrm 1 36) ]; then
# echo Rebuild --force because OrderLib dependencies not built due to forge bug...
# rm -rf out
# forge build --force "$@" || exit 1
# fi
# calculate the Vault init code hash using the bytecode generated for Vault
# shellcheck disable=SC2046
VAULT_INIT_CODE_HASH=$(cast keccak $(jq -r .bytecode.object < out/Vault.sol/Vault.json))
# put the hash value into the VaultAddress.sol source file
sed -i "s/VAULT_INIT_CODE_HASH = .*;/VAULT_INIT_CODE_HASH = $VAULT_INIT_CODE_HASH;/" src/more/VaultAddress.sol
# final build after init code hash is set
echo Build VaultAddress.sol...
forge build $build_args || exit 1
# Debug print
# if echo "$@" | grep -wqe "--debug"; then
# echo all compiled files:
# dated_flist "./out/*/*.json"
# dated_flist ./src/OrderLib.sol
# fi
echo Contracts built successfully.