—#!/usr/bin/env perl
#-------------------------------
# flickr_make_test_values.pl
#_______________________________
use
warnings;
use
strict;
use
Term::ReadLine;
use
Pod::Usage;
use
Getopt::Long;
my
$values
= {};
my
$cli_args
= {};
my
%defaults
= (
'search_email'
=>
''
,
'search_username'
=>
''
,
);
my
%prompts
= (
'search_email'
=>
'An email to search for'
,
'search_username'
=>
'A user id to search for'
,
);
my
$invalues
= \
%defaults
;
GetOptions (
$cli_args
,
'values_in=s'
,
'values_out=s'
,
'help'
,
'man'
,
'usage'
);
#-------------------------------------------------------------
# Respond to help-type arguments or if missing required params
#_____________________________________________________________
if
(
$cli_args
->{
'help'
} or
$cli_args
->{
'usage'
} or
$cli_args
->{
'man'
} or !
$cli_args
->{
'values_out'
}) {
pod2usage({
-verbose
=> 2 });
}
#------------------------------------------------------------------
# If an incoming values is specified and exists, read it if we can.
# if any of the keys are defined (that is, a value we will use)
# overwrite the default.
#__________________________________________________________________
if
(
defined
(
$cli_args
->{
'values_in'
}) and -e
$cli_args
->{
'values_in'
}) {
my
$key
;
my
$value
;
open
my
$VALUES_IN
,
'<'
,
$cli_args
->{
'values_in'
} or
die
"\nCannot open $cli_args->{'values_in'} for read: $!\n"
;
while
(<
$VALUES_IN
>) {
s/\s+//g;
(
$key
,
$value
) =
split
(/=/);
if
(
defined
(
$invalues
->{
$key
})) {
$invalues
->{
$key
}=
$value
; }
}
close
(
$VALUES_IN
) or
die
"\nClose error $!\n"
;
}
#---------------------------------
# Create a term incase we need it.
#_________________________________
my
$term
= Term::ReadLine->new(
'Flickr Value Collector'
);
$term
->ornaments(0);
my
$which_rl
=
$term
->ReadLine;
if
(
$which_rl
eq
"Term::ReadLine::Perl"
or
$which_rl
eq
"Term::ReadLine::Perl5"
) {
warn
"\n\nTerm::ReadLine::Perl and Term::ReadLine::Perl5 may display prompts"
.
"\nincorrectly. If this is the case for you, try adding \"PERL_RL=Stub\""
.
"\nto the environment variables passed in with make test\n\n"
;
}
#--------------------------------------------------------------------
# build or confirm values
#____________________________________________________________________
foreach
my
$key
(
sort
keys
%defaults
) {
my
$value
=
$term
->
readline
(
$prompts
{
$key
} .
" [ "
.
$invalues
->{
$key
}.
"]: "
);
if
(!
$value
) {
$values
->{
$key
} =
$invalues
->{
$key
}; }
else
{
$values
->{
$key
} =
$value
; }
}
#-------------------------------
# Display values and store same.
#_______________________________
open
my
$VALUES_OUT
,
'>'
,
$cli_args
->{
'values_out'
} or
die
"\nCannot open $cli_args->{'values_out'} for write: $!\n"
;
foreach
my
$key
(
sort
keys
%defaults
) {
$key
,
" = "
,
$values
->{
$key
},
"\n"
;
$VALUES_OUT
$key
,
" = "
,
$values
->{
$key
},
"\n"
;
}
close
(
$VALUES_OUT
) or
die
"\nClose error $!\n"
;
exit
;
__END__
=pod
=head1 NAME
flickr_make_test_values.pl - script to assist with testing the Flickr::API
=head1 SYNOPSIS
C<flickr_make_test_values.pl --values_out=file_to_build [--values_in=existing_file]>
=head1 OPTIONS
=head2 Required:
B< >
=over 5
=item B<--values_out> points to where to create the stored Flickr values file
=back
=head2 Optional:
B< >
=over 5
=item B<--values_in> points to the optional input values file to use as a base
for the I<--values_out> file you are creating.
B< >
=item B<--help> as expected
=item B<--usage>
=item B<--man>
=back
=head1 DESCRIPTION
This script is a lightweight method to assemble key/value pairs
for testing the Flickr::API. It is used to build a file
for the B<make test> portion of installation. It does not
I<use Flickr::API;> and sticks to modules from perl core so
that it can be used prior to-- and perhaps in conjunction with--
installation and testing of the Flickr::API module.
When you B<make test>, add the environment variable MAKETEST_VALUES,
pointing to the key/values file you specified. The command should
look something like:
make test MAKETEST_VALUES=/home/myusername/test-flickr-values.txt
or
make test MAKETEST_VALUES=/home/myusername/test-flickr-values.txt \
MAKETEST_OAUTH_CFG=/home/myusername/test-flickr-oauth.st
=head1 LICENSE AND COPYRIGHT
Copyright (c) 2015, Louis B. Moore C<< <lbmoore@cpan.org> >>.
This program is released under the Artistic License 2.0 by The Perl Foundation.
=head1 SEE ALSO
The README in the Flickr::API distribution.