Dist::Zilla::Plugin::Prereqs::DarkPAN - Depend on things from arbitrary places-not-CPAN
From time to time, people find themselves in want to depending on something that isn't from CPAN, but their team/in-house crew want a painless way to depend on it anyway.
[Prereqs::DarkPAN] DDG = http://adarkpan.example.org/ ; DarkPAN Base URI ; optional DDG.minversion = 0.4.0 ; optional ; But likely to be substantially faster. DDG.uri = /path/to/foo/bar.tar.gz
This would provide to various user commands the knowledge that DDG.tar.gz was wanted to provide the package DDG.
Our hope is one day you can just do
# Doesn't work yet :( $ cpanm $( dzil listdeps ) or # Doesn't work yet :( $ cpanm $( dzil listdeps --missing )
and have it do the right things.
In the interim, you can do
$ cpanm $( dzil listdeps ) \ && cpanm $( dzil listdeps_darkpan )
$ cpanm $( dzil listdeps --missing ) \ && cpanm $( dzil listdeps_darkpan --missing )
and have it work.
The easiest DarkPAN-ish thing that this module supports is naïve HTTP Servers, by simply setting the server and path to the resource.
[Prereqs::DarkPAN] Foo = http://my.server/ Foo.uri = files/foo.tar.gz
You can specify an optional minimum version parameter
minversion as a client-side check to make sure they haven't installed an older version of Foo.
uri will be reported to listdeps_darkpan with minimal modification, only expanding relative paths to absolute ones so tools like
cpanm can use them.
There is a newly formed system for creating "proper" cpans which only contain a handful of modules. For these services you can simply do
[Prereqs::DarkPAN] Foo = http://my.server/
And we'll fire up all sorts of magic to get the
02packages.details.tar.gz file, shred it, and try installing 'Foo' from there.
The 3rd use case is when you have somewhat heavy-weight private CPANs where you don't want to be encumbered by the weight of downloading and parsing
02packages.details.tar.gz. If you have a full cpan clone with a few modules stuffed into it, and you only want those stuffed modules while using normal CPAN ( because the cloned versions from cpan are now old ), its possibly better to use the original notation
[Prereqs::DarkPAN] Foo = http://my.server/ Foo.uri = path/too/foo.tar.gz
As it will only fetch the file specified instead of relying on
Granted, this latter approach will bind again to downloading a specific version of the prerequisite, but this is still here for you if you need it.
Kent Fredric <firstname.lastname@example.org>
This software is copyright (c) 2012 by Kent Fredric <email@example.com>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.