aboutsummaryrefslogtreecommitdiff
path: root/scripts/ci.sh
blob: b6a1a74ee48724e72ed12e94bef811c7e175f93d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash

# A script to run a simplified version of the checks done by CI.
#
# Usage:
#     bash scripts/ci.sh
#
# Note: This script requires nightly Rust, rustfmt, clippy, and cargo-expand

set -euo pipefail
IFS=$'\n\t'

# Decide Rust toolchain. Nightly is used by default.
toolchain="+nightly"
if [[ "${1:-}" == "+"* ]]; then
  toolchain="${1}"
  shift
fi
# Make sure toolchain is installed.
cargo "${toolchain}" -V >/dev/null

if [[ "${toolchain:-+nightly}" != "+nightly"* ]] || ! rustfmt -V &>/dev/null || ! cargo clippy -V &>/dev/null || ! cargo expand -V &>/dev/null; then
  echo "error: ci.sh requires nightly Rust, rustfmt, clippy, and cargo-expand"
  exit 1
fi

echo "Running 'cargo ${toolchain} fmt --all'"
cargo "${toolchain}" fmt --all

echo "Running 'cargo ${toolchain} clippy --all --all-targets'"
cargo "${toolchain}" clippy --all --all-features --all-targets -Z unstable-options

echo "Running 'cargo ${toolchain} test --all'"
cargo "${toolchain}" test --all --all-features

echo "Running 'cargo ${toolchain} doc --no-deps --all'"
cargo "${toolchain}" doc --no-deps --all --all-features