— |
use Pinto::Util qw(current_username current_time_offset) ; our $VERSION = '0.097_03' ;
has root => (
is => 'ro' ,
isa => Dir,
alias => 'root_dir' ,
required => 1,
coerce => 1,
);
has username => (
is => 'ro' ,
isa => Username,
default => sub { return current_username },
lazy => 1,
);
has time_offset => (
is => 'ro' ,
isa => Int,
default => sub { return current_time_offset },
lazy => 1,
);
has stacks_dir => (
is => 'ro' ,
isa => Dir,
init_arg => undef ,
default => sub { return $_ [0]->root_dir->subdir( 'stacks' ) },
lazy => 1,
);
has authors_dir => (
is => 'ro' ,
isa => Dir,
init_arg => undef ,
default => sub { return $_ [0]->root_dir->subdir( 'authors' ) },
lazy => 1,
);
has authors_id_dir => (
is => 'ro' ,
isa => Dir,
init_arg => undef ,
default => sub { return $_ [0]->authors_dir->subdir( 'id' ) },
lazy => 1,
);
has modules_dir => (
is => 'ro' ,
isa => Dir,
init_arg => undef ,
default => sub { return $_ [0]->root_dir->subdir( 'modules' ) },
lazy => 1,
);
has mailrc_file => (
is => 'ro' ,
isa => File,
init_arg => undef ,
default => sub { return $_ [0]->authors_dir->file( '01mailrc.txt.gz' ) },
lazy => 1,
);
has db_dir => (
is => 'ro' ,
isa => Dir,
init_arg => undef ,
default => sub { return $_ [0]->pinto_dir->subdir( 'db' ) },
lazy => 1,
);
has db_file => (
is => 'ro' ,
isa => File,
init_arg => undef ,
default => sub { return $_ [0]->db_dir->file( 'pinto.db' ) },
lazy => 1,
);
has pinto_dir => (
is => 'ro' ,
isa => Dir,
init_arg => undef ,
default => sub { return $_ [0]->root_dir->subdir( '.pinto' ) },
lazy => 1,
);
has config_dir => (
is => 'ro' ,
isa => Dir,
init_arg => undef ,
default => sub { return $_ [0]->pinto_dir->subdir( 'config' ) },
lazy => 1,
);
has cache_dir => (
is => 'ro' ,
isa => Dir,
init_arg => undef ,
default => sub { return $_ [0]->pinto_dir->subdir( 'cache' ) },
lazy => 1,
);
has log_dir => (
is => 'ro' ,
isa => Dir,
init_arg => undef ,
default => sub { return $_ [0]->pinto_dir->subdir( 'log' ) },
lazy => 1,
);
has version_file => (
is => 'ro' ,
isa => File,
init_arg => undef ,
default => sub { return $_ [0]->pinto_dir->file( 'version' ) },
lazy => 1,
);
has basename => (
is => 'ro' ,
isa => Str,
init_arg => undef ,
default => 'pinto.ini' ,
);
has sources => (
is => 'ro' ,
isa => Str,
key => 'sources' ,
default => "@PINTO_DEFAULT_SOURCE_URIS" ,
documentation => 'URIs of upstream repositories (space delimited)' ,
);
has target_perl_version => (
is => 'ro' ,
isa => PerlVersion,
key => 'target_perl_version' ,
documentation => 'Default target perl version for new stacks' ,
default => $],
coerce => 1,
);
has recurse => (
is => 'ro' ,
isa => Bool,
key => 'recurse' ,
documentation => 'Default recursive behavior' ,
default => 1,
);
has intermingle => (
is => 'ro' ,
isa => Bool,
key => 'intermingle' ,
documentation => 'Allow stacks to intermingle distributions' ,
default => 0,
);
sub _build_config_file {
my ( $self ) = @_ ;
my $config_file = $self ->config_dir->file( $self ->basename );
return -e $config_file ? $config_file : ();
}
sub sources_list {
my ( $self ) = @_ ;
my $sources = $self ->sources;
$sources =~ s/ ['"] //gx;
return map { URI->new( $_ ) } split m{ \s+ }mx, $sources ;
}
sub directories {
my ( $self ) = @_ ;
return ( $self ->root_dir, $self ->config_dir, $self ->cache_dir,
$self ->authors_dir, $self ->log_dir, $self ->db_dir );
}
__PACKAGE__->meta->make_immutable;
1;
|