Re: Prereq scanners for Dist::Zilla and Pod::Weaver plugin bundles
Dan Book writes: > These are some interesting ideas but perhaps a bit too narrow in scope > for this particular list (other than perhaps the naming of > modules). There isn't a functional dzil mailing list anymore but you > might consider joining #distzilla on irc.perl.org to have such in > depth discussions: https://kiwiirc.com/client/irc.perl.org/distzilla Alright, I'll check that out later. Thanks. Asher -- : The following (relative to AutoSplit 1.03) attempts to please everyone : and perhaps pleases no one: I think that's way cool. -- Larry Wall in <199709292015.naa09...@wall.org> GPG fingerprint: 38F3 975C D173 4037 B397 8095 D4C9 C4FC 5460 8E68 signature.asc Description: PGP signature
Re: Prereq scanners for Dist::Zilla and Pod::Weaver plugin bundles
On Thu, Apr 8, 2021 at 2:59 PM Asher Gordon wrote: > Hello, > > As I've already mentioned, I've Dist::Zilla and Pod::Weaver plugin > bundles for use in my projects > (Dist::Zilla::PluginBundle::Author::ASDAGO and > Pod::Weaver::PluginBundle::Author::ASDAGO). However, I noticed that > prerequisites on other plugins and plugin bundles are not detected by > AutoPrereqs. As far as I could tell, there didn't exist any scanners for > Perl::PrereqScanner that could scan Dist::Zilla and Pod::Weaver plugin > bundles, so I wrote my own. > > So far, they work pretty well (the Dist::Zilla one currently only works > on Dist::Zilla::Role::PluginBundle::Easy plugin bundles). My working > names for them are Perl::PrereqScanner::Scanner::PluginBundle::DistZilla > and Perl::PrereqScanner::Scanner::PluginBundle::PodWeaver. Are these > names satisfactory? I was also thinking something like > Perl::PrereqScanner::Scanner::DistZillaPluginBundle in case they would > get confused as plugin bundles for Perl::PrereqScanner itself. What do > you think? Also, I think that they're different enough to release as > separate packages. > > Another thing is, the Pod::Weaver plugin bundle scanner works by looking > for any anonymous array references of three elements where the last one > is an anonymous hash reference. Since plugins could be stored in > variables before they are returned from mvp_bundle_config() (indeed, > these seems to usually be the case), this is really the only reasonably > reliable method of detecting prerequisites short of actually running the > file. > > Unfortunately, this also means there are sometimes false positives. For > example, in RJBS's Dist::Zilla plugin bundle, my Pod::Weaver plugin > bundle scanner detects two false positives: > Pod::Weaver::Section::CPAN-Outdated and > Pod::Weaver::Section::RJBS-Outdated. This is because they are specified > to add_plugins() as an anonymous array reference of three elements with > the last one being an anonymous hash reference, which, you will recall, > is exactly what my Pod::Weaver plugin bundle scanner looks for. > > Of course, the Pod::Weaver plugin bundle scanner should not be run on a > Dist::Zilla plugin bundle, but since RJBS's Dist::Zilla and Pod::Weaver > plugin bundles are packaged together (which is what I was planning to do > with my plugin bundles, though I may rethink that), I don't think it's > possible (correct me if I'm wrong) to use different scanners for each > file with the AutoPrereqs plugin. One solution would be to write another > plugin similar to AutoPrereqs, but that allows per-file scanners to be > specified. Another (perhaps better) solution would be to package the > Dist::Zilla and Pod::Weaver plugin bundles separately, and use a > different scanner for each package. Let me know if you have any opinions > on how that should be done. > > Sorry for the long message (especially the first sentence of the fifth > (previous) paragraph), and thanks for any help. These are some interesting ideas but perhaps a bit too narrow in scope for this particular list (other than perhaps the naming of modules). There isn't a functional dzil mailing list anymore but you might consider joining #distzilla on irc.perl.org to have such in depth discussions: https://kiwiirc.com/client/irc.perl.org/distzilla -Dan
Prereq scanners for Dist::Zilla and Pod::Weaver plugin bundles
Hello, As I've already mentioned, I've Dist::Zilla and Pod::Weaver plugin bundles for use in my projects (Dist::Zilla::PluginBundle::Author::ASDAGO and Pod::Weaver::PluginBundle::Author::ASDAGO). However, I noticed that prerequisites on other plugins and plugin bundles are not detected by AutoPrereqs. As far as I could tell, there didn't exist any scanners for Perl::PrereqScanner that could scan Dist::Zilla and Pod::Weaver plugin bundles, so I wrote my own. So far, they work pretty well (the Dist::Zilla one currently only works on Dist::Zilla::Role::PluginBundle::Easy plugin bundles). My working names for them are Perl::PrereqScanner::Scanner::PluginBundle::DistZilla and Perl::PrereqScanner::Scanner::PluginBundle::PodWeaver. Are these names satisfactory? I was also thinking something like Perl::PrereqScanner::Scanner::DistZillaPluginBundle in case they would get confused as plugin bundles for Perl::PrereqScanner itself. What do you think? Also, I think that they're different enough to release as separate packages. Another thing is, the Pod::Weaver plugin bundle scanner works by looking for any anonymous array references of three elements where the last one is an anonymous hash reference. Since plugins could be stored in variables before they are returned from mvp_bundle_config() (indeed, these seems to usually be the case), this is really the only reasonably reliable method of detecting prerequisites short of actually running the file. Unfortunately, this also means there are sometimes false positives. For example, in RJBS's Dist::Zilla plugin bundle, my Pod::Weaver plugin bundle scanner detects two false positives: Pod::Weaver::Section::CPAN-Outdated and Pod::Weaver::Section::RJBS-Outdated. This is because they are specified to add_plugins() as an anonymous array reference of three elements with the last one being an anonymous hash reference, which, you will recall, is exactly what my Pod::Weaver plugin bundle scanner looks for. Of course, the Pod::Weaver plugin bundle scanner should not be run on a Dist::Zilla plugin bundle, but since RJBS's Dist::Zilla and Pod::Weaver plugin bundles are packaged together (which is what I was planning to do with my plugin bundles, though I may rethink that), I don't think it's possible (correct me if I'm wrong) to use different scanners for each file with the AutoPrereqs plugin. One solution would be to write another plugin similar to AutoPrereqs, but that allows per-file scanners to be specified. Another (perhaps better) solution would be to package the Dist::Zilla and Pod::Weaver plugin bundles separately, and use a different scanner for each package. Let me know if you have any opinions on how that should be done. Sorry for the long message (especially the first sentence of the fifth (previous) paragraph), and thanks for any help. Asher -- If for every rule there is an exception, then we have established that there is an exception to every rule. If we accept "For every rule there is an exception" as a rule, then we must concede that there may not be an exception after all, since the rule states that there is always the possibility of exception, and if we follow it to its logical end we must agree that there can be an exception to the rule that for every rule there is an exception. -- Bill Boquist I prefer to send and receive mail encrypted. Please send me your public key, and if you do not have my public key, please let me know. Thanks. GPG fingerprint: 38F3 975C D173 4037 B397 8095 D4C9 C4FC 5460 8E68 signature.asc Description: PGP signature