]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blob - filters/postal-accept.pl
testing configuration for postal-accept
[git.ikiwiki.info.git] / filters / postal-accept.pl
1 #!/usr/bin/perl
3 # Take message on stdin, write to appropiate comment folder, 
4 # update wiki
6 use Email::LocalDelivery;
7 use Email::Filter;
9 use Convert::YText qw(decode_ytext encode_ytext);
11 # we need at least version 2.54 of IkiWiki for the new config api
12 BEGIN { require IkiWiki; die unless ($IkiWiki::version >= 2.54) }
14 use IkiWiki;
15 use IkiWiki::Setup;
16 use Getopt::Long;
17 use Carp;
19 my $folder_ext=".mbox";
21 my $config_file=undef;
23 GetOptions('config=s'=>\$config_file);
25 die "configuration file is mandatory" unless ($config_file);
27 %config=IkiWiki::defaultconfig();
29 IkiWiki::Setup::load($config_file);
31 $message=Email::Filter->new();
33 my $to=$message->to;
34 if ($to =~ m/$prefix($Convert::YText::valid_rex)/){
35     my $page=decode_ytext($1);
36     
37     die("page ".$page." does not exist") if !($pagesources{$page});
38     
39     my $comments_folder=$page."/comments".$folder_ext;
41     # write the message to the comment
43     my ($delivered) = Email::LocalDeliver($config{srcdir}."/".$comments_folder);
44     
45     die ("delivery failed") if (!defined ($delivered));
46     
47     # update vcs, copied from Ikiwiki::Plugins::attachment
48     
49     if ($config{rcs}) {
50         IkiWiki::rcs_add($delivered);
51         IkiWiki::disable_commit_hook();
52         IkiWiki::rcs_commit($delivered, gettext("postal delivery"),
53                             IkiWiki::rcs_prepedit($delivered));
54         IkiWiki::enable_commit_hook();
55         IkiWiki::rcs_update();
56     }
58     
59     # refresh wiki
60     IkiWiki::refresh();
61     IkiWiki::saveindex();
62