From e90373964cc123fdbd98a27a3b69cd8b0d8ecdef Mon Sep 17 00:00:00 2001 From: David Bremner Date: Sun, 10 Aug 2008 22:59:56 -0300 Subject: [PATCH] sketch for two stage workflow --- .../{postal-filer.pl => postal-deliver.pl} | 2 +- filters/postal-queue.pl | 56 +++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) rename filters/{postal-filer.pl => postal-deliver.pl} (94%) create mode 100644 filters/postal-queue.pl diff --git a/filters/postal-filer.pl b/filters/postal-deliver.pl similarity index 94% rename from filters/postal-filer.pl rename to filters/postal-deliver.pl index 60fdec6ee..eb696c2b3 100644 --- a/filters/postal-filer.pl +++ b/filters/postal-deliver.pl @@ -34,7 +34,7 @@ if ($to =~ m/$prefix($Convert::YText::valid_rex)/){ my @path=split(qr{/},$key); map { $_=encode_ytext($_); s/\./@/g } @path; - my $mailbox=$maildir . "/.".join(".",@path)."/" ; + my $mailbox=$maildir . ".".join(".",@path)."/" ; $mail->accept($mailbox); diff --git a/filters/postal-queue.pl b/filters/postal-queue.pl new file mode 100644 index 000000000..44d3b7700 --- /dev/null +++ b/filters/postal-queue.pl @@ -0,0 +1,56 @@ +#!/usr/bin/perl + +use Email::Folder; +use Convert::YText qw(decode_ytext encode_ytext); + +# we need at least version 2.54 of IkiWiki for the new config api +BEGIN { require IkiWiki; die unless ($IkiWiki::version >= 2.54) } + +use IkiWiki::Setup; +use Getopt::Long; +use Carp; + +my $config_file=undef; + +GetOptions('config=s'=>\$config_file); + +die "configuration file is mandatory" unless ($config_file); + +my %config=IkiWiki::Setup::load($config_file); + +my $queue=$config{queue} || croak("missing queue location"); + +my $folder=Email::Folder->new($path,reader=>'Email::Folder::maildir') + || croak("mailbox could not be opened"); + +for my $messages ($folder->messages){ + + my $to=$message->to; + if ($to =~ m/$prefix($Convert::YText::valid_rex)/){ + my $page=decode_ytext($1); + + # sanity check the page path + + # check if comments folder exists, create if needed + + # write the message to the folder + + $msg_file= $comment_folder->write($message); + + # update vcs + + IkiWIki::rcs_add($msg_file); + + # tag for deletion + + push (@must_die, $message->message-id); + + $folder->delete($message); + + } + + # make regex for message-id + + # called delete_message from Email::Delete +} + -- 2.39.5