App-gqmt
view release on metacpan or search on metacpan
lib/App/gqmt.pm view on Meta::CPAN
p ( $query, colored => $self->option('colored') ) if $self->option('d') > 1 || $self->option('dry_run');
next if $self->option('dry_run');
$self->option('req')->content( $self->jso->encode({ query => $query }) );
my $res = $self->lwp->request($self->option('req'));
if ( ! $res->is_success ) {
my $res_cont = $self->jso->decode( $res->content );
my $res_error = sprintf("--- ERROR ---\n\n%s\n\nMessage: %s\n doc: %s\n\n",
$res->status_line,
$res_cont->{message},
$res_cont->{documentation_url} );
print $res_error;
exit 1;
}
my $reply = $self->jso->decode( $res->decoded_content );
if ( exists $reply->{errors} ) {
unshift @{$reply->{errors}}, "--- ERROR ---";
p ( $reply->{errors}, colored => $self->option('colored') );
exit 1;
}
p ( $reply, colored => $self->option('colored') );
print "package of version ID: $_, has been successfully deleted\n" if $self->option('d') > 0;
}
}
sub get_versions {
my ($self, $args) = @_;
my $arg = {
res => $args->{res}, # result
inf => $args->{inf} // { # pageInfo
startCursor => undef,
endCursor => undef,
hasNextPage => -1,
hasPreviousPage => -1
}
};
my $query;
if ( defined $self->option('query_template') ) {
my $tt_out;
my $tt = Template->new( ABSOLUTE => 1,
RELATIVE => 1 ) || die Template->error(), "\n";
$tt->process(
$self->option('query_template'),
{
repo => $self->option('repo'),
user => $self->option('user'),
pkg_num => $self->option('rows_number'),
pkg_name => $self->option('package'),
vers_num => $self->option('rows_number'),
cursor => $arg->{inf}->{hasPreviousPage} == 1 ? sprintf(', before: "%s"', $arg->{inf}->{startCursor}) : ''
},
\$tt_out
);
$query = { query => $tt_out };
} else {
$query = $self->
query_default({ inf => $arg->{inf}->{hasPreviousPage} == 1 ? sprintf(', before: "%s"', $arg->{inf}->{startCursor}) : ''});
}
p( $query->{query}, colored => $self->option('colored'), print_escapes => 0 )
if $self->option('d') > 0 && ! defined $arg->{inf}->{startCursor};
my $json = $self->jso->encode( $query );
$self->option('req')->content( $json );
my $res = $self->lwp->request($self->option('req'));
if ( ! $res->is_success ) {
my $res_cont = $self->jso->decode( $res->content );
my $res_error = sprintf("--- ERROR ---\n\n%s\n\nMessage: %s\n doc: %s\n\n",
$res->status_line,
$res_cont->{message},
$res_cont->{documentation_url} );
print $res_error;
exit 1;
}
my $reply = $self->jso->decode( $res->decoded_content );
p ( $reply, caller_message => "REPLY: __FILENAME__:__LINE__ ", colored => $self->option('colored') )
if $self->option('d') > 2 && ! defined $arg->{inf}->{startCursor};
if ( exists $reply->{errors} ) {
unshift @{$reply->{errors}}, "--- ERROR ---";
p ( $reply->{errors}, colored => $self->option('colored') );
exit 1;
} elsif ( $reply->{data}->{repository}->{packages}->{nodes} ) {
print "WARNING: not hardcoded package name \"", $self->option('package'), "\"\n"
if $self->option('d') > 1;
}
push @{$arg->{res}}, @{$reply->{data}->{repository}->{packages}->{nodes}->[0]->{versions}->{nodes}};
return 1 if $arg->{inf}->{hasPreviousPage} == 0 || $self->option('single_iteration') == 1;
my $pageInfo = $reply->{data}->{repository}->{packages}->{nodes}->[0]->{versions}->{pageInfo};
$self->get_versions ({
res => $arg->{res},
inf => {
startCursor => $pageInfo->{startCursor},
endCursor => $pageInfo->{endCursor},
hasNextPage => $self->jso->decode( $pageInfo->{hasNextPage} ),
hasPreviousPage => $self->jso->decode( $pageInfo->{hasPreviousPage} ),
}
});
return 0;
}
( run in 0.744 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )