mirror of
https://github.com/FuelLabs/sway.git
synced 2025-07-07 21:25:21 +00:00

## Description Adds a CI check for typos and fixes all* typos in code, comments, and docs. *found by [typos-cli](https://github.com/crate-ci/typos) `typos` doesn't catch everything, but it seems to work better than codespell and cargo-spellcheck (fewer false positives). ## Checklist - [ ] I have linked to any relevant issues. - [ ] I have commented my code, particularly in hard-to-understand areas. - [ ] I have updated the documentation where relevant (API docs, the reference, and the Sway book). - [ ] If my change requires substantial documentation changes, I have [requested support from the DevRel team](https://github.com/FuelLabs/devrel-requests/issues/new/choose) - [ ] I have added tests that prove my fix is effective or that my feature works. - [ ] I have added (or requested a maintainer to add) the necessary `Breaking*` or `New Feature` labels where relevant. - [ ] I have done my best to ensure that my PR adheres to [the Fuel Labs Code Review Standards](https://github.com/FuelLabs/rfcs/blob/master/text/code-standards/external-contributors.md). - [ ] I have requested a review from the relevant team or maintainers.
115 lines
4.1 KiB
Bash
Executable file
115 lines
4.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
|
|
PREPARE_FOR_COMMIT=false
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
key="$1"
|
|
case $key in
|
|
--prepare-for-commit)
|
|
PREPARE_FOR_COMMIT=true
|
|
shift # past argument
|
|
;;
|
|
*)
|
|
shift # past argument
|
|
;;
|
|
esac
|
|
done
|
|
|
|
benchmarks_dir="benchmarks"
|
|
if [ ! -d "$benchmarks_dir" ]; then
|
|
mkdir -p "$benchmarks_dir"
|
|
fi
|
|
|
|
if [ -d "$SCRIPT_DIR/target/release" ]; then
|
|
build_type="release"
|
|
elif [ -d "$SCRIPT_DIR/target/debug" ]; then
|
|
build_type="debug"
|
|
else
|
|
echo "Neither target/release nor target/debug directories found. Exiting..."
|
|
exit 1
|
|
fi
|
|
|
|
forc_path="$SCRIPT_DIR/target/$build_type/forc"
|
|
|
|
# prepare the benchmark data for commit if requested
|
|
if $PREPARE_FOR_COMMIT; then
|
|
sway_performance_data_dir=performance-data
|
|
sway_performance_data_repo_url=git@github.com:FuelLabs/sway-performance-data.git
|
|
|
|
if [ ! -d "$SCRIPT_DIR/$sway_performance_data_dir" ]; then
|
|
echo "Directory $sway_performance_data_dir not found. Cloning the repository..."
|
|
git clone "$sway_performance_data_repo_url" "$sway_performance_data_dir"
|
|
echo "Repository cloned into $sway_performance_data_dir."
|
|
else
|
|
echo "Updating sway-performance-data repository..."
|
|
git -C "$SCRIPT_DIR/$sway_performance_data_dir" pull
|
|
fi
|
|
|
|
mkdir -p "$SCRIPT_DIR/$sway_performance_data_dir/$GITHUB_SHA"
|
|
cp -r $benchmarks_dir/* "$SCRIPT_DIR/$sway_performance_data_dir/$GITHUB_SHA"
|
|
else
|
|
sway_libs_dir=sway-libs
|
|
sway_libs_repo_url=https://github.com/FuelLabs/sway-libs.git
|
|
sway_libs_branch_name="benchmarks"
|
|
|
|
if [ ! -d "$SCRIPT_DIR/$sway_libs_dir" ]; then
|
|
echo "Directory $sway_libs_dir not found. Cloning the repository..."
|
|
git clone -b "$sway_libs_branch_name" "$sway_libs_repo_url" "$sway_libs_dir"
|
|
echo "Repository cloned with branch $sway_libs_branch_name into $sway_libs_dir."
|
|
fi
|
|
|
|
libs=(
|
|
"fixed_point"
|
|
"merkle_proof"
|
|
"nft"
|
|
"ownership"
|
|
"reentrancy"
|
|
"signed_integers"
|
|
"storagemapvec"
|
|
"strings/storage_string"
|
|
"strings/string"
|
|
)
|
|
|
|
sway_apps_dir=sway-applications
|
|
sway_apps_repo_url=https://github.com/FuelLabs/sway-applications.git
|
|
sway_apps_branch_name="master"
|
|
|
|
if [ ! -d "$SCRIPT_DIR/$sway_apps_dir" ]; then
|
|
echo "Directory $sway_apps_dir not found. Cloning the repository..."
|
|
git clone -b "$sway_apps_branch_name" "$sway_apps_repo_url" "$sway_apps_dir"
|
|
echo "Repository cloned with branch $sway_apps_branch_name into $sway_apps_dir."
|
|
fi
|
|
|
|
sway_libs_revision=$(git -C $SCRIPT_DIR/$sway_libs_dir rev-parse HEAD)
|
|
sway_apps_revision=$(git -C $SCRIPT_DIR/$sway_apps_dir rev-parse HEAD)
|
|
sway_git_revision=$(git rev-parse HEAD)
|
|
|
|
for lib in "${libs[@]}"; do
|
|
echo "Benchmarking $lib..."
|
|
project_name=$(basename "$lib")
|
|
metrics_json_file="$benchmarks_dir/$project_name.json"
|
|
output=$(/usr/bin/time -f '{"elapsed": "%e", "cpu_usage": "%P", "memory": "%MKB"}' \
|
|
$forc_path build --path "$SCRIPT_DIR/sway-libs/libs/$lib" \
|
|
--metrics-outfile="$metrics_json_file" 2>&1)
|
|
|
|
exit_status=$?
|
|
if [ $exit_status -ne 0 ]; then
|
|
echo " Failed, ignoring."
|
|
continue
|
|
fi
|
|
|
|
# filter out forc warnings by only matching on the JSON metrics data
|
|
json_stats=$(echo "$output" | grep -Eo '^\s*{[^}]*}')
|
|
|
|
metrics_json=$(cat "$metrics_json_file" | jq '{phases: .}')
|
|
merged_json=$(jq -s '.[0] * .[1]' <(echo "$metrics_json") <(echo "$json_stats"))
|
|
merged_json=$(jq --arg bt "$build_type" '. + {build_type: $bt}' <<< "$merged_json")
|
|
merged_json=$(jq --arg gr "$sway_apps_revision" '. + {sway_apps_revision: $gr}' <<< "$merged_json")
|
|
merged_json=$(jq --arg gr "$sway_libs_revision" '. + {sway_libs_revision: $gr}' <<< "$merged_json")
|
|
merged_json=$(jq --arg gr "$sway_git_revision" '. + {sway_git_revision: $gr}' <<< "$merged_json")
|
|
|
|
echo "$merged_json" > $metrics_json_file
|
|
done
|
|
fi
|