App-JobLog
view release on metacpan or search on metacpan
lib/App/JobLog/Command/configure.pm view on Meta::CPAN
package App::JobLog::Command::configure;
$App::JobLog::Command::configure::VERSION = '1.042';
# ABSTRACT: examine or modify App::JobLog configuration
use App::JobLog -command;
use Modern::Perl;
use App::JobLog::Config qw(
day_length
editor
hidden_columns
merge
pay_period_length
precision
start_pay_period
sunday_begins_week
time_zone
workdays
DAYS
HIDABLE_COLUMNS
HOURS
MERGE
NONE_COLUMN
PERIOD
PRECISION
SUNDAY_BEGINS_WEEK
TIME_ZONE
WORKDAYS
);
use autouse 'App::JobLog::TimeGrammar' => qw(parse);
no if $] >= 5.018, warnings => "experimental::smartmatch";
sub execute {
my ( $self, $opt, $args ) = @_;
_list_params() if $opt->list;
if ( defined $opt->precision ) {
my $precision = precision( $opt->precision );
say "precision set to $precision";
}
if ( defined $opt->start_pay_period ) {
eval {
my ($s) = parse( $opt->start_pay_period );
my $d = start_pay_period($s);
say 'beginning of pay period set to ' . $d->strftime('%F');
};
$self->usage_error(
'could not understand date: ' . $opt->start_pay_period )
if $@;
}
if ( defined $opt->length_pay_period ) {
my $length_pp = pay_period_length( $opt->length_pay_period );
say "length of pay period in days set to $length_pp";
}
if ( defined $opt->day_length ) {
my $day_length = day_length( $opt->day_length );
say "length of work day set to $day_length";
}
if ( defined $opt->workdays ) {
my $days = uc $opt->workdays;
my %days = map { $_ => 1 } split //, $days;
my @days;
for ( split //, DAYS ) {
push @days, $_ if $days{$_};
}
$days = join '', @days;
$days = workdays($days);
say "workdays set to $days";
}
if ( defined $opt->sunday_begins_week ) {
my $bool;
for ( $opt->sunday_begins_week ) {
when (/true/i) { $bool = 1 }
when (/false/i) { $bool = 0 }
default { $bool = $opt->sunday_begins_week || 0 };
}
$bool = sunday_begins_week($bool);
say "Sunday begins week is now " . ( $bool ? 'true' : 'false' );
}
if ( defined $opt->merge ) {
my $m = lc $opt->merge;
$m =~ s/^\s++|\s++$//g;
$m =~ s/\s++/ /g;
my $value = merge($m);
say "merge level is now '$value'";
}
if ( defined $opt->editor ) {
my $value = editor( $opt->editor );
say "log editor is now $value";
}
if ( defined $opt->hidden_columns ) {
my @cols = map { my $v = $_; lc $v } @{ $opt->hidden_columns };
my %cols = map { $_ => 1 } @cols;
my $value = join ' ', sort keys %cols;
$value = hidden_columns($value);
say "hidden columns: $value";
}
if ( defined $opt->time_zone ) {
my $value = time_zone( $opt->time_zone );
say "time zone is now $value";
}
}
sub usage_desc { '%c ' . __PACKAGE__->name . ' %o' }
sub abstract { 'set or display various parameters' }
sub options {
return (
[
'precision=i',
'decimal places of precision in display of time; '
. 'e.g., --precision=1; '
. 'default is '
. PRECISION
],
[
'start-pay-period=s',
'the first day of some pay period; '
. 'pay period boundaries will be calculated based on this date and the pay period length; '
. 'e.g., --start-pay-period="June 14, 1912"'
],
[
'time-zone=s',
'time zone used in calendar calculations; default is ' . TIME_ZONE
],
[
'sunday-begins-week=s',
'whether Sundays should be regarded as the first day in the week; '
. 'the alternative is Monday; default is '
. ( SUNDAY_BEGINS_WEEK ? 'TRUE' : 'FALSE' )
],
[
'length-pay-period=i',
'the length of the pay period in days; e.g., --length-pay-period 7; '
. 'default is '
. PERIOD
],
[
'day-length=f',
'length of workday; '
. 'e.g., --day-length 7.5; '
. 'default is: '
. HOURS
],
[
'workdays=s',
'which days of the week you work represented as some subset of '
. DAYS
. '; e.g., --workdays=MTWH; '
. 'default is '
. WORKDAYS
],
[
'merge=s',
'amount of merging of events in summaries; '
. 'available options are : '
. "'adjacent same tags', 'adjacent', 'all', 'none', 'same day same tags', 'same day', 'same tags'; "
. "default is '@{[MERGE]}'"
],
( run in 0.697 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )