From f7520fd87764cddbde9d6c5d25fdfe5314ec5cbc Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Sat, 27 May 2023 11:38:27 -0700 Subject: [PATCH v4 1/4] Add meson targets to run pgindent Author: Reviewed-By: Discussion: https://postgr.es/m/ Backpatch: --- meson.build | 38 +++++++++++++++++++++++++++++++++++++ src/tools/pgindent/pgindent | 12 ++++++++++-- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 862c955453f..2cfeb60eb07 100644 --- a/meson.build +++ b/meson.build @@ -3013,6 +3013,44 @@ run_target('install-test-files', +############################################################### +# Indentation and similar targets +############################################################### + +indent_base_cmd = [perl, files('src/tools/pgindent/pgindent'), + '--indent', pg_bsd_indent.full_path(), + '--sourcetree=@SOURCE_ROOT@'] +indent_depend = [pg_bsd_indent] + +# reindent the entire tree +# Reindent the entire tree +run_target('indent-tree', + command: indent_base_cmd + ['.'], + depends: indent_depend +) + +# Reindent the last commit +run_target('indent-head', + command: indent_base_cmd + ['--commit=HEAD'], + depends: indent_depend +) + +# Silently check if any file is not corectly indented (fails the build if +# there are differences) +run_target('indent-check', + command: indent_base_cmd + ['--silent-diff', '.'], + depends: indent_depend +) + +# Show a diff of all the unindented files (doesn't fail the build if there are +# differences) +run_target('indent-diff', + command: indent_base_cmd + ['--show-diff', '.'], + depends: indent_depend +) + + + ############################################################### # 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