91 lines
1.9 KiB
Bash
91 lines
1.9 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
|
||
|
|
RENODE_ROOT_PATH="$( cd -- "$( dirname -- "$( dirname -- "${BASH_SOURCE[0]}" )" )" &> /dev/null && pwd -P )"
|
||
|
|
|
||
|
|
function print_help() {
|
||
|
|
echo "Usage: $0 [action] <files> [-h] [-r report-file.json]"
|
||
|
|
echo
|
||
|
|
echo "Actions"
|
||
|
|
echo "format format files"
|
||
|
|
echo "lint lint files"
|
||
|
|
echo
|
||
|
|
echo "Arguments"
|
||
|
|
echo "<files> space separated list of files to format / lint,. If empty, all files will be included"
|
||
|
|
echo
|
||
|
|
echo "Options"
|
||
|
|
echo "-h show this message"
|
||
|
|
echo "-r generate report and save it to report-file.json"
|
||
|
|
}
|
||
|
|
|
||
|
|
function renode_format() {
|
||
|
|
unset ACTION
|
||
|
|
unset REPORT_FILE
|
||
|
|
unset FILES
|
||
|
|
unset COMMAND
|
||
|
|
|
||
|
|
# Check if command is valid
|
||
|
|
if [ -z ${1+x} ]
|
||
|
|
then
|
||
|
|
echo "Missing command"
|
||
|
|
print_help
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
if [[ "$1" != "format" && "$1" != "lint" ]]
|
||
|
|
then
|
||
|
|
echo "Unrecognized command"
|
||
|
|
print_help
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
ACTION=$1
|
||
|
|
shift
|
||
|
|
|
||
|
|
# Set files to format
|
||
|
|
while [[ ! -z ${1+x} && $1 != -* ]]
|
||
|
|
do
|
||
|
|
FILES="${FILES+} $1"
|
||
|
|
shift
|
||
|
|
done
|
||
|
|
|
||
|
|
# Parse options
|
||
|
|
while getopts "hr:" opt
|
||
|
|
do
|
||
|
|
case $opt in
|
||
|
|
h)
|
||
|
|
print_help
|
||
|
|
;;
|
||
|
|
r)
|
||
|
|
REPORT_FILE="$OPTARG"
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
done
|
||
|
|
|
||
|
|
# We don't want to format external libs, dotnet fromat expects relative paths
|
||
|
|
LIB_RELATIVE_PATH="$(realpath -s --relative-to=$(pwd -P) "$RENODE_ROOT_PATH/lib")"
|
||
|
|
|
||
|
|
COMMAND="dotnet format $RENODE_ROOT_PATH/Renode_NET.sln --exclude $LIB_RELATIVE_PATH"
|
||
|
|
|
||
|
|
if [[ "$ACTION" == "lint" ]]
|
||
|
|
then
|
||
|
|
COMMAND="$COMMAND --verify-no-changes"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [[ ! -z ${REPORT_FILE+x} ]]
|
||
|
|
then
|
||
|
|
COMMAND="$COMMAND --report $REPORT_FILE"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [[ ! -z ${FILES+x} ]]
|
||
|
|
then
|
||
|
|
COMMAND="$COMMAND --include $FILES"
|
||
|
|
fi
|
||
|
|
|
||
|
|
return $(eval "$COMMAND")
|
||
|
|
}
|
||
|
|
|
||
|
|
# Execute formatting command only if file is not sourced
|
||
|
|
if [[ "${BASH_SOURCE[0]}" == "$0" ]]
|
||
|
|
then
|
||
|
|
renode_format $@
|
||
|
|
fi
|
||
|
|
|