X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FGitalist.git;a=blobdiff_plain;f=lib%2FGitalist%2FGit%2FTypes.pm;h=ad934f64d1e25da49095deb8c65f2a098b68121c;hp=88d423fd79e3c9541e9f846f03074347485b2096;hb=ea7725112cb1e27f0c76481742daad900380b8cd;hpb=eef1fb14f8acced2937e0f7f75fca40f51154036 diff --git a/lib/Gitalist/Git/Types.pm b/lib/Gitalist/Git/Types.pm index 88d423f..ad934f6 100644 --- a/lib/Gitalist/Git/Types.pm +++ b/lib/Gitalist/Git/Types.pm @@ -4,6 +4,8 @@ use MooseX::Types -declare => [qw/ SHA1 Dir + ArrayRefOfDirs + DirOrUndef /]; use MooseX::Types::Path::Class; @@ -11,6 +13,8 @@ use MooseX::Types::ISO8601 qw/ISO8601DateTimeStr/; use MooseX::Types::DateTime qw/ DateTime /; use MooseX::Storage::Engine (); use MooseX::Types::Common::String qw/NonEmptySimpleStr/; +use MooseX::Types::Moose qw/ ArrayRef Undef Str /; +use Path::Class qw/ dir /; subtype SHA1, as NonEmptySimpleStr, @@ -36,6 +40,13 @@ subtype Dir, as 'MooseX::Types::Path::Class::Dir', where { 1 }; +subtype ArrayRefOfDirs, as ArrayRef[Dir], where { scalar(@$_) >= 1 }, message { "Cannot find repository dir" }; +coerce ArrayRefOfDirs, from NonEmptySimpleStr, via { [ dir($_)->resolve ] }; +coerce ArrayRefOfDirs, from ArrayRef[NonEmptySimpleStr], via { [ map { dir($_)->resolve } @$_ ] }; + +subtype DirOrUndef, as Dir | Undef; +coerce DirOrUndef, from Str, via { if ($_) { dir($_) } else { undef }}; + MooseX::Storage::Engine->add_custom_type_handler( Dir, expand => sub {