Re: RFC: ConfigDir option

Bjorn <[email protected]> Mon, 28 Nov 2016 18:38:31 -0800
Newsgroups gmane.comp.log.logwatch.devel
Message-ID <[email protected]>
Jason,

I don't quite follow what you are trying to accomplish.  You mention the
need "to support a runtime configuration for the loading of a
configuration."

In your code you declare a new switch, --configdir.  But presumably that
option is passed statically.  Also, I don't see where that gets used,
other than printing it.  And finally, I don't understand what goes in
that newly declared directory.


Bjorn



On 11/28/2016 04:27 PM, Jason Pyeron wrote:
> Request for comments, concerns, objections, suggestions.
> 
> Background:
> 
> While developing a testing framework, we needed to support a runtime configuration for the loading of a configuration.
> 
> Solution:
> 
> --configdir option
> 
> Implementation:
> 
> root@black7 /projects/logwatch
> $ git diff
> diff --git a/scripts/logwatch.pl b/scripts/logwatch.pl
> index 0167755..fd5dd6a 100755
> --- a/scripts/logwatch.pl
> +++ b/scripts/logwatch.pl
> @@ -62,6 +62,11 @@ use File::Temp qw/ tempdir /;
>  eval "use lib \"$BaseDir/lib\";";
>  eval "use Logwatch \':dates\'";
> 
> #The current placement of the GetOptions is well after the contents of /etc/logwatch/ are ingested. So a preliminary call is added before:
> # http://search.cpan.org/dist/Getopt-Long/lib/Getopt/Long.pm 
> #Since Getopt::Long modifies ARGV, then we clone the array.
> +my @argvClone = @ARGV;
> #Most usage of Getopt::Long is based on a global context and the configuration would impact the second call later on, so lets use a OO desgin and instantiate an instance.
> +my $gop = Getopt::Long::Parser->new;
> #ignore the unknown options, we only care about --configdir
> +$gop->configure("pass_through");
> #extract confdir, if it exists
> +$gop->getoptionsfromarray(\@argvClone, "confdir=s" => \$ConfigDir);
> +
>  my (%Config, @ServiceList, @LogFileList, %ServiceData, %LogFileData);
>  my (@AllShared, @AllLogFiles, @FileList);
>  # These need to not be global variables one day
> @@ -135,6 +140,7 @@ my %wordsToInts = (yes  => 1,  no     => 0,
> 
>  # Load main config file...
>  if ($Config{'debug'} > 8) {
> # debug the confdir
> +   print "\nConfigDir:$ConfigDir\n";
>     print "\nDefault Config:\n";
>     &PrintConfig();
>  }
> @@ -192,6 +198,7 @@ my ($tmp_mailto, $tmp_savefile);
> 
>  &GetOptions ("d|detail=s"   => \$Config{'detail'},
>               "l|logfile=s@" => \@TempLogFileList,
> #this is here for error handling
> +             "confdir=s"    => \$ConfigDir,
>               "logdir=s"     => \$Config{'logdir'},
>               "s|service=s@" => \@TempServiceList,
>               "m|mailto=s"   => \$tmp_mailto,
> @@ -1088,6 +1095,7 @@ sub Usage () {
>     print "--detail <level>: Report Detail Level - High, Med, Low or any #.\n";
>     print "--logfile <name>: *Name of a logfile definition to report on.\n";
>     print "--logdir <name>: Name of default directory where logs are stored.\n";
> #the confdir option help
> +   print "--confdir <name>: Name of default directory where configuration is stored.\n";
>     print "--service <name>: *Name of a service definition to report on.\n";
>     print "--output <output type>: Report Output - stdout [default], mail, file.\n"; #8.0
>     print "--format <formatting>: Report Format - text [default], html.\n"; #8.0
> 
> 
> -Jason
> 
> --
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> -                                                               -
> - Jason Pyeron                      PD Inc. http://www.pdinc.us -
> - Principal Consultant              10 West 24th Street #100    -
> - +1 (443) 269-1555 x333            Baltimore, Maryland 21218   -
> -                                                               -
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> 
> 
> ------------------------------------------------------------------------------
> _______________________________________________
> Logwatch-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/logwatch-devel
> 


------------------------------------------------------------------------------