2
package Module::Install::VersionCheck;
7
use Module::Install::Base;
11
use vars qw($VERSION @ISA);
14
@ISA = 'Module::Install::Base';
19
return unless $self->is_admin;
21
my $module_version = $self->_get_module_version();
22
my $changes_version = $self->_get_changes_version();
23
my $git_tag_version = $self->_get_git_tag_version();
32
sub _get_module_version {
34
return $DEFAULT unless $self->admin->{extensions};
35
my ($metadata) = grep {
36
ref($_) eq 'Module::Install::Metadata';
37
} @{$self->admin->{extensions}};
38
return $DEFAULT unless $metadata;
39
return $metadata->{values}{version} || $DEFAULT;
42
sub _get_changes_version {
44
return $DEFAULT unless -e 'Changes';
45
open IN, 'Changes' or die "Can't open 'Changes' for input: $!";
46
my $text = do {local $/; <IN>};
47
$text =~ /\b(\d\.\d\d)\b/ or return $DEFAULT;
51
sub _get_git_tag_version {
53
return $DEFAULT unless -e '.git';
54
require Capture::Tiny;
55
my $text = Capture::Tiny::capture_merged(sub { system('git tag') });
56
my $version = $DEFAULT;
57
for (split "\n", $text) {
58
if (/\b(\d\.\d\d)\b/ and $1 > $version) {
67
print "version_check found: @_\n";