Module-Provision
view release on metacpan or search on metacpan
lib/Module/Provision/TraitFor/CreatingDistributions.pm view on Meta::CPAN
my ($self, $create) = @_; $self->chdir( $self->appldir );
my $verbose = $create ? FALSE : TRUE; my $mdf = 'README.md';
if ($self->builder eq 'DZ') { $self->build_distribution( $verbose ) }
elsif ($self->builder eq 'MB') {
$self->run_cmd( 'perl '.$self->project_file );
$self->run_cmd( './Build manifest', $verbose ? { out => 'stdout' } : {} );
$self->run_cmd( './Build distmeta', $verbose ? { out => 'stdout' } : {} );
}
$self->clean_distribution( $verbose );
return $create ? $mdf : undef;
}
sub metadata : method {
my $self = shift; $self->generate_metadata( FALSE ); return OK;
}
sub prove : method {
my $self = shift; $self->chdir( $self->appldir );
my $cmd = $self->$_get_test_command( $self->next_argv );
$_set_env_true->( @{ $self->config->test_env_vars } );
$self->output ( 'Testing [_1]', { args => [ $self->appldir ] } );
$self->run_cmd( $cmd, $self->quiet ? {} : { out => 'stdout' } );
$_set_env_false->( @{ $self->config->test_env_vars } );
return OK;
}
sub select_project : method {
my $self = shift;
my @projects = $self->base->all_dirs;
my @options = map { $_->basename } @projects;
my $prompt = 'Select a project from the following list';
my $index = $self->get_option( $prompt, undef, TRUE, undef, \@options );
$index < 0 and return FAILED;
my $name = $projects[ $index ]->basename;
my $project = Module::Provision->new
( noask => TRUE, project => $name, quiet => TRUE );
$self->chdir( my $dir = $project->appldir );
io()->fdopen( 3, 'w' )->print( $dir )->close;
return Module::Provision->new
( method => 'edit_project', noask => TRUE, quiet => TRUE )->run;
}
sub show_tab_title : method {
my $self = shift;
my $file = $self->next_argv || $self->$_project_file_path;
my $text = (grep { m{ tab-title: }msx } io( $file )->getlines)[ -1 ]
|| ':'.$self->distname;
emit trim( (split m{ : }msx, $text, 2)[ 1 ] ).SPC.$self->appbase;
return OK;
}
1;
__END__
=pod
=encoding utf-8
=head1 Name
Module::Provision::TraitFor::CreatingDistributions - Create distributions
=head1 Synopsis
use Moose;
extends 'Module::Provision::Base';
with 'Module::Provision::TraitFor::CreatingDistributions';
=head1 Description
Create distributions using either Git or SVN for the VCS
=head1 Configuration and Environment
Requires these attributes to be defined in the consuming class;
C<appbase>, C<appldir>, C<builder>, C<exec_perms>, C<homedir>,
C<incdir>, C<project_file>, C<render_templates>, C<stash>, C<testdir>,
and C<vcs>
Defines the following attributes;
=over 3
=item <editor>
Which text editor to use. It is a read only, lazily evaluated, simple
string that cannot be null. It defaults to the C<editor> configuration
variable
=back
=head1 Subroutines/Methods
=head2 build_distribution - Build a CPAN distribution tarball
$self->build_distribution( $verbose );
Builds a CPAN distribution tarball
=head2 clean_distribution - Cleans up after a distribution build
$self->clean_distribution( $verbose );
Cleans up after a distribution build
=head2 cover - Create test coverage statistics
( run in 0.621 second using v1.01-cache-2.11-cpan-71847e10f99 )