#!/usr/bin/perl # Copyright (c) 2023, PostgreSQL Global Development Group # src/tools/pgindent/pgperltidy use strict; use warnings; use File::Find; my $perltidy = $ENV{PERLTIDY} || 'perltidy'; my @files; die "No directories or files specified" unless @ARGV; sub is_perl_exec { my $name = shift; my $out = `file $name 2>/dev/null`; return $out =~ /:.*perl[0-9]*\b/i; } my $wanted = sub { my $name = $File::Find::name; my ($dev, $ino, $mode, $nlink, $uid, $gid); # check it's a plain file and either it has a perl extension (.p[lm]) # or it's executable and `file` thinks it's a perl script. (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_)) && -f _ && (/\.p[lm]$/ || ((($mode & 0100) == 0100) && is_perl_exec($_))) && push(@files, $name); }; File::Find::find({ wanted => $wanted }, @ARGV); my $list = join(" ", @files); system "$perltidy --profile=src/tools/pgindent/perltidyrc $list";