From 288c109286fda4dbd40fab345fbaf71d91d2db39 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Sat, 27 May 2023 11:38:27 -0700 Subject: [PATCH v2] Add meson targets to run pgindent Author: Reviewed-By: Discussion: https://postgr.es/m/ Backpatch: --- meson.build | 36 ++++++++++++++++++++++++++++++++++++ src/tools/pgindent/pgindent | 12 ++++++++++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 862c955453f..7d4d02e7624 100644 --- a/meson.build +++ b/meson.build @@ -3013,6 +3013,42 @@ run_target('install-test-files', +############################################################### +# Indentation and similar targets +############################################################### + +indent_base = [perl, files('src/tools/pgindent/pgindent'), + '--indent', pg_bsd_indent.full_path(), + '--sourcetree=@SOURCE_ROOT@'] + +# reindent the entire tree +run_target('indent-tree', + command: indent_base + ['.'], + depends: pg_bsd_indent +) + +# reindent the last commit +run_target('indent-head', + command: indent_base + ['--commit=HEAD'], + depends: pg_bsd_indent +) + +# silently check if any file is not corectly indented (fails the build if +# there are differences) +run_target('indent-check', + command: indent_base + ['--silent-diff', '.'], + depends: pg_bsd_indent +) + +# show a diff of all the unindented files (doesn't fail the build if there are +# differences) +run_target('indent-diff', + command: indent_base + ['--show-diff', '.'], + depends: pg_bsd_indent +) + + + ############################################################### # Test prep ############################################################### diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent index bce63d95daf..08b0c95814f 100755 --- a/src/tools/pgindent/pgindent +++ b/src/tools/pgindent/pgindent @@ -23,7 +23,7 @@ my $devnull = File::Spec->devnull; my ($typedefs_file, $typedef_str, @excludes, $indent, $build, $show_diff, - $silent_diff, $help, @commits,); + $silent_diff, $sourcetree, $help, @commits,); $help = 0; @@ -35,7 +35,8 @@ my %options = ( "excludes=s" => \@excludes, "indent=s" => \$indent, "show-diff" => \$show_diff, - "silent-diff" => \$silent_diff,); + "silent-diff" => \$silent_diff, + "sourcetree=s" => \$sourcetree); GetOptions(%options) || usage("bad command line argument"); usage() if $help; @@ -53,6 +54,13 @@ $typedefs_file ||= $ENV{PGTYPEDEFS}; # get indent location for environment or default $indent ||= $ENV{PGINDENT} || $ENV{INDENT} || "pg_bsd_indent"; +# When invoked from the build directory, change into source tree, otherwise +# the heuristics in locate_sourcedir() don't work. +if (defined $sourcetree) +{ + chdir $sourcetree; +} + my $sourcedir = locate_sourcedir(); # if it's the base of a postgres tree, we will exclude the files -- 2.38.0