1 package Package::DeprecationManager;
7 use Params::Util qw( _HASH );
15 'You must provide a hash reference -deprecations parameter when importing Package::DeprecationManager'
16 unless $args{-deprecations} && _HASH( $args{-deprecations} );
20 my $import = _build_import( \%registry );
21 my $warn = _build_warn( \%registry, $args{-deprecations} );
23 my $caller = caller();
25 Sub::Install::install_sub(
33 Sub::Install::install_sub(
51 $registry->{ caller() } = $args{-api_version}
52 if $args{-api_version};
60 my $deprecated_at = shift;
65 my ( $package, undef, undef, $sub ) = caller(1);
67 my $compat_version = $registry->{$package};
69 my $deprecated_at = $deprecated_at->{$sub};
72 if defined $compat_version
73 && defined $deprecated_at
74 && $compat_version lt $deprecated_at;
76 return if $warned{$package}{$sub};
79 my $msg = "$sub has been deprecated";
80 $msg .= " since version $deprecated_at"
81 if defined $deprecated_at;
86 $warned{$package}{$sub} = 1;
94 # ABSTRACT: Manage deprecation warnings for your distribution