start of object::remote logging usage
[scpubgit/System-Introspector-Report.git] / bin / system-introspector-report
CommitLineData
499ebcdd 1#!/usr/bin/env perl
2use strictures;
3use Getopt::Long;
4use Pod::Usage;
0331d9cd 5use Try::Tiny;
499ebcdd 6use System::Introspector::Report::Source;
7use System::Introspector::Report::Config;
8a63da0b 8use System::Introspector::Report::Logging qw( :log router );
499ebcdd 9
10GetOptions(
11 's|storage=s' => \my $storage_dir,
12 'c|config=s' => \my $config_file,
13 'r|report=s' => \my @report_types,
14 'p|publish=s' => \my @publish_types,
15 'a|all' => \my $all_reports,
72599a55 16 'v|verbose+' => \my $log_verbose,
499ebcdd 17 'h|help' => sub { pod2usage(0) },
18) or pod2usage(2);
19
20die "$0 requires --storage (-s) to be specified\n"
21 unless defined $storage_dir;
22
23die "$0 requires --config (-c) to be specified\n"
2956c871 24 unless defined $config_file;
499ebcdd 25
d23c8d13 26my $timed = sub { sprintf shift, scalar localtime };
27
28log_info { 'Starting at %s'->$timed };
f40a8521 29
499ebcdd 30my $config = System::Introspector::Report::Config
9909e59e 31 ->new(config_file => log_info { "Loading config '$_[0]'" } $config_file);
499ebcdd 32
33my $source = System::Introspector::Report::Source
9909e59e 34 ->new_from_root(log_info { "Loading storage '$_[0]'" } $storage_dir);
499ebcdd 35
36my @types = $all_reports
37 ? $config->report_types
38 : map [$_, {}], @report_types;
9909e59e 39log_info { "Generating report data" };
499ebcdd 40my @reports = $source->generate(@types);
41
9909e59e 42log_info { "Publishing report data" };
499ebcdd 43for my $publisher ($config->publishers(@publish_types)) {
0331d9cd 44 try {
45 $publisher->publish(\@reports);
46 }
47 catch {
48 print "Error during publish: $_\n";
49 };
499ebcdd 50}
f40a8521 51
d23c8d13 52log_info { 'Done at %s'->$timed };
499ebcdd 53
54__END__
55
56=head1 NAME
57
58system-introspector-report - Generate System::Introspector reports
59
60=cut