CPAN-Maker
view release on metacpan or search on metacpan
lib/CPAN/Maker.pm view on Meta::CPAN
if !$buildspec_file;
die "$buildspec_file exists\n"
if -e $buildspec_file && !$overwrite;
open my $fh, '>', $buildspec_file
or die "could not open $buildspec_file for writing\n";
print {$fh} Dump($buildspec);
close $fh;
return;
}
########################################################################
sub parse_dependencies {
########################################################################
my ( $self, $dependencies ) = @_;
if ($dependencies) {
croak 'malformed buildspec.yml file - dependencies section with no keys?'
if !keys %{$dependencies};
$dependencies->{'core-modules'} //= 'no';
$dependencies->{'required-modules'} //= 'yes';
if ( $dependencies->{path} ) { # deprecated
$self->set_requires( $dependencies->{path} );
warn "path is deprecated: use requires\n";
}
if ( $dependencies->{requires} ) {
$self->set_requires( $dependencies->{requires} );
}
if ( $dependencies->{'test-requires'} ) {
$self->set_test_requires( $dependencies->{'test-requires'} );
}
if ( $dependencies->{'build-requires'} ) {
$self->set_build_requires( $dependencies->{'build-requires'} );
}
if ( $dependencies->{recommends} ) {
$self->set_recommends( $dependencies->{recommends} );
}
if ( $dependencies->{suggests} ) {
$self->set_suggests( $dependencies->{suggests} );
}
if ( $dependencies->{'core-modules'} eq 'yes' ) {
$self->set_core_modules($TRUE);
}
# NOTE: required-modules and resolver have no corresponding
# CLI::Simple accessor (not in option_specs, no extra_options
# declared) -- there is currently nowhere valid to apply these
# buildspec.yml values. Preserved here as parsed/validated but
# intentionally not applied; flagging rather than guessing at
# attribute names that don't exist.
my $required_modules_requested = $dependencies->{'required-modules'} eq 'no';
my $resolver = $dependencies->{resolver};
if ( $self->get_requires && $resolver ) {
croak "use either path or resolver for dependencies, but not both\n";
}
}
return;
}
########################################################################
sub parse_include_version {
########################################################################
my ( $self, $version ) = @_;
return
if !defined $version;
if ( $version =~ /(no|0|off)/ixsm ) {
$self->set_require_versions($FALSE);
}
return;
}
########################################################################
sub parse_project {
########################################################################
my ( $self, $project ) = @_;
return
if !$project;
if ( $project->{author} ) {
my $name = $project->{author}->{name} // 'anonymouse';
my $author = $name;
if ( my $mailto = $project->{author}->{mailto} ) {
$author .= ' <' . $mailto . '>';
}
$self->set_author($author);
}
if ( my $description = $project->{description} ) {
$self->set_abstract($description);
}
# NOTE: 'git' has no corresponding CLI::Simple accessor (not in
# option_specs, no extra_options declared) -- there is currently
# nowhere valid to apply this buildspec.yml value. Left unapplied
# rather than guessing at an attribute name that doesn't exist.
return;
}
########################################################################
sub parse_pm_module {
########################################################################
my ( $self, $pm_module ) = @_;
return
if !$pm_module;
$self->set_module($pm_module);
return;
}
########################################################################
sub read_buildspec {
########################################################################
my ( $self, $file ) = @_;
croak 'file not found or empty ' . $file . $NL
if !-s $file;
local $RS = undef;
open my $fh, '<', $file or croak "could not open $file: $OS_ERROR\n";
my $text = <$fh>;
close $fh;
my $normalized = (
$text =~ s/^(\s*)(\w+)(\s*:)/
my ($pre, $key, $post) = ($1, $2, $3);
$key =~ s|_|-|g;
"$pre$key$post"/xsmgre
);
if ( $normalized ne $text ) {
my $current = $file . '.current';
open my $out, '>', $current or croak "could not write $current: $OS_ERROR\n";
print {$out} $normalized;
close $out;
$self->get_logger->warn("deprecated underscore keys found - normalized buildspec written to $current");
}
my $buildspec = eval { Load($normalized) };
croak 'could not read ' . $file . $NL . $EVAL_ERROR . $NL
if $EVAL_ERROR || !$buildspec;
return $buildspec;
}
# this method converts a buildspec into options to be passed to shell script
# which eventually calls this script to create the Makefile.PL
########################################################################
sub parse_buildspec {
########################################################################
my ($self) = @_;
( run in 1.117 second using v1.01-cache-2.11-cpan-364913b4093 )