Add detection of Summary and %description.
This commit is contained in:
1 parent
a96ce38c17
commit
181b9c65a5
3 files changed
+82
-28
No files matched your search
@@ -6,21 +6,22 @@ my $builder = Module::Build->new(
|
|||||||
module_name => 'cpanspec',
|
module_name => 'cpanspec',
|
||||||
license => 'perl',
|
license => 'perl',
|
||||||
dist_author => 'Steven Pritchard <steve@cpan.org>',
|
dist_author => 'Steven Pritchard <steve@cpan.org>',
|
||||||
dist_version => '1.61',
|
dist_version => '1.62',
|
||||||
requires => {
|
requires => {
|
||||||
'Archive::Tar' => 0,
|
'Archive::Tar' => 0,
|
||||||
'Archive::Zip' => 0,
|
'Archive::Zip' => 0,
|
||||||
'File::Basename' => 0,
|
'File::Basename' => 0,
|
||||||
'FileHandle' => 0,
|
'FileHandle' => 0,
|
||||||
'Getopt::Long' => 0,
|
'Getopt::Long' => 0,
|
||||||
'locale' => 0,
|
'locale' => 0,
|
||||||
'LWP::UserAgent' => 0,
|
'LWP::UserAgent' => 0,
|
||||||
'Module::CoreList' => 0,
|
'Module::CoreList' => 0,
|
||||||
'POSIX' => 0,
|
'POSIX' => 0,
|
||||||
'Parse::CPAN::Packages' => 0,
|
'Parse::CPAN::Packages' => 0,
|
||||||
'Pod::Usage' => 0,
|
'Pod::Usage' => 0,
|
||||||
'Text::Autoformat' => 0,
|
'Text::Autoformat' => 0,
|
||||||
'YAML' => 0,
|
'YAML' => 0,
|
||||||
|
'Pod::Simple::TextContent' => 0,
|
||||||
},
|
},
|
||||||
script_files => [
|
script_files => [
|
||||||
'cpanspec',
|
'cpanspec',
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
0.62
|
||||||
|
|
||||||
|
* Improve auto-detection of %description and Summary.
|
||||||
|
|
||||||
0.61 2006-03-11
|
0.61 2006-03-11
|
||||||
|
|
||||||
* Add this file.
|
* Add this file.
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
#
|
#
|
||||||
# $Id: cpanspec,v 1.12 2006/03/22 21:50:38 stevenpritchard Exp $
|
# $Id: cpanspec,v 1.13 2006/03/23 01:57:12 stevenpritchard Exp $
|
||||||
|
|
||||||
my $NAME="cpanspec";
|
my $NAME="cpanspec";
|
||||||
my $VERSION='1.62';
|
my $VERSION='1.62';
|
||||||
@@ -187,6 +187,7 @@ use Pod::Usage;
|
|||||||
use File::Basename;
|
use File::Basename;
|
||||||
use LWP::UserAgent;
|
use LWP::UserAgent;
|
||||||
use Parse::CPAN::Packages;
|
use Parse::CPAN::Packages;
|
||||||
|
use Pod::Simple::TextContent;
|
||||||
# Apparently gets pulled in by another module.
|
# Apparently gets pulled in by another module.
|
||||||
#use Cwd;
|
#use Cwd;
|
||||||
|
|
||||||
@@ -349,9 +350,53 @@ sub extract($$$) {
|
|||||||
|
|
||||||
sub get_description(%) {
|
sub get_description(%) {
|
||||||
my %args=@_;
|
my %args=@_;
|
||||||
|
my $pm="";
|
||||||
|
my ($summary, $description);
|
||||||
|
|
||||||
|
my $path=$args{module};
|
||||||
|
$path=~s,::,/,g;
|
||||||
|
my @pmfiles=("$args{name}-$args{version}/lib/$path.pm");
|
||||||
|
do {
|
||||||
|
push(@pmfiles, "$args{name}-$args{version}/$path.pm");
|
||||||
|
} while ($path=~s,^[^/]+/,,);
|
||||||
|
push(@pmfiles, "$args{name}-$args{version}/$args{module}")
|
||||||
|
if ($args{module} !~ /::/);
|
||||||
|
|
||||||
|
for my $file (@pmfiles) {
|
||||||
|
$pm=(grep { $_ eq $file or $_ eq "./$file" }
|
||||||
|
list_files($args{archive}, $args{type}))[0];
|
||||||
|
last if $pm;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($pm) {
|
||||||
|
verbose "Trying to fetch description from $pm...";
|
||||||
|
|
||||||
|
if (my $content=extract($args{archive}, $args{type}, $pm)) {
|
||||||
|
my $parser=Pod::Simple::TextContent->new()
|
||||||
|
or die "Pod::Simple::TextContent->new() failed: $!\n";
|
||||||
|
$parser->no_whining(1);
|
||||||
|
my $rendered="";
|
||||||
|
$parser->output_string(\$rendered);
|
||||||
|
$parser->parse_string_document($content);
|
||||||
|
if ($parser->content_seen and $rendered) {
|
||||||
|
if ($rendered=~/DESCRIPTION\s+(\S.*?)\n\n/s) {
|
||||||
|
$description=$1;
|
||||||
|
}
|
||||||
|
if ($rendered=~/NAME\s*$args{module}\s[-\s]*(\S[^\n]*)/s) {
|
||||||
|
$summary=$1;
|
||||||
|
}
|
||||||
|
return($description, $summary) if (defined($description));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
warn "Failed to read $pm from $args{filename}"
|
||||||
|
. ($args{type} eq 'tar'
|
||||||
|
? (": " . $args{archive}->error()) : "") . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (my $readme=(sort { $a cmp $b } (grep /README/i, @{$args{files}}))[0]) {
|
||||||
|
verbose "Trying to fetch description from $readme...";
|
||||||
|
|
||||||
my $readme=(sort { $a cmp $b } (grep /README/i, @{$args{files}}))[0];
|
|
||||||
if ($readme) {
|
|
||||||
if (my $content=extract($args{archive}, $args{type},
|
if (my $content=extract($args{archive}, $args{type},
|
||||||
"$args{name}-$args{version}/$readme")) {
|
"$args{name}-$args{version}/$readme")) {
|
||||||
$content=~s/\r//g; # Why people use DOS text, I'll never understand.
|
$content=~s/\r//g; # Why people use DOS text, I'll never understand.
|
||||||
@@ -359,16 +404,17 @@ sub get_description(%) {
|
|||||||
$string=~s/^\n+//;
|
$string=~s/^\n+//;
|
||||||
if ((my @tmp=split "\n", $string) > 2
|
if ((my @tmp=split "\n", $string) > 2
|
||||||
and $string !~ /^[#\-=]/) {
|
and $string !~ /^[#\-=]/) {
|
||||||
return $string;
|
return($string, undef);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
warn "Failed to read $readme from $args{filename}"
|
warn "Failed to read $readme from $args{filename}"
|
||||||
. ($args{type} eq 'tar' ? (": " . $args{archive}->error()) : "") . "\n";
|
. ($args{type} eq 'tar'
|
||||||
|
? (": " . $args{archive}->error()) : "") . "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return undef;
|
return(undef, undef);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Set locale to en_US.UTF8 so that dates in changelog will be correct
|
# Set locale to en_US.UTF8 so that dates in changelog will be correct
|
||||||
@@ -492,13 +538,14 @@ for my $file (@ARGV) {
|
|||||||
. "/" . $file;
|
. "/" . $file;
|
||||||
$source=~s/$version/\%{version}/;
|
$source=~s/$version/\%{version}/;
|
||||||
|
|
||||||
my $description=get_description(
|
my ($description,$summary)=get_description(
|
||||||
archive => $archive,
|
archive => $archive,
|
||||||
type => $type,
|
type => $type,
|
||||||
filename => $file,
|
filename => $file,
|
||||||
name => $name,
|
name => $name,
|
||||||
version => $version,
|
module => $module,
|
||||||
files => \@files,
|
version => $version,
|
||||||
|
files => \@files,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (defined($description) and $description) {
|
if (defined($description) and $description) {
|
||||||
@@ -512,6 +559,8 @@ for my $file (@ARGV) {
|
|||||||
$description="$module Perl module";
|
$description="$module Perl module";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$summary="$module Perl module" if (!defined($summary));
|
||||||
|
|
||||||
my @doc=sort { $a cmp $b } grep {
|
my @doc=sort { $a cmp $b } grep {
|
||||||
!/\//
|
!/\//
|
||||||
and !/\.(pl|xs|h|c|pm|in|pod)$/i
|
and !/\.(pl|xs|h|c|pm|in|pod)$/i
|
||||||
@@ -719,7 +768,7 @@ for my $file (@ARGV) {
|
|||||||
Name: $prefix$name
|
Name: $prefix$name
|
||||||
Version: $version
|
Version: $version
|
||||||
Release: $release$disttag
|
Release: $release$disttag
|
||||||
Summary: $module Perl module
|
Summary: $summary
|
||||||
License: $license
|
License: $license
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
URL: $url
|
URL: $url
|
||||||
|
|||||||
Reference in new issue
Block a user