Dist-Zilla-Plugin-Subversion

 view release on metacpan or  search on metacpan

lib/Dist/Zilla/Role/Subversion.pm  view on Meta::CPAN

use 5.010;
use strict;
use warnings;
use utf8;

package Dist::Zilla::Role::Subversion;

BEGIN {
    $Dist::Zilla::Role::Subversion::VERSION = '1.101590';
}

# ABSTRACT: does Subversion actions for a distribution

use Moose::Role;
with 'Dist::Zilla::Role::Plugin' => { -version => 4.101550 };

use Cwd;
use English qw(-no_match_vars);
use Modern::Perl;
use MooseX::Types::URI 'Uri';
use Path::Class qw(dir file);
use Readonly;
use Regexp::DefaultFlags;
use SVN::Client;
use SVN::Wc;
use namespace::autoclean;

for my $attr (qw(svn_user svn_password)) {
    has $attr => (
        is        => 'ro',
        isa       => 'Str',
        predicate => "_has_$attr",
    );
}

has 'working_url' => (
    is         => 'ro',
    isa        => Uri,
    coerce     => 1,
    lazy_build => 1,
);

sub _build_working_url {
    my $self = shift;
    my $url;
    if ( $url = $self->zilla->distmeta->{resources}{repository} ) {
        return URI->new($url);
    }
    $self->_svn->info( getcwd(), undef, undef,
        sub { $url = URI->new( $ARG[1]->URL() ) }, 0 );
    return $url;
}

has '_base_url' => (
    is         => 'ro',
    isa        => Uri,
    coerce     => 1,
    lazy_build => 1,
);

sub _build__base_url {
    my $self = shift;

    my $url        = $self->working_url->clone();
    my @segments   = $url->path_segments();
    my %url_offset = (
        trunk    => -1,
        branches => -2,
    );
    while ( my ( $segment, $offset ) = each %url_offset ) {
        if ( $segments[$offset] eq $segment ) {
            $url->path_segments( @segments[ 0 .. $#segments + $offset ] );
            return $url;
        }
    }
    $self->_svn->info( getcwd(), undef, undef,
        sub { $url = URI->new( $ARG[1]->repos_root_URL() ) }, 0 );
    return $url;
}

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.493 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )