You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.1 KiB
90 lines
2.1 KiB
package Lemonldap::NG::Common::Cli;
|
|
|
|
use strict;
|
|
use Mouse;
|
|
use Lemonldap::NG::Common::Conf;
|
|
|
|
our $VERSION = '2.0.8';
|
|
|
|
extends 'Lemonldap::NG::Common::PSGI::Cli::Lib';
|
|
|
|
has confAccess => (
|
|
is => 'rw',
|
|
builder => sub {
|
|
my $res = Lemonldap::NG::Common::Conf->new( { (
|
|
ref $_[0] && $_[0]->{iniFile}
|
|
? ( confFile => $_[0]->{iniFile} )
|
|
: ()
|
|
)
|
|
}
|
|
);
|
|
die $Lemonldap::NG::Common::Conf::msg unless ($res);
|
|
return $res;
|
|
},
|
|
);
|
|
|
|
has cfgNum => (
|
|
is => 'rw',
|
|
isa => 'Int',
|
|
);
|
|
|
|
sub info {
|
|
my ($self) = @_;
|
|
my $conf =
|
|
$self->confAccess->getConf( { cfgNum => $self->cfgNum, raw => 1 } )
|
|
or die $Lemonldap::NG::Common::Conf::msg;
|
|
$conf->{cfgAuthorIP} ||= "No IP provided";
|
|
$conf->{cfgDate} ||= 0;
|
|
$conf->{cfgLog} ||= "No log provided";
|
|
print qq{
|
|
Num : $conf->{cfgNum}
|
|
Author : $conf->{cfgAuthor}
|
|
Author IP: $conf->{cfgAuthorIP}
|
|
Date : } . localtime( $conf->{cfgDate} ) . qq{
|
|
Version : $conf->{cfgVersion}
|
|
Log : $conf->{cfgLog}
|
|
};
|
|
}
|
|
|
|
sub updateCache {
|
|
my $self = shift;
|
|
my $conf = $self->confAccess->getConf( { noCache => 2 } );
|
|
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
|
|
my $args = {};
|
|
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";
|
|
}
|
|
$action =~ s/\-([a-z])/uc($1)/e;
|
|
$self->$action(@_);
|
|
}
|
|
|
|
1;
|
|
|