requires 'Fcntl';
requires 'IPC::Run3';
# requires 'Mail::Verp'; # not yet
-requires 'Moose';
-requires 'MooseX::Storage';
-requires 'JSON::Any';
+requires 'Moo';
requires 'Path::Class';
requires 'Tie::File';
requires 'autodie';
resources 'license' => 'http://dev.perl.org/licenses/';
resources 'repository' => 'git://git.shadowcat.co.uk/p5sagit/Promulger.git';
+auto_install();
+
WriteAll();
package Promulger::List;
-use Moose;
-use MooseX::Storage;
+use Moo;
use autodie ':all';
use Carp;
use Path::Class;
use Fcntl ':flock';
use Tie::File;
+use File::Slurp qw/read_file, write_file/;
+use Data::Dumper;
+$Data::Dumper::Purity = 1;
use Promulger::Config;
has listname => (
is => 'ro',
- isa => 'Str',
+ isa => sub { $_[0] =~ /^\w+$/ or die "listname must be a string" },
required => 1,
);
has active => (
is => 'rw',
- isa => 'Bool',
+ isa => sub { ($_[0] == 0 || $_[0] == 1) or die "active must be 0 or 1" },
required => 1,
- default => 1,
+ default => sub { 1 },
);
has subscribers => (
is => 'rw',
- isa => 'HashRef',
+ isa => sub { ref $_[0] eq 'HASH' or die "subscribers must be a hashref" },
required => 1,
default => sub { {} },
);
-with Storage (
- format => 'JSON',
- io => 'File',
-);
-
sub resolve {
my ($self, $proto) = @_;
$proto =~ s/-request$//;
return $path;
}
+sub store {
+ my ($self, $path) = @_;
+ my $dumped = 'do { my '. Dumper($self) . '; $VAR1; }';
+ write_file($path, $dumped);
+}
+
+sub load {
+ my ($class, $path) = @_;
+ return do $path;
+}
+
'http://mitpress.mit.edu/sicp/';