lemonldap-ng/lemonldap-ng-common/lib/Lemonldap/NG/Common/Cli.pm

88 lines
2.0 KiB
Perl
Raw Normal View History

2016-02-06 13:22:10 +01:00
package Lemonldap::NG::Common::Cli;
use strict;
use Mouse;
use Data::Dumper;
use Lemonldap::NG::Common::Conf;
2017-02-28 21:53:19 +01:00
our $VERSION = '2.0.0';
2016-02-06 13:22:10 +01:00
has confAccess => (
is => 'rw',
builder => sub {
2016-02-25 09:40:25 +01:00
my $res = Lemonldap::NG::Common::Conf->new(
{
(
ref $_[0] && $_[0]->{iniFile}
? ( confFile => $_[0]->{iniFile} )
: ()
)
}
);
2016-02-06 13:22:10 +01:00
die $Lemonldap::NG::Common::Conf::msg unless ($res);
return $res;
},
);
has cfgNum => (
is => 'rw',
isa => 'Int',
);
sub info {
my ($self) = @_;
2016-02-25 09:40:25 +01:00
my $conf =
$self->confAccess->getConf( { cfgNum => $self->cfgNum, raw => 1 } )
2016-02-06 13:22:10 +01:00
or die $Lemonldap::NG::Common::Conf::msg;
print qq{
Num : $conf->{cfgNum}
Author : $conf->{cfgAuthor}
Author IP: $conf->{cfgAuthorIP}
2016-02-25 09:40:25 +01:00
Date : } . localtime( $conf->{cfgDate} ) . qq{
2016-02-06 13:22:10 +01:00
Log : $conf->{cfgLog}
};
}
sub updateCache {
my $self = shift;
2016-02-25 13:56:06 +01:00
my $conf = $self->confAccess->getConf( { noCache => 1, raw => 1 } );
2016-02-06 13:22:10 +01:00
die "Must not be launched as root" unless ($>);
print STDERR
qq{Cache updated to configuration $conf->{cfgNum} for user $>\n};
}
sub run {
my $self = shift;
# Options simply call corresponding accessor
2016-02-25 09:40:25 +01:00
my $args = {};
2016-02-06 13:22:10 +01:00
while ( $_[0] =~ s/^--?// ) {
my $k = shift;
my $v = shift;
if ( ref $self ) {
eval { $self->$k($v) };
if ($@) {
die "Unknown option -$k or bad value ($@)";
}
}
else {
$args->{$k} = $v;
}
}
unless ( ref $self ) {
$self = $self->new($args);
}
unless (@_) {
die 'nothing to do, aborting';
}
$self->confAccess()->lastCfg() unless ( $self->cfgNum );
my $action = shift;
unless ( $action =~ /^(?:info|update-cache)$/ ) {
die "unknown action $action. Only info or update are accepted";
}
2016-02-25 13:56:06 +01:00
$action =~ s/\-([a-z])/uc($1)/e;
2016-02-06 13:22:10 +01:00
$self->$action(@_);
}
1;