DynGig-CLI
    
    
  
  
  
view release on metacpan or search on metacpan
lib/DynGig/CLI/Schedule/Period.pm view on Meta::CPAN
use constant DAY => 86400;
$| ++;
=head1 SYNOPSIS
$exe B<--help>
$exe [B<--timezone> zone] [B<--grep> pattern] [B<--config> file]
[B<--now> time] B<--calendar> year/month
$exe [B<--timezone> zone] [B<--grep> pattern] [B<--config> file]
[B<--now> time] B<--days> days
$exe [B<--timezone> zone] [B<--config> file] [B<--now> time]
=cut
sub main
{
    my ( $class, %option ) = @_;
    map { croak "$_ not defined" if ! defined $option{$_} }
        qw( days timezone now config );
    my $menu = DynGig::Util::CLI->new
    (
        'h|help','help menu',
        'g|grep=s','pattern',
        'c|calendar=s',"calendar mode",
        'days=i',"[ $option{days} ] number of days to display",
        'timezone=s',"[ $option{timezone} ] timezone",
        'now=s',"[ now ] start time",
        'config=s',"[ $option{config} ]",
    );
    
    Pod::Usage::pod2usage( -input => __FILE__, -output => \*STDERR )
        unless Getopt::Long::GetOptions( \%option, $menu->option() );
    my $this = bless \%option;
    if ( $option{h} )
    {
        warn join "\n", "Default value in [ ]", $menu->string(), "\n";
    }
    elsif ( $option{c} )
    {
        $this->_calendar();
    }
    else
    {
        $this->_list();
    }
    return 0;
}
sub _calendar
{
    my $this = shift @_;
    return unless $this->{c} =~ /^(\d+)(?:\/+(0?[1-9]|1[0-2]))?$/;
    my $pattern = $this->{g};
    my $timezone = $this->{timezone};
    my %time = ( day => 1, hour => 0, minute => 0, second => 0 );
    my $time = DateTime->from_epoch( time_zone => $timezone, epoch => time );
( run in 0.316 second using v1.01-cache-2.11-cpan-5dc5da66d9d )