The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package # hide from PAUSE
App::DBBrowser::Credentials;

use warnings;
use strict;
use 5.008003;
no warnings 'utf8';

our $VERSION = '2.014';

use Term::Form qw();


sub new {
    my ( $class, $opt ) = @_;
    bless $opt, $class;
}


sub get_login {
    my ( $sf, $key ) = @_;
    my $keep_secret = $sf->{parameter}{secret}{$key};
    my $saved_value = $sf->{parameter}{arguments}{$key};
    if ( ! $sf->{parameter}{required}{$key} ) {
        return;
    }
    my $prompt = ucfirst( $key ) . ': ';
    my $env_var = 'DBI_' . uc $key;
    if ( $sf->{parameter}{use_env_var}{$env_var} && exists $ENV{$env_var} ) {
        if ( ! $keep_secret ) {
            print $prompt . $ENV{$env_var}, "\n";
        }
        return $ENV{$env_var}; #
    }
    elsif ( defined $saved_value && length $saved_value ) {
        if ( ! $keep_secret ) {
            print $prompt . $saved_value, "\n";
        }
        return $saved_value;
    }
    else {
        my $trs = Term::Form->new();
        # Readline
        my $new = $trs->readline( $prompt, { no_echo => $keep_secret } );
        return $new;
    }
}



1;


__END__