49 lines
1.4 KiB
Bash
Executable File
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.
|