0g-storage-node/scripts/update_abis.sh
2024-07-22 17:32:51 +08:00

66 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
set -e
default_path="../0g-storage-contracts"
path="${1:-$default_path}"
# Step 1: Check if the path is a valid Git directory with commits
if [ ! -d "$path/.git" ] || [ -z "$(git -C "$path" rev-parse HEAD 2> /dev/null)" ]; then
echo "Error: The specified path is not a valid Git repository with commits."
exit 1
fi
if [ ! -z "$(git -C "$path" status --porcelain)" ]; then
echo "Error: There are uncommitted changes in the contract repository."
exit 1
fi
# Step 2: Build the contracts
build_contracts() {
local target_path="$path"
local original_path=$(pwd) # Save the current directory
if cd "$target_path"; then
yarn
yarn build
cd "$original_path"
else
echo "Error: Failed to switch to directory $target_path."
exit 1
fi
}
build_contracts
# Step 3: Copy the file from a specified sub-path
copy_file() {
local source_path="$1"
local destination_path="$2"
# Check if the source file exists
if [ ! -f "$source_path" ]; then
echo "Error: The file $source_path does not exist."
exit 1
fi
# Copy the file to the destination
cp "$source_path" "$destination_path"
echo "File copied: $source_path -> $destination_path."
}
copy_abis() {
for contract_name in "$@"; do
copy_file $(./scripts/search_abi.sh "$path/artifacts" "$contract_name.json") "storage-contracts-abis/$contract_name.json"
done
}
copy_abis DummyMarket DummyReward Flow PoraMine PoraMineTest FixedPrice OnePoolReward FixedPriceFlow
# Step 4: Get the current Git revision and write it to a specified file
git_revision=$(git -C "$path" rev-parse HEAD)
revision_file="storage-contracts-abis/0g-storage-contracts-rev"
echo "$git_revision" > "$revision_file"
echo "Write git rev $git_revision to $revision_file."