refuse to package files differing only by case
[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       warn $file;
22       if (my $other = $lc{lc $file}) {
23         die "ERROR: Multiple files only differing by case:\n\t$file\n\t$other\n";
24       }
25       $lc{lc $file} = $file;
26     }
27
28     my @missing = filecheck;
29
30     my $skip = maniskip;
31     my @remove = grep $skip->($_), @files;
32
33     exit 0
34       if !(@missing || @remove);
35   }
36 }
37
38 warn "Updating MANIFEST:\n";
39 mkmanifest;
40 warn "Go check it and retry.\n";
41 exit 1;