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.
|