OSDN Git Service

split config library
authorISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
Thu, 25 Oct 2012 15:32:27 +0000 (00:32 +0900)
committerISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
Thu, 25 Oct 2012 15:32:27 +0000 (00:32 +0900)
lib/Mubot4FB/Config.pm [new file with mode: 0644]
mubot4fb.pl

diff --git a/lib/Mubot4FB/Config.pm b/lib/Mubot4FB/Config.pm
new file mode 100644 (file)
index 0000000..d3bfbfe
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+#
+# Copyright (c) 2012 ISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
+# This program is covered by the GNU General Public License 2
+#
+package Mubot4FB::Config;
+use strict;
+use utf8;
+
+use Config::Any;
+use Hash::Merge::Simple;
+use Data::Recursive::Encode;
+
+use Data::Dumper;
+
+sub new {
+       my ($proto, $config_name) = @_;
+       my $class = ref $proto || $proto;
+       my $self = {cfg => {}, config_name => $config_name, config_path => ['/etc/mubot4fb/'.$config_name,
+                                                                           $ENV{HOME} . '/.mubot4fb/'. $config_name,
+                                                                           $ENV{PWD} . '/mubot4fb_' . $config_name]};
+       bless $self, $class;
+
+       $self->init();
+       return $self;
+}
+
+sub init {
+       my ($me) = @_;
+
+       my $c = Config::Any->load_stems({stems => $me->{config_path},  use_ext => 1, flatten_to_hash => 1});
+       foreach my $i (keys %$c) {
+               $me->{cfg} = Hash::Merge::Simple->merge($me->{cfg}, $c->{$i});
+       }
+       die 'missing config file' unless (keys %{$me->{cfg}});
+
+       $me->{cfg} = Data::Recursive::Encode->decode('utf8', $me->{cfg});
+
+       $me->{cfg}->{irc_port} ||= 6667;
+       $me->{cfg}->{irc_channels} ||= ['#mubot4fb'];
+       $me->{cfg}->{irc_nick} ||= 'mubot4fb';
+       $me->{cfg}->{irc_name}||= $me->{cfg}->{irc_nick};
+       $me->{cfg}->{irc_charset} ||= 'utf8';
+       $me->{cfg}->{database} ||= 'mubot4fb';
+       $me->{cfg}->{debug} ||= 0;
+
+       return $me->{cfg};
+}
+
+1;
index c8f98b7..92d9fa4 100755 (executable)
@@ -6,29 +6,18 @@
 use strict;
 use utf8;
 
-use Config::Any;
-use Hash::Merge::Simple;
-use Data::Recursive::Encode;
-
 use FindBin;
 use lib ("$FindBin::Bin/lib", '/usr/share/mubot4fb/lib');
 
 use Mubot4FB;
+use Mubot4FB::Config;
 
 use Data::Dumper;
 
 my $config_name = $ARGV[0] || 'not_found';
 
-my $cfg = {};
-my $config_path = ['/etc/mubot4fb/'.$config_name,
-                  $ENV{HOME} . '/.mubot4fb/'. $config_name,
-                  $ENV{PWD} . '/mubot4fb_' . $config_name];
-
-my $c = Config::Any->load_stems({stems => $config_path,  use_ext => 1, flatten_to_hash => 1});
-foreach my $i (keys %$c) {
-       $cfg = Hash::Merge::Simple->merge($cfg, $c->{$i});
-}
-die 'missing config file' unless (keys %$cfg);
+my $c = Mubot4FB::Config->new($config_name);
+my $cfg = $c->{cfg};
 
 die 'missing some config parameters should be defined (irc_server, fb_app_id, fb_app_secret, fb_access_code, fb_page_id fb_postback_url)'
   if (!defined $cfg->{'irc_server'}
@@ -40,15 +29,6 @@ die 'missing some config parameters should be defined (irc_server, fb_app_id, fb
       || !defined $cfg->{'db_user'}
       || !defined $cfg->{'db_pass'}
     );
-$cfg = Data::Recursive::Encode->decode('utf8', $cfg);
-
-$cfg->{irc_port} ||= 6667;
-$cfg->{irc_channels} ||= ['#mubot4fb'];
-$cfg->{irc_nick} ||= 'mubot4fb';
-$cfg->{irc_name}||= $cfg->{irc_nick};
-$cfg->{irc_charset} ||= 'utf8';
-$cfg->{database} ||= 'mubot4fb';
-$cfg->{debug} ||= 0;
 
 my $bot = Mubot4FB->new(server => $cfg->{'irc_server'},
                        port => $cfg->{'irc_port'},