configuration, state generation, centralised gatherer
[scpubgit/System-Introspector.git] / lib / System / Introspector / Config.pm
diff --git a/lib/System/Introspector/Config.pm b/lib/System/Introspector/Config.pm
new file mode 100644 (file)
index 0000000..8b51c31
--- /dev/null
@@ -0,0 +1,22 @@
+package System::Introspector::Config;
+use Moo;
+use Config::General;
+
+has config => (is => 'lazy');
+
+has config_file => (is => 'ro', required => 1);
+
+sub _build_config {
+    my ($self) = @_;
+    my $reader = Config::General->new($self->config_file);
+    my %config = $reader->getall;
+    return \%config;
+}
+
+sub groups { keys %{ $_[0]->config->{group} || {} } }
+
+sub has_group { exists $_[0]->config->{group}{ $_[1] } }
+
+sub config_for_group { $_[0]->config->{group}{ $_[1] } }
+
+1;