#!/usr/bin/perl -w

# $Id$
# $LastChangedDate$
# $Rev$

use strict;
use lib qw( ./lib ../lib);
use Nagios::Config;
use Nagios::Object::Config;
use Getopt::Std;
use Benchmark qw(:all);
use Data::Dumper;

our ( $opt_n, $opt_o, $opt_v, $opt_b, $opt_d, $opt_f, $opt_r, $opt_l );
getopt('n:o:v:');
getopt('bdfrl');

if ($opt_f) {
    Nagios::Config->fast_mode(1);
}

Nagios::Object::Config->strict_mode(undef);
unless ($opt_l) {
    Nagios::Object::Config->strict_mode(1);
}

if ( !$opt_n && !$opt_o ) {
    print "Must specify a filename to parse (either -n or -o).\n";
    exit 1;
}

my $t0 = new Benchmark;

my $obj = undef;
if ($opt_n) {
    $obj = Nagios::Config->new( Filename => $opt_n, Version => $opt_v );
}
if ($opt_o) {
    $obj = Nagios::Object::Config->new( Version => $opt_v );
    $obj->parse($opt_o);

    if ($opt_r) {
        $obj->resolve_objects;
        $obj->register_objects;
    }
}

if ($opt_d) {
    print Dumper($obj), "\n";
}

if ($opt_b) {
    my $t1 = new Benchmark;
    my $td = timediff( $t1, $t0 );
    printf "Benchmark: %s\n", timestr($td);
}

=head1 NAME

parse.pl

=head1 USAGE

parse.pl [-n|-o] [-v] [-b] [-d] [-f]

=head1 OPTIONS

=over 4

=item -n

Specify a primary nagios configuration file.  This file will be parsed along with
any object configuration files referenced inside it.

=item -o

Parse a single object configuration file.

=item -v

Specify a Nagios configuration version to parse. i.e. -v 1 or -v 2

=item -b

Show some benchmarking information.

=item -d

Dump out the data structures after parsing (uses Data::Dumper).

=item -f

Use the new EXPERIMENTAL fast mode.

=cut

