Files
bevy_controls/script/fetures-clippy.sh
T

78 lines
1.7 KiB
Bash

#!/bin/bash
CURDIR="$(realpath "$(dirname "$0")")"
. "${CURDIR}/../utils/sh/log.sh"
log "enable logging"
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
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\]' $1 -A99999999 | grep '^\[' -m 2 -B99999999 | grep -v '^\[' | cut -d '=' -f 1 | grep -v 'default')
generate_combinations() {
local items=($1)
local size=$2
local current=$3
local combination=$4
if [ $current -eq $size ]; then
echo "$combination"
return
fi
for ((i = 0; i < ${#items[@]}; ++i)); do
new_combination="$combination ${items[$i]}"
remaining_items=("${items[@]:0:$i}" "${items[@]:$((i + 1))}")
generate_combinations "$(IFS=" "; echo "${remaining_items[*]}")" $size $((current + 1)) "$new_combination"
done
}
for ((i = 1; i <= $(wc -w <<< "$features"); ++i)); do
echo "Generating combinations of size $i"
combos=$(generate_combinations "$features" $i 0 "")
echo "$combos" | while read line
do
echo "Running clippy with features: $line"
combo=$(echo $combo | xargs) # Trim
echo "Running clippy with features: $combo"
if ! cargo clippy --features "$combo"; then
echo "Error found in combination: $combo"
exit 1
fi
done
done