App-YTDL
view release on metacpan or search on metacpan
lib/App/YTDL/Options.pm view on Meta::CPAN
if ( $new_dir ne $opt->{$key} ) {
if ( ! eval {
my $fh = File::Temp->new( TEMPLATE => 'XXXXXXXXXXXXXXX', UNLINK => 1, DIR => $new_dir ); ##
1 }
) {
print "$@";
# Choose
choose(
[ 'Press Enter:' ],
{ prompt => '' }
);
}
else {
$opt->{$key} = $new_dir;
$set->{change}++;
}
}
}
sub _opt_choose_a_file {
my( $set, $opt, $key, $info, $name ) = @_;
# Choose_a_file
my $file = choose_a_file( { cs_label => $name, info => $info } );
return if ! defined $file;
$opt->{$key} = $file;
$set->{change}++;
}
sub _local_readline {
my ( $set, $opt, $key, $prompt, $list ) = @_;
# Fill_form
my $trs = Term::Form->new();
my $new_list = $trs->fill_form(
$list,
{ prompt => $prompt, auto_up => 2, confirm => 'CONFIRM', back => 'BACK ' }
);
if ( $new_list ) {
for my $i ( 0 .. $#$new_list ) {
$opt->{$key} = $new_list->[$i][1];
}
$set->{change}++;
}
}
sub _opt_number_range {
my ( $set, $opt, $key, $name, $info, $digits ) = @_;
# Choose_a_number
my $choice = choose_a_number( $digits, { cs_label => $name, info => $info, small_first => 1 } );
return if ! defined $choice;
$opt->{$key} = $choice eq '--' ? undef : $choice;
$set->{change}++;
return;
}
sub _opt_choose_from_list_idx {
my ( $set, $opt, $key, $prompt, $list ) = @_;
my $backup = $opt->{$key};
my $confirm = ' CONFIRM';
my @pre = ( undef, $confirm );
my $choices = [ @pre, map { "- $_" } @$list ];
while ( 1 ) {
my $local_prompt = $prompt . ': [' . ( $list->[$opt->{$key}] // '--' ) . ']';
# Choose
my $idx = choose(
$choices,
{ prompt => $local_prompt, layout => 3, undef => ' BACK', index => 1 }
);
if ( ! defined $idx || $idx == 0 ) {
$opt->{$key} = $backup;
return;
}
elsif ( $choices->[$idx] eq $confirm ) {
$set->{change}++;
return;
}
else {
$opt->{$key} = $idx - @pre;
}
}
}
sub _opt_choose_from_list_value {
my ( $set, $opt, $key, $prompt, $list ) = @_;
my $backup = $opt->{$key};
my $confirm = ' CONFIRM';
my @pre = ( undef, $confirm );
while ( 1 ) {
my $local_prompt = $prompt . ': [' . ( $opt->{$key} // '--' ) . ']';
# Choose
my $choice = choose(
[ @pre, map { "- $_" } @$list ],
{ prompt => $local_prompt, layout => 3, undef => ' BACK', index => 0 }
);
if ( ! defined $choice ) {
$opt->{$key} = $backup;
return;
}
elsif ( $choice eq $confirm ) {
$set->{change}++;
return;
}
else {
$choice =~ s/^-\s//;
$opt->{$key} = $choice;
}
}
}
sub _write_config_file {
my ( $opt, $file ) = @_;
my $tmp = {};
for my $key ( sort keys %{ get_defaults() } ) {
$tmp->{$key} = $opt->{$key};
}
write_json( $file, $tmp );
}
sub read_config_file {
my ( $opt, $file ) = @_;
my $tmp = read_json( $file ) // {};
my @keys = keys %$tmp;
for my $key ( @keys ) {
$opt->{$key} = $tmp->{$key} if defined $tmp->{$key};
}
################################################### "... or better" removed in 0.413 - Keep this for a while.
if ( $opt->{quality} =~ /^\s*\d+\sor\sbetter\z/ ) {
$opt->{quality} = 'manually';
}
###################################################
}
1;
__END__
( run in 1.215 second using v1.01-cache-2.11-cpan-99c4e6809bf )