perl / Git / Error.pmon commit Merge branch 'jt/fsck-code-cleanup' (52b7ab3)
   1package Git::Error;
   2use 5.008;
   3use strict;
   4use warnings;
   5
   6=head1 NAME
   7
   8Git::Error - Wrapper for the L<Error> module, in case it's not installed
   9
  10=head1 DESCRIPTION
  11
  12Wraps the import function for the L<Error> module.
  13
  14This module is only intended to be used for code shipping in the
  15C<git.git> repository. Use it for anything else at your peril!
  16
  17=cut
  18
  19sub import {
  20    shift;
  21    my $caller = caller;
  22
  23    eval {
  24        require Error;
  25        1;
  26    } or do {
  27        my $error = $@ || "Zombie Error";
  28
  29        my $Git_Error_pm_path = $INC{"Git/Error.pm"} || die "BUG: Should have our own path from %INC!";
  30
  31        require File::Basename;
  32        my $Git_Error_pm_root = File::Basename::dirname($Git_Error_pm_path) || die "BUG: Can't figure out lib/Git dirname from '$Git_Error_pm_path'!";
  33
  34        require File::Spec;
  35        my $Git_pm_FromCPAN_root = File::Spec->catdir($Git_Error_pm_root, 'FromCPAN');
  36        die "BUG: '$Git_pm_FromCPAN_root' should be a directory!" unless -d $Git_pm_FromCPAN_root;
  37
  38        local @INC = ($Git_pm_FromCPAN_root, @INC);
  39        require Error;
  40    };
  41
  42    unshift @_, $caller;
  43    goto &Error::import;
  44}
  45
  461;