Carl - yet another Carton
Development time:
> carl install
...
Complete! Modules were installed to local, and wrote index.txt
> git add index.txt
> git commit -m 'add index.txt'
Deployment time, only cpanm!
> cpanm --mirror-index $PWD/index.txt -nq -Llocal --installdeps .
Carl is yet another Carton.
- (1) use index.txt (02packages.details.txt) to save versions
- (2) so, when deployment, no need to install Carl itself, just cpanm
- (3) support git/dist dependencies
How does index.txt looks like? See this.
Let me explain (3). Suppose you have the following cpanfile:
requires 'My::Module', git => 'git://ghe.example.com/you/My-Module.git', ref => '0.01';
requires 'Anthor::Module', dist => 'http://darkpan.example.com/Anothor-Module-0.01.tar.gz';
Carl supports it!
> carl install
...
Complete! Modules were installed to local, and wrote index.txt
# I recommend you to git-add local/cache
> git add index.txt local/cache
> git commit -m 'add index.txt and local/cache for consistent installation'
# deployment time!
> cpanm --mirror-index $PWD/index.txt --mirror file://$PWD/local/cache -nq -Llocal --installdeps .
Much code or architecture are stolen from Carton and Carmel.
https://github.com/miyagawa/cpan-module-bootstrap
https://speakerdeck.com/miyagawa/whats-new-in-carton-and-cpanm-at-yapc-asia-2013
Perl::PrereqDistributionGatherer
Copyright (C) 2016 Shoichi Kaji skaji@cpan.org
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Shoichi Kaji skaji@cpan.org