Re: [Module::Build] ask() and you will receive
Status: Beta
Brought to you by:
kwilliams
From: Randy W. S. <ml...@th...> - 2006-04-24 05:35:27
|
Randy W. Sims wrote: > Ken Williams wrote: > >> On Apr 14, 2006, at 4:44 AM, Randy W. Sims wrote: >> >>> + >>> +=item default [required] >>> + >>> +This is the default value that will be used if the user presses >>> +E<lt>enterE<gt> or if running an unattended build. >>> + >>> +The value assigned to C<default> may be different from the options >>> +listed in the C<options> argument. >> >> >> I think I'm about to blaspheme, but I think sometimes we shouldn't >> require there to be a default. >> >> /me ducks >> >> Sometimes there's simply no way to build & test & install a module >> without user intervention. For example, Inline::Java asks you to tell >> it where the J2SDK installation is, and there's no default. >> >> If we changed the error message to something appropriate, I think we >> could handle this case gracefully, both here and in y_n(). Something >> like: >> >> if ( $ENV{PERL_MM_USE_DEFAULT} && !$def ) { >> die <<EOF; >> ERROR: PERL_MM_USE_DEFAULT is in effect, but there is no default >> value. Aborting. >> EOF >> } >> >> It might be nice to note this fact in the META.yml file, using a flag >> like 'interactive_install' or something, so that automated testers >> don't even try to download & build the distro. >> >> For a distro that really requires interaction like this, the author >> could work around our proposed required 'default' by setting 'default' >> to undef and then die()ing with their own error message if prompt() or >> y_n() or ask() returned undef, but why not provide them with the >> appropriate sugar? > > > Here's a rough rough patch to implement something along those lines, I > think. Rough day, my brains not working well, and somehow this simple > little input routine has become one of the largest routines in M::B, so > I'd appreciate feedback. All names, behaviors, and every last byte > subject to change. Anyone have a chance to look over that patch? Does it do the right thing? Is it the behavior that was desired, and is it sensisble? Randy. |