numam-dpdk/devtools/dts-check-format.sh
Thomas Monjalon 830bf2a04f devtools: set DTS directory in format check
The script was running on the current directory.
If not in the DTS directory, it would re-format every Python files.

A new positional argument is added to specify the directory to check.
In most cases, the (new) default value should be enough.

While updating argument handling,
the usage is printed in case of wrong argument.

The directory is also printed in headings,
and a last heading is added for the summary part.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Owen Hilyard <ohilyard@iol.unh.edu>
Reviewed-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
Tested-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
2022-11-23 16:55:17 +01:00

100 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2022 University of New Hampshire
usage() {
echo "Usage: $(basename $0) [options] [directory]"
echo 'Options:'
# Get source code comments after getopts arguments and print them both
grep -E '[a-zA-Z]+\) +#' "$0" | tr -d '#'
}
format=true
lint=true
# Comments after args serve as documentation; must be present
while getopts "hfl" arg; do
case $arg in
h) # Display this message
echo 'Run formatting and linting programs for DTS.'
usage
exit 0
;;
f) # Don't run formatters
format=false
;;
l) # Don't run linter
lint=false
;;
?)
usage
exit 1
esac
done
shift $(($OPTIND - 1))
directory=$(realpath --relative-base=$(pwd) ${1:-$(dirname $0)/../dts})
cd $directory || exit 1
heading() {
echo $*
echo $* | sed 's/./-/g' # underline
}
errors=0
if $format; then
if command -v git > /dev/null; then
if git rev-parse --is-inside-work-tree >&-; then
heading "Formatting in $directory/"
if command -v black > /dev/null; then
echo "Formatting code with black:"
black .
else
echo "black is not installed, not formatting"
errors=$((errors + 1))
fi
if command -v isort > /dev/null; then
echo "Sorting imports with isort:"
isort .
else
echo "isort is not installed, not sorting imports"
errors=$((errors + 1))
fi
git update-index --refresh
retval=$?
if [ $retval -ne 0 ]; then
echo 'The "needs update" files have been reformatted.'
echo 'Please update your commit.'
fi
errors=$((errors + retval))
else
echo ".git directory not found, not formatting code"
errors=$((errors + 1))
fi
else
echo "git command not found, not formatting code"
errors=$((errors + 1))
fi
fi
if $lint; then
if $format; then
echo
fi
heading "Linting in $directory/"
if command -v pylama > /dev/null; then
pylama .
errors=$((errors + $?))
else
echo "pylama not found, unable to run linter"
errors=$((errors + 1))
fi
fi
echo
heading "Summary for $directory/"
echo "Found $errors errors"
exit $errors