OSDN Git Service

1ca9e95a58e03194a8257566a66e342fa96a6474
[mubot4fb/mubot4fb.git] / mubot4fb.pl
1 #!/usr/bin/perl
2 #
3 # Copyright (c) 2012 ISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
4 # This program is covered by the GNU General Public License 2
5 #
6 use strict;
7 use utf8;
8
9 use Config::Any;
10 use Hash::Merge::Simple;
11 use Data::Recursive::Encode;
12
13 use FindBin;
14 use lib ("$FindBin::Bin/lib", '/usr/share/keitairc/lib');
15
16 use Mubot4FB;
17
18 use Data::Dumper;
19
20 my $config_name = $ARGV[0] || 'not_found';
21
22 my $cfg = {};
23 my $config_path = ['/etc/mubot4fb/'.$config_name,
24                    $ENV{HOME} . '/.mubot4fb/'. $config_name,
25                    $ENV{PWD} . '/mubot4fb_' . $config_name];
26
27 my $c = Config::Any->load_stems({stems => $config_path,  use_ext => 1, flatten_to_hash => 1});
28 foreach my $i (keys %$c) {
29         $cfg = Hash::Merge::Simple->merge($cfg, $c->{$i});
30 }
31 die 'missing config file' unless (keys %$cfg);
32
33 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)'
34   if (!defined $cfg->{'irc_server'}
35       || !defined $cfg->{'fb_app_id'}
36       || !defined $cfg->{'fb_app_secret'}
37       || !defined $cfg->{'fb_access_code'}
38       || !defined $cfg->{'fb_page_id'}
39       || !defined $cfg->{'fb_postback_url'}
40       || !defined $cfg->{'db_user'}
41       || !defined $cfg->{'db_pass'}
42     );
43 $cfg = Data::Recursive::Encode->decode('utf8', $cfg);
44
45 $cfg->{irc_port} ||= 6667;
46 $cfg->{irc_channels} ||= ['#mubot4fb'];
47 $cfg->{irc_nick} ||= 'mubot4fb';
48 $cfg->{irc_name}||= $cfg->{irc_nick};
49 $cfg->{irc_charset} ||= 'utf8';
50 $cfg->{database} ||= 'mubot4fb';
51 $cfg->{debug} ||= 0;
52
53 my $bot = Mubot4FB->new(server => $cfg->{'irc_server'},
54                         port => $cfg->{'irc_port'},
55                         channels => $cfg->{'irc_channels'},
56                         nick => $cfg->{'irc_nick'},
57                         username => $cfg->{'irc_name'},
58                         name => $cfg->{'irc_name'},
59                         charset => $cfg->{'irc_charset'},
60                         cfg => $cfg)->run();
61
62 1;