
Foundry is a portable, modular toolkit for Ethereum application development written in Rust. An `update-svm-lists.sh` script is included as a helper for myself / other maintainers to periodically update the solidity binary lists required by the `svm-rs` crate. Co-authored-by: mitchmindtree <mail@mitchellnordine.com>
48 lines
1.3 KiB
Bash
Executable File
48 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This script updates the Solidity binary lists required by the svm-rs
|
|
# crate.
|
|
# TODO: Bundle this into an updater script
|
|
|
|
set -euo pipefail
|
|
|
|
# Get the directory of the current script
|
|
script_dir=$(dirname "$(realpath "$0")")
|
|
|
|
# Directory where the files will be downloaded
|
|
dir="${script_dir}/svm-lists"
|
|
|
|
# URLs of the files
|
|
urls=(
|
|
"https://binaries.soliditylang.org/macosx-amd64/list.json"
|
|
"https://binaries.soliditylang.org/linux-amd64/list.json"
|
|
)
|
|
|
|
# Create the directory (no error if it already exists)
|
|
mkdir -p "$dir"
|
|
|
|
# Function to extract filename from URL
|
|
extract_filename() {
|
|
url=$1
|
|
# Extract the parent directory name and append .json
|
|
echo "$(basename "$(dirname "$url")").json"
|
|
}
|
|
|
|
# Function to fix line endings and remove trailing newline
|
|
ensure_unix_format() {
|
|
file=$1
|
|
# Convert to Unix LF line endings and ensure there's no trailing newline
|
|
tr -d '\r' < "$file" | sed -e '$a\' > "${file}.tmp" && mv "${file}.tmp" "$file"
|
|
}
|
|
|
|
# Iterate over the URLs
|
|
for url in "${urls[@]}"; do
|
|
# Extract filename from URL
|
|
filename=$(extract_filename "$url")
|
|
|
|
# Download the file and fix line endings
|
|
echo "Fetching $url to $dir/$filename"
|
|
curl -sL "$url" -o "${dir}/${filename}"
|
|
ensure_unix_format "${dir}/${filename}"
|
|
done
|