summaryrefslogtreecommitdiffstats
path: root/lib/App/ArchLinux/PackagerTools/Config.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/App/ArchLinux/PackagerTools/Config.pm')
-rw-r--r--lib/App/ArchLinux/PackagerTools/Config.pm88
1 files changed, 88 insertions, 0 deletions
diff --git a/lib/App/ArchLinux/PackagerTools/Config.pm b/lib/App/ArchLinux/PackagerTools/Config.pm
new file mode 100644
index 0000000..a44c845
--- /dev/null
+++ b/lib/App/ArchLinux/PackagerTools/Config.pm
@@ -0,0 +1,88 @@
+package App::ArchLinux::PackagerTools::Config;
+use strictures;
+
+use autodie;
+use Function::Parameters;
+use Log::Any qw($log);
+use Hash::Merge;
+use Path::Tiny;
+use TOML qw(from_toml);
+
+=head1 NAME
+
+App::ArchLinux::PackagerTools::Config - ShortDesc
+
+=head1 SYNOPSIS
+
+use App::ArchLinux::PackagerTools::Config;
+
+# synopsis...
+
+=head1 DESCRIPTION
+
+# longer description...
+
+=head1 METHODS
+
+=head2 new
+
+ my $config = App::ArchLinux::PackagerTools::Config->new();
+
+Returns a new instance.
+
+=cut
+
+method new($class: $deps = {}) {
+ return $class->new_no_defaults($deps);
+}
+
+method new_no_defaults($class: $deps = {}) {
+ my $self = {};
+ bless $self, $class;
+ $self->{deps} = $deps;
+ return $self;
+}
+
+=head2 Public Methods
+
+=cut
+
+=head3 get_config
+
+ my $conf = $config->get_config();
+
+Return config content as a hash.
+
+=cut
+
+method get_config() {
+ my $config = $self->_get_default_config();
+
+ my $file = path(($ENV{XDG_CONFIG_HOME} // $ENV{HOME}."/.config")."/perlpkg/config.toml");
+ if ($file->exists) {
+ $log->debugf("Reading config file: %s", $file);
+ my $file_config = from_toml($file->slurp);
+ $config = merge($file_config, $config);
+
+ } else {
+ $log->debug("Config file not found. Returning default config");
+ }
+ return $config;
+}
+
+=head3 _get_default_config
+
+ my $default_conf = $config->_get_default_config();
+
+Return a hash with the default config values.
+
+=cut
+
+method _get_default_config() {
+ return {
+ };
+}
+
+1;
+
+__END__