requires 'Moose';
requires 'Moose::Autobox';
requires 'MooseX::Declare' => '0.33';
+requires 'MooseX::Declare' => '0.32';
+requires 'MooseX::Types::DateTime';
+requires 'MooseX::Types::ISO8601';
requires 'MooseX::Types::Common';
requires 'MooseX::Types::Path::Class';
requires 'MooseX::Types';
role Gitalist::Git::HasUtils {
use Gitalist::Git::Util;
+ use MooseX::Storage::Meta::Attribute::Trait::DoNotSerialize;
method BUILD {}
after BUILD {
get_gpp_object
gpp
/],
+ traits => [qw/ DoNotSerialize /],
);
method _build_util { confess(shift() . " cannot build _util") }
}
class Gitalist::Git::Repository with Gitalist::Git::HasUtils {
# FIXME, use Types::Path::Class and coerce
use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
- use MooseX::Types::Path::Class qw/Dir/;
use MooseX::Types::Moose qw/Str Maybe Bool HashRef ArrayRef/;
- use Gitalist::Git::Types qw/SHA1/;
+ use Gitalist::Git::Types qw/SHA1 DateTime Dir/;
use Moose::Autobox;
use List::MoreUtils qw/any zip/;
- use DateTime;
+ use aliased 'DateTime' => 'DT';
use Encode qw/decode/;
use I18N::Langinfo qw/langinfo CODESET/;
use Gitalist::Git::Object::Blob;
lazy_build => 1,
);
- has last_change => ( isa => Maybe['DateTime'],
+ has last_change => ( isa => Maybe[DateTime],
is => 'ro',
lazy_build => 1,
);
is => 'ro',
lazy => 1,
default => sub {
- -d $_[0]->path->parent->subdir->($_[0]->name)
+ -d $_[0]->path->parent->subdir($_[0]->name)
? 1 : 0
},
);
--sort=-committerdate --count=1 refs/heads
});
if (my ($epoch, $tz) = $output =~ /\s(\d+)\s+([+-]\d+)$/) {
- my $dt = DateTime->from_epoch(epoch => $epoch);
+ my $dt = DT->from_epoch(epoch => $epoch);
$dt->set_time_zone($tz);
$last_change = $dt;
}
#FIXME: That isn't the time I'm looking for..
if (my ($epoch, $tz) = $line =~ /\s(\d+)\s+([+-]\d+)$/) {
- my $dt = DateTime->from_epoch(epoch => $epoch);
+ my $dt = DT->from_epoch(epoch => $epoch);
$dt->set_time_zone($tz);
$ret[-1]->{last_change} = $dt;
}
#FIXME: That isn't the time I'm looking for..
if($epoch and $tz) {
- my $dt = DateTime->from_epoch(epoch => $epoch);
+ my $dt = DT->from_epoch(epoch => $epoch);
$dt->set_time_zone($tz);
$ret[-1]->{last_change} = $dt;
}
package Gitalist::Git::Types;
use MooseX::Types
- -declare => [qw/SHA1/];
+ -declare => [qw/
+ SHA1
+ DateTime
+ Dir
+ /];
+use MooseX::Types::Path::Class;
+use MooseX::Types::ISO8601 qw/ISO8601DateTimeStr/;
+use MooseX::Types::DateTime ();
+use MooseX::Storage::Engine ();
use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
subtype SHA1,
from NonEmptySimpleStr,
via { 1 };
+subtype DateTime,
+ as 'MooseX::Types::DateTime::DateTime',
+ where { 1 };
+
+MooseX::Storage::Engine->add_custom_type_handler(
+ DateTime,
+ expand => sub {
+ my $val = shift;
+ Carp::confess("Not implemented");
+ },
+ collapse => sub {
+ to_ISO8601DateTimeStr(shift);
+ },
+);
+
+subtype Dir,
+ as 'MooseX::Types::Path::Class::Dir',
+ where { 1 };
+
+MooseX::Storage::Engine->add_custom_type_handler(
+ Dir,
+ expand => sub {
+ my $val = shift;
+ Carp::confess("Not implemented");
+ },
+ collapse => sub {
+ shift() . '';
+ },
+);
+
1;
is($proj->name, qw/repo1/, 'repository name is set');
is($proj->description, qq/some test repository/, 'repository description loaded');
isa_ok($proj->last_change, 'DateTime', 'last_change');
+{
+ my $packed = $proj->pack;
+ use Data::Dumper;
+ warn Dumper $packed;
+}
my %references = %{$proj->references};
ok(keys %references >= 2, '->references hash has elements');