more flexible version matching when bumping Makefile.PL
[p5sagit/Distar.git] / lib / Distar / helpers / check-manifest
1 #!/usr/bin/env perl
2 use strict;
3 use warnings FATAL => 'all';
4 use ExtUtils::Manifest qw(filecheck maniread maniskip manicheck mkmanifest);
5
6 {
7   local $ExtUtils::Manifest::Quiet = 1;
8   my $manimiss = ! -e 'MANIFEST';
9   if (-e 'MANIFEST') {
10     my @extra = manicheck;
11     if (@extra) {
12       die "Files in MANIFEST are missing from file system:\n"
13         . join('', map "  $_\n", @extra);
14     }
15
16     my $read = maniread;
17     my @files = sort keys %$read;
18
19     my %lc;
20     for my $file (@files) {
21       if (my $other = $lc{lc $file}) {
22         die "ERROR: Multiple files only differing by case:\n\t$file\n\t$other\n";
23       }
24       $lc{lc $file} = $file;
25     }
26
27     my @missing = filecheck;
28
29     my $skip = maniskip;
30     my @remove = grep $skip->($_), @files;
31
32     exit 0
33       if !(@missing || @remove);
34   }
35 }
36
37 warn "Updating MANIFEST:\n";
38 mkmanifest;
39 warn "Go check it and retry.\n";
40 exit 1;