6 use System::Introspector::Report::Source;
7 use System::Introspector::Report::Config;
8 use Log::Contextual qw( :log set_logger );
9 use Log::Contextual::SimpleLogger;
12 's|storage=s' => \my $storage_dir,
13 'c|config=s' => \my $config_file,
14 'r|report=s' => \my @report_types,
15 'p|publish=s' => \my @publish_types,
16 'a|all' => \my $all_reports,
17 'v|verbose+' => \my $log_verbose,
18 'h|help' => sub { pod2usage(0) },
21 die "$0 requires --storage (-s) to be specified\n"
22 unless defined $storage_dir;
24 die "$0 requires --config (-c) to be specified\n"
25 unless defined $config_file;
27 my @additional_log_levels = qw( debug trace );
28 my $logger = Log::Contextual::SimpleLogger->new({
30 qw( error fatal info ),
32 @additional_log_levels[0 .. (($log_verbose || 0) - 1)],
37 my $config = System::Introspector::Report::Config
38 ->new(config_file => log_debug { "Loading config '$_[0]'" } $config_file);
40 my $source = System::Introspector::Report::Source
41 ->new_from_root(log_debug { "Loading storage '$_[0]'" } $storage_dir);
43 my @types = $all_reports
44 ? $config->report_types
45 : map [$_, {}], @report_types;
46 log_debug { "Generating report data" };
47 my @reports = $source->generate(@types);
49 log_debug { "Publishing report data" };
50 for my $publisher ($config->publishers(@publish_types)) {
52 $publisher->publish(\@reports);
55 print "Error during publish: $_\n";
64 system-introspector-report - Generate System::Introspector reports