MaxScale/script/list-src
Niclas Antti c447e5cf15 Uncrustify maxscale
See script directory for method. The script to run in the top level
MaxScale directory is called maxscale-uncrustify.sh, which uses
another script, list-src, from the same directory (so you need to set
your PATH). The uncrustify version was 0.66.
2018-09-09 22:26:19 +03:00

125 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
default_header_ext="h hh hpp"
default_source_ext="c cc cpp"
path=$PWD
usage() {
echo "Usage:" $(basename $0) "[-fhsHS --help] [path...]"
echo " Produce a list of 'source' files from current dir, or path if given."
echo " By default lists both headers and sources and these extentions are used:"
echo " headers: '$default_header_ext'"
echo " sources: '$default_source_ext'"
echo " -h list header files."
echo " -s list source files."
echo " -f Use the 'file' command to classify as a source, then if there is an"
echo " h in the extension it is a header else source. This will match a lot"
echo " of potential files, e.g. html with C source code in it."
echo " -H quoted list of header extensions."
echo " (adds -h, unless -s given.)"
echo " -S quotedlist of source extensions"
echo " (adds -s, unless -h given.)"
echo " -x quoted list of directories to exclude"
}
opts=$(getopt -o "fhsH:S:x:" --long "help" -n $(basename $0) -- "$@")
if [ $? -ne 0 ]; then
usage
exit 1
fi
eval set -- "$opts"
while true; do
case "$1" in
-f) use_file_cmd=true ;;
-h) list_headers=true ;;
-s) list_sources=true ;;
-H) header_ext="$2"
shift
;;
-S) source_ext="$2"
shift
;;
-x) exclusion_list="$2"
shift
;;
--help)
usage
exit 1
;;
'--')
shift
break
esac
shift
done
shift $((OPTIND-1))
if [[ -n $1 ]]; then
path=$1
fi
if ! [[ $list_headers || $list_sources ]]; then
list_headers=true
list_sources=true
fi
if [[ -z $header_ext ]]; then
header_ext=$default_header_ext
fi
if [[ -z $source_ext ]]; then
source_ext=$default_source_ext
fi
# regex when using file cmd
if [[ $list_headers && $list_sources ]]; then
regex='.*'
elif [[ $list_headers ]]; then
regex='h[^.]*$' # h in extension
else
regex='[.][^h]*$' # no h in extension
fi
#find /home/nantti/tmp/list-src-test -type d \( -name 'exclude' -o -name 'include' \) -prune -o -type f -print
# build find command
if ! [[ -z $exclusion_list ]]; then
for exclude in $exclusion_list
do
if [[ -z $exclusion_cmd ]]; then
exclusion_cmd="-type d \("
else
exclusion_cmd="$exclusion_cmd -o"
fi
exclusion_cmd="$exclusion_cmd -name '$exclude'"
done
exclusion_cmd="$exclusion_cmd \) -prune -o "
fi
FIND="find $path $exclusion_cmd -type f -print"
for file in $(eval $FIND)
do
if [[ $use_file_cmd ]]; then
if [[ `file -b $file` =~ "source" ]]; then
if [[ $file =~ $regex ]]; then
echo $file
fi
fi
else
regex="\b${file##*.}\b"
if [[ $list_headers && $header_ext =~ $regex ]]; then
echo $file
fi
if [[ $list_sources && $source_ext =~ $regex ]]; then
echo $file
fi
fi
done