App-gqmt
view release on metacpan or search on metacpan
lib/App/gqmt.pm view on Meta::CPAN
# -*- mode: cperl; eval: (follow-mode) -*-
#
package App::gqmt;
use strict;
use warnings;
use diagnostics;
use Data::Printer caller_info => 1, print_escapes => 1, output => 'stdout', class => { expand => 2 },
caller_message => "DEBUG __FILENAME__:__LINE__ ";
use Getopt::Long qw(:config no_ignore_case gnu_getopt auto_help auto_version);
use Pod::Man;
use Pod::Usage qw(pod2usage);
use File::Basename;
use HTTP::Request ();
use LWP::UserAgent;
use JSON;
use Time::Piece;
use Template;
my @PROGARG = ($0, @ARGV);
our $VERSION = '1.02';
sub new {
my $class = shift;
my $self =
bless {
_progname => fileparse($0),
_progargs => [$0, @ARGV],
_option => { d => 0,
colored => 0,
rows_number => 100,
age => 60*60*24*14,
versions_to_hold => 2,
url => 'https://api.github.com/graphql',
single_iteration => 0,
http_timeout => 180,
pkg => {
alpine => 1,
api => 1,
app => 1,
scheduler => 1,
},
re => {
default => '^(?:docker-base-layer|develop|release|master|v[0-9]+\.[0-9]+\.[0-9]+)$',
alpine => '^(?:docker-base-layer|develop|release|master|v[0-9]+\.[0-9]+\.[0-9]+)$',
api => '^(?:docker-base-layer|develop|release|master|v[0-9]+\.[0-9]+\.[0-9]+)$',
app => '^(?:docker-base-layer|develop|qa|release|master|v[0-9]+\.[0-9]+\.[0-9]+)$',
scheduler => '^(?:docker-base-layer|develop|release|master|v[0-9]+\.[0-9]+\.[0-9]+)$',
},
},
}, $class;
GetOptions (
'a|age=i' => \$self->{_option}{age},
'U|url=s' => \$self->{_option}{url},
'u|user=s' => \$self->{_option}{user},
'T|token=s' => \$self->{_option}{token},
'R|repository=s' => \$self->{_option}{repo},
'P|package=s' => \$self->{_option}{package},
'package-regex=s' => \$self->{_option}{package_regex},
'n|dry-run' => \$self->{_option}{dry_run},
'N|rows-number=i' => \$self->{_option}{rows_number},
'versions-to-hold=i' => \$self->{_option}{versions_to_hold},
'http-timeout=i' => \$self->{_option}{http_timeout},
'C|colored' => \$self->{_option}{colored},
'D|delete' => \$self->{_option}{delete},
's|single-iteration' => \$self->{_option}{single_iteration},
't|query-template=s' => \$self->{_option}{query_template},
'v|package-version=s' => \$self->{_option}{v},
'h|help' => sub { pod2usage(-exitval => 0, -verbose => 2); exit 0 },
'd|debug+' => \$self->{_option}{d},
'V|version' => sub { print "$self->{_progname}, version $VERSION\n"; exit 0 },
);
pod2usage(-exitval => 0, -verbose => 2, -msg => "\nERROR: repository owner not provided, option -u\n\n")
if ! $self->{_option}{user};
pod2usage(-exitval => 0, -verbose => 2, -msg => "\nERROR: query template file does not exist, option -t\n\n")
if defined $self->{_option}{query_template} && ! -e $self->{_option}{query_template};
pod2usage(-exitval => 2, -verbose => 2, -msg => "\nERROR: access token is not provided, option -T\n\n" )
if ! $self->{_option}{token};
pod2usage(-exitval => 2, -verbose => 2, -msg => "\nERROR: repository name is not provided, option -R\n\n" )
if ! $self->{_option}{repo};
pod2usage(-exitval => 2, -verbose => 2, -msg => "\nERROR: package name not provided, option -P\n\n")
if ! $self->{_option}{package};
# pod2usage(-exitval => 2, -verbose => 2, -msg => "\nERROR: not supported package\n\n")
# if $self->{_option}{package} && ! exists $self->{_option}{pkg}{$self->{_option}{package}};
( run in 2.213 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )