pgperltidy as well as pgperlcritic and pgperlsyncheck now allow
passing files and directories on the command line, like pgindent does.
(Previously, they would always operate on the whole tree.)
Also, for consistency with pgindent's new behavior (as of
b16259b3c1),
passing an argument is now required. To get the previous default
behavior, use "pgperltidy ." for example.
Discussion: https://www.postgresql.org/message-id/flat/
45aacd8a-5265-d9da-8df2-
b8e2c0cf6a07%40eisentraut.org
# shell function to find all perl files in the source tree
find_perl_files () {
+ if [ $# -eq 0 ]; then
+ echo 'No files to process' 1>&2
+ return
+ fi
{
# take all .pl and .pm files
- find . -type f -name '*.p[lm]' -print
+ find "$@" -type f -name '*.p[lm]' -print
# take executable files that file(1) thinks are perl files
- find . -type f -perm -100 -exec file {} \; -print |
+ find "$@" -type f -perm -100 -exec file {} \; -print |
egrep -i ':.*perl[0-9]*\>' |
cut -d: -f1
} | sort -u | grep -v '^\./\.git/'
. src/tools/perlcheck/find_perl_files
-find_perl_files | xargs $PERLCRITIC \
+find_perl_files "$@" | xargs $PERLCRITIC \
--quiet \
--program-extensions .pl \
--profile=src/tools/perlcheck/perlcriticrc
# for zsh
setopt shwordsplit 2>/dev/null || true
-find_perl_files | xargs -L 1 perl $INCLUDES -cw 2>&1 | grep -v OK
+find_perl_files "$@" | xargs -L 1 perl $INCLUDES -cw 2>&1 | grep -v OK
4) Indent the Perl code using perltidy:
- src/tools/pgindent/pgperltidy
+ src/tools/pgindent/pgperltidy .
If you want to use some perltidy version that's not in your PATH,
first set the PERLTIDY environment variable to point to it.
. src/tools/perlcheck/find_perl_files
-find_perl_files | xargs $PERLTIDY --profile=src/tools/pgindent/perltidyrc
+find_perl_files "$@" | xargs $PERLTIDY --profile=src/tools/pgindent/perltidyrc