Files
bevy_controls/crate/bevy_controls/script/fetures-clippy.sh
T
2024-02-07 18:27:30 +01:00

80 lines
1.7 KiB
Bash

#!/bin/sh
while [ "$#" -gt 0 ]; do
case $1 in
-h|-?|--help|help)
HELP=1
;;
-*)
echo "Error: Unsupported flag $1" >&2
return 1
;;
*) # No more options
break
;;
esac
shift
done
if [ "$HELP" ]; then
printf "\
usage %s <path/to/Cargoctoml>\n
-?|-h|--help\tthis message
" "$(basename "$0")"
exit
fi
generate_combinations() {
items="$1"
size=$2
current=$3
combination="$4"
if [ "$current" -eq "$size" ]; then
echo "$combination"
return
fi
# Split items into positional parameters
set -- $items
while [ $# -gt 0 ]; do
item=$1
shift
new_combination="$combination $item"
remaining_items="$@"
generate_combinations "$remaining_items" $size $(($current + 1)) "$new_combination"
set -- "$item" $@
done
}
CARGO_PATH="$1"
if [ -z "$CARGO_PATH" ]; then
printf "please provide path to Cargo.toml\n"
exit
fi
if [ -d "$CARGO_PATH" ]; then
CARGO_PATH="${CARGO_PATH}/Cargo.toml"
fi
features=$(grep '^\[features\]' "$CARGO_PATH" -A99999999 | grep '^\[' -m 2 -B99999999 | grep -v '^\[' | cut -d '=' -f 1 | grep -v 'default')
num_features=$(echo "$features" | wc -w | tr -d ' ')
i=1
while [ $i -le $num_features ]; do
echo "Generating combinations of size $i"
combos=$(generate_combinations "$features" $i 0 "")
echo "$combos" | while IFS= read -r line; do
combo=$(echo $line | xargs) # Trim
echo "Running clippy with features: $combo"
if ! cargo clippy --features "$combo"; then
echo "Error found in combination: $combo"
exit 1
fi
done
i=$((i + 1))
done