summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfukachan <fukachan>2003-01-07 11:43:27 +0000
committerfukachan <fukachan>2003-01-07 11:43:27 +0000
commit87e7ebc2b11c97362234f6f74ee0d54fc2a583d4 (patch)
tree5d7949df763ea83f0c53b4b4c3fd0950439d6caa
parentf1344e99ed160479c17876d7a007ce403040f00b (diff)
downloadfml8-87e7ebc2b11c97362234f6f74ee0d54fc2a583d4.tar.gz
fml8-87e7ebc2b11c97362234f6f74ee0d54fc2a583d4.tar.bz2
fml8-87e7ebc2b11c97362234f6f74ee0d54fc2a583d4.zip
fmlsuper prototype
-rw-r--r--fml/lib/FML/Process/Super.pm226
1 files changed, 226 insertions, 0 deletions
diff --git a/fml/lib/FML/Process/Super.pm b/fml/lib/FML/Process/Super.pm
new file mode 100644
index 00000000..b2da7d8f
--- /dev/null
+++ b/fml/lib/FML/Process/Super.pm
@@ -0,0 +1,226 @@
+#-*- perl -*-
+#
+# Copyright (C) 2003 Ken'ichi Fukamachi
+# All rights reserved.
+#
+# $FML$
+#
+
+package FML::Process::Super;
+
+use strict;
+use Carp;
+use vars qw($debug @ISA @EXPORT @EXPORT_OK);
+use FML::Log qw(Log LogWarn LogError);
+use FML::Config;
+
+use FML::Process::Kernel;
+@ISA = qw(FML::Process::Kernel);
+
+my $debug = 0;
+
+
+=head1 NAME
+
+FML::Process::Super -- small maintenance jobs on the queue spool
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+This class drives provides utility funtions for the ML queue.
+
+=head1 METHODS
+
+=head2 C<new($args)>
+
+create a C<FML::Process::Kernel> object and return it.
+
+=head2 C<prepare($args)>
+
+ajdust ml_* variables, load config files and fix @INC.
+
+=head2 C<verify_request($args)>
+
+show help.
+
+=cut
+
+
+# Descriptions: standard constructor
+# Arguments: OBJ($self) HASH_REF($args)
+# Side Effects: inherit FML::Process::Kernel
+# Return Value: OBJ
+sub new
+{
+ my ($self, $args) = @_;
+ my $type = ref($self) || $self;
+ my $curproc = new FML::Process::Kernel $args;
+ return bless $curproc, $type;
+}
+
+
+# Descriptions: fix ml_*, load config and fix @INC.
+# Arguments: OBJ($self) HASH_REF($args)
+# Side Effects: fix @INC
+# Return Value: none
+sub prepare
+{
+ my ($curproc, $args) = @_;
+ my $config = $curproc->{ config };
+
+ my $eval = $config->get_hook( 'fmlsuper_prepare_start_hook' );
+ if ($eval) { eval qq{ $eval; }; LogWarn($@) if $@; }
+
+ $curproc->resolve_ml_specific_variables( $args );
+ $curproc->load_config_files( $args->{ cf_list } );
+ $curproc->fix_perl_include_path();
+
+ $eval = $config->get_hook( 'fmlsuper_prepare_end_hook' );
+ if ($eval) { eval qq{ $eval; }; LogWarn($@) if $@; }
+}
+
+
+# Descriptions: dummy to avoid to take data from STDIN
+# Arguments: OBJ($self) HASH_REF($args)
+# Side Effects: none
+# Return Value: none
+sub verify_request
+{
+ my ($curproc, $args) = @_;
+ my $argv = $curproc->command_line_argv();
+ my $config = $curproc->{ config };
+
+ my $eval = $config->get_hook( 'fmlsuper_verify_request_start_hook' );
+ if ($eval) { eval qq{ $eval; }; LogWarn($@) if $@; }
+
+ if (length(@$argv) == 0 || (not $argv->[0])) {
+ $curproc->help();
+ exit(0);
+ }
+
+ $eval = $config->get_hook( 'fmlsuper_verify_request_end_hook' );
+ if ($eval) { eval qq{ $eval; }; LogWarn($@) if $@; }
+}
+
+
+=head2 C<run($args)>
+
+small jobs on the queue maintenance.
+
+=cut
+
+#
+# XXX-TODO: clean up run() more.
+#
+
+
+# Descriptions: convert text format article to HTML by Mail::Message::ToHTML
+# Arguments: OBJ($curproc) HASH_REF($args)
+# Side Effects: load modules, create HTML files and directories
+# Return Value: none
+sub run
+{
+ my ($curproc, $args) = @_;
+ my $config = $curproc->{ config };
+ my $options = $curproc->command_line_options();
+
+ my $eval = $config->get_hook( 'fmlsuper_run_start_hook' );
+ if ($eval) { eval qq{ $eval; }; LogWarn($@) if $@; }
+
+ # if -p specified, run _purge();
+ # if not, run _check();
+ $curproc->_queue($args);
+
+ $eval = $config->get_hook( 'fmlsuper_run_end_hook' );
+ if ($eval) { eval qq{ $eval; }; LogWarn($@) if $@; }
+}
+
+
+# Descriptions: show help
+# Arguments: none
+# Side Effects: none
+# Return Value: none
+sub help
+{
+ use File::Basename;
+ my $name = basename($0);
+
+print <<"_EOF_";
+
+Usage: $name [-p] ML
+
+options:
+
+-p purge stale files.
+
+ML ml_name. Example: elena, rudo\@nuinui.net
+
+_EOF_
+}
+
+
+# Descriptions: dummy to avoid to take data from STDIN
+# Arguments: OBJ($self) HASH_REF($args)
+# Side Effects: none
+# Return Value: none
+sub finish
+{
+ my ($curproc, $args) = @_;
+ my $config = $curproc->{ config };
+
+ my $eval = $config->get_hook( 'fmlsuper_finish_start_hook' );
+ if ($eval) { eval qq{ $eval; }; LogWarn($@) if $@; }
+
+ $eval = $config->get_hook( 'fmlsuper_finish_end_hook' );
+ if ($eval) { eval qq{ $eval; }; LogWarn($@) if $@; }
+}
+
+
+# Descriptions: dummy to avoid to take data from STDIN
+# Arguments: OBJ($self) HASH_REF($args)
+# Side Effects: none
+# Return Value: none
+sub DESTROY {}
+
+
+sub _queue
+{
+ my ($curproc, $args) = @_;
+ my $config = $curproc->config();
+ my $queue_dir = $config->{ mail_queue_dir };
+
+ use Mail::Delivery::Queue;
+ my $queue = new Mail::Delivery::Queue { directory => $queue_dir };
+ my $ra = $queue->list();
+
+ for my $qid (@$ra) {
+ print $qid, "\n";
+ }
+}
+
+
+=head1 CODING STYLE
+
+See C<http://www.fml.org/software/FNF/> on fml coding style guide.
+
+=head1 AUTHOR
+
+Ken'ichi Fukamachi
+
+=head1 COPYRIGHT
+
+Copyright (C) 2003 Ken'ichi Fukamachi
+
+All rights reserved. This program is free software; you can
+redistribute it and/or modify it under the same terms as Perl itself.
+
+=head1 HISTORY
+
+FML::Process::Super first appeared in fml8 mailing list driver package.
+See C<http://www.fml.org/> for more details.
+
+=cut
+
+
+1;