1 package Gitalist::Git::Types;
11 use MooseX::Types::Path::Class;
12 use MooseX::Types::ISO8601 qw/ISO8601DateTimeStr/;
13 use MooseX::Types::DateTime qw/ DateTime /;
14 use MooseX::Storage::Engine ();
15 use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
16 use MooseX::Types::Moose qw/ ArrayRef Undef Str /;
17 use Path::Class qw/ dir /;
21 where { $_ =~ qr/^[0-9a-fA-F]{40}$/ },
22 message { q/Str doesn't look like a SHA1./ };
25 from NonEmptySimpleStr,
28 MooseX::Storage::Engine->add_custom_type_handler(
32 Carp::confess("Not implemented");
35 $_[0]->ymd('-') . 'T' . $_[0]->hms(':') . 'Z'
40 as 'MooseX::Types::Path::Class::Dir',
43 subtype ArrayRefOfDirs, as ArrayRef[Dir], where { scalar(@$_) >= 1 }, message { "Cannot find repository dir" };
44 coerce ArrayRefOfDirs, from NonEmptySimpleStr, via { [ dir($_)->resolve ] };
45 coerce ArrayRefOfDirs, from ArrayRef[NonEmptySimpleStr], via { [ map { dir($_)->resolve } @$_ ] };
47 subtype DirOrUndef, as Dir | Undef;
48 coerce DirOrUndef, from Str, via { if ($_) { dir($_) } else { undef }};
50 MooseX::Storage::Engine->add_custom_type_handler(
54 Carp::confess("Not implemented");