| #!/usr/bin/env perl |
| |
| # This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| |
| ##----------------------------## |
| ##---] CORE/CPAN INCLUDES [---## |
| ##----------------------------## |
| use strict; |
| use warnings; |
| use Getopt::Long; |
| |
| ##-------------------## |
| ##---] EXPORTS [---## |
| ##-------------------## |
| our $VERSION = qw(1.1); |
| |
| ##-------------------## |
| ##---] GLOBALS [---## |
| ##-------------------## |
| my %argv; |
| my $modver = $Getopt::Long::VERSION || 0; |
| my $isOldGetopt = ($modver eq '2.25') ? 1 : 0; |
| |
| ########################################################################### |
| ## Intent: Script init function |
| ########################################################################### |
| sub init |
| { |
| if ($isOldGetopt) |
| { |
| # mozilla.build/mingw perl in need of an upgrade |
| # emulate Getopt::Long switch|short:init |
| foreach (qw(debug regex sort)) |
| { |
| if (defined($argv{$_})) |
| { |
| $argv{$_} ||= 1; |
| } |
| } |
| } |
| } # init |
| |
| ##----------------## |
| ##---] MAIN [---## |
| ##----------------## |
| my @args = ($isOldGetopt) |
| ? qw(debug|d regex|r sort|s) |
| : qw(debug|d:1 regex|r:1 sort|s:1) |
| ; |
| |
| unless(GetOptions(\%argv, @args)) |
| { |
| print "Usage: $0\n"; |
| print " --sort Sort list elements early\n"; |
| print " --regex Exclude subdirs by pattern\n"; |
| } |
| |
| init(); |
| my $debug = $argv{debug} || 0; |
| |
| my %seen; |
| my @out; |
| my @in = ($argv{sort}) ? sort @ARGV : @ARGV; |
| |
| foreach my $d (@in) |
| { |
| next if ($seen{$d}++); |
| |
| print " arg is $d\n" if ($debug); |
| |
| if ($argv{regex}) |
| { |
| my $found = 0; |
| foreach my $dir (@out) |
| { |
| my $dirM = quotemeta($dir); |
| $found++, last if ($d eq $dir || $d =~ m!^${dirM}\/!); |
| } |
| print "Adding $d\n" if ($debug && !$found); |
| push @out, $d if (!$found); |
| } else { |
| print "Adding: $d\n" if ($debug); |
| push(@out, $d); |
| } |
| } |
| |
| print "@out\n" |
| |
| # EOF |