--- /dev/null
+#!/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;
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'}
|| !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'},