App-ThisDist
view release on metacpan or search on metacpan
lib/App/ThisDist.pm view on Meta::CPAN
}
last GUESS;
}
FROM_BUILD_PL: {
last unless -f "Build.PL";
log_debug "Found Build.PL";
my $content = File::Slurper::read_text("Build.PL");
unless ($content =~ /use Module::Build/) {
log_debug "Build.PL doesn't seem to use Module::Build, skipped";
last;
}
unless ($content =~ /module_name\s*=>\s*["'](.+?)["']/s) {
log_debug "Couldn't extract value of module_name from Build.PL, skipped";
last;
}
$distname = $1; $distname =~ s/::/-/g;
log_debug "Got distname=$distname from Build.PL";
$detailinfo->{source} = "Build.PL";
# XXX extract version?
last GUESS;
}
# note: Build script does not contain dist name
FROM_GIT_CONFIG: {
last; # currently disabled
last unless -f ".git/config";
log_debug "Found .git/config";
my $content = File::Slurper::read_text(".git/config");
while ($content =~ /^\s*url\s*=\s*(.+)/mg) {
my $url = $1;
log_debug "Found URL '$url' in git config";
require CPAN::Dist::FromURL;
my $res = CPAN::Dist::FromURL::extract_cpan_dist_from_url($url);
if (defined $distname) {
log_debug "Guessed distname=$distname from .git/config URL '$url'";
$detailinfo->{source} = "git config";
# XXX extract version?
last GUESS;
}
}
}
__DISABLED__FROM_REPO_NAME: {
last; # currently disabled
log_debug "Using CPAN::Dist::FromRepoName to guess from dir name ...";
require CPAN::Dist::FromRepoName;
my $res = CPAN::Dist::FromRepoName::extract_cpan_dist_from_repo_name($dir_basename);
if (defined $res) {
$distname = $res;
log_debug "Guessed distname=$distname from repo name '$dir_basename'";
$detailinfo->{source} = "repo name";
# XXX extract version?
last GUESS;
}
}
FROM_ARCHIVE: {
require Filename::Type::Perl::Release;
# if there is a single archive in the directory which looks like a
# perl release, use that.
my @files = grep { -f } glob "*";
my ($distfile, $dist, $ver);
for my $file (@files) {
my $res = Filename::Type::Perl::Release::check_perl_release_filename(filename=>$file);
next unless $res;
last FROM_ARCHIVE if defined $dist;
$dist = $res->{distribution};
$ver = $res->{version};
$distfile = $file;
}
last unless defined $dist;
$distname = $dist;
$distver = $ver;
log_debug "Guessed distname=$distname from a single perl archive file in the directory ($distfile)";
$detailinfo->{source} = "archive";
$detailinfo->{archive_file} = $distfile;
last GUESS;
}
log_debug "Can't guess distribution, giving up";
} # GUESS
if ($detail) {
$detailinfo->{dist} = $distname;
$detailinfo->{dist_version} = $distver;
$detailinfo;
} else {
return unless defined $distname;
$extract_version ? "$distname ".(defined $distver ? $distver : "?") : $distname;
}
}
sub this_mod {
my $res = this_dist(@_);
return $res unless defined $res;
if (ref $res) {
return $res unless $res->{dist} && $res->{dist} =~ /\S/;
($res->{module} = $res->{dist}) =~ s/-/::/g;
} else {
return $res unless $res =~ /\S/;
$res =~ s/-/::/g;
}
$res;
}
1;
# ABSTRACT: Print Perl {distribution,module,author,...} associated with current directory
__END__
=pod
=encoding UTF-8
=head1 NAME
App::ThisDist - Print Perl {distribution,module,author,...} associated with current directory
=head1 VERSION
( run in 1.951 second using v1.01-cache-2.11-cpan-39bf76dae61 )