Two teams try and fill in any horizontal, vertical, or diagonal line on a bingo board by playing maps on osu!
osu.bingo
osu
1#!/bin/sh
2# Original Author: Sven Lechner (SirWindfield)
3# License: GPLv3
4
5require_clean_work_tree() {
6 # Update index
7 git update-index -q --ignore-submodules --refresh
8 err=0
9
10 # Disallow unstaged changes in the working tree
11 if ! git diff-files --quiet --ignore-submodules --; then
12 echo >&2 "Cannot commit: you have unstaged changes."
13 git diff-files --name-status -r --ignore-submodules -- >&2
14 err=1
15 fi
16
17 if [ $err = 1 ]; then
18 echo >&2 "Please stage or stash them."
19 exit 1
20 fi
21}
22
23echo "→ Checking for local changes..."
24require_clean_work_tree
25
26echo "→ Formatting Rust code..."
27cargo fmt
28if [ $? -ne 0 ]; then
29 exit 1
30fi
31
32for path in $(git diff --name-only --cached); do
33 git update-index --add $path
34done
35
36echo "→ Building pre-commit build artifacts..."
37cargo check --quiet
38if [ $? -ne 0 ]; then
39 exit 1
40fi
41cargo build --quiet
42
43# Linting is only done with the rodio backend and the keyring feature as those should be
44# compilable for every supported platform without external library needs.
45echo "→ Linting Rust code..."
46cargo clippy -- -D warnings
47
48echo "→ Testing Rust code..."
49cargo test