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 )