diff -r 000000000000 -r 6474c204b198 build/unix/uniq.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build/unix/uniq.pl Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,91 @@ +#!/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