X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FGitalist%2FGit%2FTag.pm;h=8d20b49848bdc0f07d6a9620d318c3f24cca626f;hb=f9baba9601a39a6b75b0314cdfa2f710bb1a20e2;hp=be53088ca15e2fba80c2b5c91a913eb6d99a8e0a;hpb=cc57f1d24f798fd6999ba99fe4e4c95a43ef76ba;p=catagits%2FGitalist.git diff --git a/lib/Gitalist/Git/Tag.pm b/lib/Gitalist/Git/Tag.pm index be53088..8d20b49 100644 --- a/lib/Gitalist/Git/Tag.pm +++ b/lib/Gitalist/Git/Tag.pm @@ -1,12 +1,16 @@ package Gitalist::Git::Tag; + use Moose; use namespace::autoclean; -use Gitalist::Git::Types qw/SHA1/; +with 'Gitalist::Git::Serializable'; + use MooseX::Types::Common::String qw/NonEmptySimpleStr/; -use MooseX::Types::Moose qw/Maybe Str/; -use MooseX::Types::DateTime; -use DateTime; +use MooseX::Types::Moose qw/Maybe/; +use Gitalist::Git::Types qw/SHA1/; +use MooseX::Types::DateTime qw/ DateTime /; + +use aliased 'DateTime' => 'DT'; has sha1 => ( isa => SHA1, is => 'ro', @@ -34,10 +38,9 @@ has committer => ( isa => NonEmptySimpleStr, is => 'ro', required => 1, ); -has last_change => ( isa => 'DateTime', +has last_change => ( isa => Maybe[DateTime], is => 'ro', required => 1, - coerce => 1, ); around BUILDARGS => sub { @@ -57,7 +60,7 @@ around BUILDARGS => sub { my ($subject, $commitinfo) = split /\0/, $rest, 2; my ($committer, $epoch, $tz) = $commitinfo =~ /(.*)\s(\d+)\s+([+-]\d+)$/; - my $dt = DateTime->from_epoch( + my $dt = DT->from_epoch( epoch => $epoch, time_zone => $tz, ); @@ -76,4 +79,10 @@ around BUILDARGS => sub { } }; +sub is_valid_tag { + local $_ = pop; + # Ignore tags like - http://git.kernel.org/?p=git/git.git;a=tag;h=d6602ec + return /^\S+ \S+ \S+ (?:\S+)? (?:\S+)?[^\0]+\0.*\s\d+\s+[+-]\d+$/; +} + 1;