After a long time I finally got my own Perl::Critic policies released and uploaded to CPAN.
I have created a Task implementation bundle listing my two own policies for now (I expect to add other policies used later on). This gives you the opportunity to download the policies by themselves if they look like something you would like to use or you can even bundle them yourself with other policies you make use of.
This packaging is an experiment and is not the recommended way and so it might change in the future, so let me know if you have any feedback on the packaging, both if you are using Perl::Critic::logicLAB or the actual policies directly.
The policies which have also just been released and currently listed in Perl::Critic::logicLAB are:
Both are simple policies, but hopefully useful.
All should be available on CPAN by now.
Task::BeLike::JONASBN 1.01 has been released to CPAN it is a simple bug fix release.
Based on CPAN testers results I could see that after making the POD generation a part of the build, I need to move the requirement for Tie::IxHash to be asserted prior to the build. So the configuration phase should identify the requirement for Tie::IxHash.
The distribution is using Tie::IxHash to create the POD documentation as a part of the build process. This step is implemented as a step of it’s own, but it has been integrated with the build action, simply so the step is not forgotten.
My original idea was to have the list in Build.PL and the let the CONTENTS section, be auto-generated. So Bundle::JONASBN and Task::BeLike::JONASBN contain it’s own custom build system, based on a sub class of Module::Build. The build system (Module::Build::Bundle) read the requirements from Build.PL and inserts this in the CONTENTS section, alphabetized.
I attempted to let the build system create beautiful POD, instead of the standardized used in bundles. It took me several attempts to figure out that it was the reason my particular bundle was not working as expected.
Bundles require some special magic on the client side to parse the CONTENTS section, in this case primarily the CPAN client and the requirements for developing a bundle are quite special and IMHO error prone. It took me 4 releases to get it right, I was simply not grasping the magic part.
Adam Kennedy at some point recognized this weakness in the tool chain and introduced Task, a new much simpler approach. Task is based simply on writing up the requirements in the build file, whether you use Module::Build, ExtUtils::MakeMaker or Module::Install.
Tasks are easier to maintain and validate.
I was in that lucky position that I had put all my requirements in my Build.PL since release 0.01. So when I choose to migrate to a Task based approach it was just a matter of renaming packages etc.
Much of all my trouble was due to the fact that I had thought that the approach would be the approach used in Task. But AFAIK it is a combination of package name: Bundle:: and the CONTENTS section.
I have now migrated to the Task approach and reinstated the beautification of the POD and everything works well and looks nice, well apart from the little glitch with the order of assertions, but luckily Module::Build handles the META file generation and the fix was fairly simple.
The idea behind Bundles on CPAN is a very good. The implementation however relies somewhat on magic in the client. Adam Kennedy’s Task concept, solves this.
After reading the documentation and doing some considering I decided to deprecate Bundle::JONASBN and then redo the same distribution as Task::BeLike::JONASBN.
The project is in the same repository and Bundle::JONASBN was refactored to support this and the project site was renamed also. Many of the pointers are still using the internally used project key BJONASBN.
The Task concept is fairly easy and being a supporter of KISS, I am thinking about using this concept for other things currently on the drawing board.
Kudos should go to Adam Kennedy for the Task contribution to CPAN, it is simply beautiful in all it’s simplicity.
Task::BeLike::JONASBN has been released to CPAN as version 1.00 making it a major release on the same code base.
Task::BeLike::JONASBN and Bundle::JONASBN will live in parallel for an amount of time, but Bundle::JONASBN will be removed from CPAN eventually and all future development will be centered around Task::BeLike::JONASBN.
The CPAN module Business::DK::CPR has followed it’s cousin Business::DK::CVR and has been updated with an OOP implementation (see: the earlier announcement).
Apart from the class addition, the release only addresses minor issues, like a failing test case reported by CPAN-testers. POD has been updated and the Build file has been adjusted.
The Changes file does not contain all the changes, it is lacking a serious update so please refer to the project change log for details.
Source code is available from: http://logicLAB.jira.com/svn/BDKCPR/
Project homepage: http://logiclab.jira.com/browse/BDKCPR/
Feedback and patches more than welcome,