The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Git::Deploy::Question;
use strict;
use warnings FATAL => "all";
use Exporter 'import';
use Term::ReadLine;
use Git::Deploy::Say;

our @EXPORT = qw(
    _question
);

sub _question {
    my %opts = (
        question => "Continue anyway? [Y/n]",
        answer_positive => qr/^Y(?:es)?/i,
        answer_negative => qr/^N(?:o)?/i,

        @_,  # this goes last, for hobo default overriding
    );

    my $term = Term::ReadLine->new($0);
    while (defined (my $line = $term->readline("$opts{question}> "))) {
        for ($line) {
            if ( /$opts{answer_positive}/ ) { return 1 }
            elsif ( /$opts{answer_negative}/ )  { return 0 }
            else {
                _warn "I can't understand you, try again\n";
            }
        }
    }
}

1;