Elive
view release on metacpan or search on metacpan
script/elive_query view on Meta::CPAN
sub _fetch_row_href {
my $props = shift;
my $derivable = shift;
my $row = shift;
my %vals = (map {
my $meth = $derivable->{$_} || $_;
my $val = $row->$meth;
$_ => $val
} @$props);
return \%vals;
}
########################################################################
sub _getopt {
my %options;
Getopt::Long::GetOptions(\%options,
'username|user=s',
'password|pass=s',
'command|c=s@',
'dump=s',
'debug=i',
'adapter=s',
'help|?',
'version|v',
'help|?'
) or pod2usage(2);
pod2usage(0) if ($options{help});
if ($options{version}) {
print "Elive v${Elive::VERSION} (c) 2009 - 2012\n";
exit 0;
}
if ($options{dump} && $options{dump} !~ /^(yaml)$/i) {
pod2usage("unknown dump format: $options{dump}");
}
my $url = shift(@ARGV);
return ($url, %options);
}
########################################################################
sub _connect {
my ($adapter_class, $url, %options) = @_;
my $username = $options{username};
my $password = $options{password};
my $uri_obj = URI->new($url);
if (my $userinfo = $uri_obj->userinfo) {
#
# credentials supplied in URI
my ($uri_user, $uri_pass) = split(':', $userinfo, 2);
$username ||= URI::Escape::uri_unescape($uri_user);
$password ||= URI::Escape::uri_unescape($uri_pass)
if $uri_pass;
$url =~ s{\Q${userinfo}\E\@}{};
}
$username ||= Elive::Util::prompt('Username: ');
$password ||= Elive::Util::prompt('Password: ', password => 1);
print STDERR "connecting to $url...";
my $connection = eval {
$adapter_class->connect($url, $username, $password);
};
if ($@) {
print STDERR "\nconnection failed: $@";
return;
}
print STDERR "ok\n";
return $connection;
}
########################################################################
1;
( run in 0.581 second using v1.01-cache-2.11-cpan-39bf76dae61 )