blob: f05c74acfdcdf611ffda5a09bedbba11b3615867 [file] [log] [blame]
#!/bin/bash
# Presubmit script for CI/CD
# Exit on error, and exit on unset variables.
set -o errexit
set -o nounset
# Create .cargo/config.toml for the musl target
# TODO: add a line for mac.
BASE_DIR=$(dirname "$0")
mkdir -p "$BASE_DIR/.cargo"
cat > "$BASE_DIR/.cargo/config.toml" <<EOL
[target.x86_64-unknown-linux-musl]
rustflags = ["-C", "linker=clang", "-C", "link-arg=-fuse-ld=lld"]
[target.x86_64-unknown-linux-gnu]
rustflags = ["-C", "linker=clang", "-C", "link-arg=-fuse-ld=lld"]
EOL
# Install tools.
. "$(dirname "$0")/infra/env_setup.sh"
# Print commands as they're executed.
set -o xtrace
# Change to the rust directory to run cargo commands.
cd "$(dirname "$0")/rust"
# 1. Build the code.
# `set -e` will cause the script to exit if this fails.
cargo build
# 2. Check formatting.
# `cargo fmt -- --check` will exit with a non-zero status code if any
# files are not formatted correctly.
if ! cargo fmt -- --check; then
{ set +x; } 2>/dev/null
echo "Please run \`cargo fmt\` to format your code"
exit 1
fi
# 3. Run tests.
# `set -e` will cause the script to exit if any tests fail.
cargo test
{ set +x; } 2>/dev/null
echo "Presubmit checks passed!"