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 )