App-BS
view release on metacpan or search on metacpan
lib/BS/Package/Meta.pm view on Meta::CPAN
no_dupes => 1
);
$dep_pkgargs{base} = $dep_pkgargs{base}->out if $dep_pkgargs{base};
croak %dep_pkgargs unless $dep_pkgargs{base}
}
catch ($e) {
my $res = BS::Ext::pacman->pkg_query( $dep_pkgargs{name} );
BS::Common::dmsg $res;
chomp $res->out->[-1];
try {
$dep_pkgargs{base} //= BS::Ext::pacinfo->pkgbase(
$res->out->[-1],
resolve_deps => 0,
no_dupes => 1
);
$dep_pkgargs{base} = $dep_pkgargs{base}->out
if $dep_pkgargs{base};
}
catch ($e) {
croak np $e
}
}
}
if ( $args{fetch} ) {
$class->fetch( $dep_pkgargs{base}, %args );
}
\%dep_pkgargs;
}
method parse_dep : common ($line, %args) {
$class->resolve_base( $line, %args );
}
method from_srcinfo : common ($in, %args) {
my $href =
$class->parse_srcinfo( BS::Common->tie_file( $in, delete $args{out} ),
%args );
BS::Package->new( srcinfo => $href );
}
method parse_srcinfo : common ($in, %args) {
my ( $as_aref, $as_path );
BS::Common->open_as_href(
$in, %args,
parse_line => sub ( $line, %args ) {
__PACKAGE__->parse_srcinfo_line( $line, %args );
}
);
}
method parse_srcinfo_line : common ($line, %args) {
# Not sure if this bit is thread-safe, but there shouldn't be any
# issues with usage in non-blocking event-loop or forking code
state $_res_buff = $args{dest};
$_res_buff = $args{dest}
if keys $args{dest}->%* && $args{dest} ne $_res_buff;
const my $SRCINFO_LINE_RE => qr/^([a-z0-9_]+)\s*=\s*(.+)\n?$/i;
my ( $key, $val ) = ( $line =~ $SRCINFO_LINE_RE );
return undef unless $key && $val;
const my $DEPKEY_ANY_RE => qr/depends/i;
if ( $key =~ $DEPKEY_ANY_RE ) {
$val = $class->parse_dep( $val, %args );
}
return $key, $val;
}
( run in 2.005 seconds using v1.01-cache-2.11-cpan-c966e8aa7e8 )