miyagawa / plagger

Pluggable RSS/Atom aggregator

This URL has Read+Write access

commit  efe89f0917649795db703cdb07709000c724a134
tree    fcbdb68c1f1e026ef1fe5242272f4d3131dfafd7
parent  08d3815469b9dc73468ea6e577da22ee1212914b
plagger / Makefile.PL
100644 122 lines (107 sloc) 3.15 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
use strict;
use inc::Module::Install;
 
{
    no warnings 'redefine';
    *recommends_hack = $Module::Install::VERSION > 0.70 ?
        sub { recommends(@_); $_[0] } :
        \&recommends;
}
 
name('Plagger');
all_from('lib/Plagger.pm');
 
requires('Class::Accessor::Fast');
requires('File::Find::Rule');
requires('UNIVERSAL::require' => 0.10);
requires('Template', 2.13);
requires('Template::Provider::Encoding' => 0.04);
requires('YAML' => 0.39);
requires('Text::Tags');
requires('DateTime' => 0.35);
requires('DateTime::TimeZone' => 0.56);
requires('DateTime::Locale' => 0.32);
requires('DateTime::Format::Mail');
requires('DateTime::Format::W3CDTF');
requires('DateTime::Format::Strptime');
requires('Digest::MD5');
requires('LWP');
requires('HTML::Parser' => 3.51);
requires('URI::Fetch' => 0.071);
requires('Cache::Cache' => 1.04);
requires('Module::Pluggable::Fast');
requires('HTML::ResolveLink');
requires('Date::Parse');
requires('MIME::Types', 1.16);
requires('Net::DNS');
 
requires('XML::Feed', 0.41);
requires('XML::LibXML');
requires('XML::Atom', 0.23);
requires('XML::RSS::LibXML', 0.3002);
requires('Encode', 2.10);
requires('Term::Encoding');
requires('File::HomeDir');
 
build_requires('YAML');
build_requires('YAML::Loader');
include_deps('YAML');
 
build_requires('Test::More', 0.42);
build_requires('Test::Base', 0.52);
 
features(
    'Better Encoding detection' => [
        -default => 0,
        recommends_hack('Encode::Detect', 1.0),
    ],
    'POD Testing' => [
        -default => 0,
        recommends_hack('Test::Pod'),
        recommends_hack('Test::Pod::Coverage'),
    ],
    'Cookie sharing with Firefox' => [
        -default => 0,
        recommends_hack('HTTP::Cookies::Mozilla'),
    ],
    'Liberal XML parsing' => [
        -default => 1,
        recommends_hack('XML::Liberal', 0.14),
        recommends_hack('XML::RSS::Liberal'),
    ],
    'XPath support in Subscription and Feed Upgrader' => [
        -default => 1,
        recommends_hack('HTML::TreeBuilder::XPath'),
    ],
    'Better html to text formatter' => [
        -default => 1,
        recommends_hack('HTML::TreeBuilder'),
        recommends_hack('HTML::FormatText'),
    ],
    'Parse Japanese datetime format' => [
        -default => 0,
        recommends_hack('DateTime::Format::Japanese'),
    ],
);
 
require YAML;
require DirHandle;
require File::Spec;
 
my $dh = DirHandle->new("deps");
my @plugins;
while (my $f = $dh->read) {
    next unless $f =~ /\.yaml$/;
    my $meta = eval { YAML::LoadFile( File::Spec->catfile("deps", $f) ) };
    if ($@) {
        warn "Loading deps/$f failed: $@";
        next;
    }
    push @plugins, $meta if !$meta->{platform} || $meta->{platform} eq $^O;
}
 
for my $meta (sort { $b->{default} <=> $a->{default} || $a->{name} cmp $b->{name} } @plugins) {
    features(
        $meta->{name}, [
            -default => $meta->{default},
            map recommends_hack($_ => $meta->{depends}->{$_}), keys %{$meta->{depends} || {}},
        ],
    );
}
 
tests 't/*.t t/*/*.t t/*/*/*.t';
 
use_test_base;
 
auto_include;
auto_install;
 
install_script('plagger');
install_script('bin/plagger-ircbot');
WriteAll;