X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/380b40be6a008c627083c81a1eb684a78c64aa93..943feeec776bb75c685cbdee9466f8db3cdf5da7:/sdk/perl/lib/Arvados.pm diff --git a/sdk/perl/lib/Arvados.pm b/sdk/perl/lib/Arvados.pm index 39a49dea88..31258f5172 100644 --- a/sdk/perl/lib/Arvados.pm +++ b/sdk/perl/lib/Arvados.pm @@ -5,7 +5,7 @@ Arvados -- client library for Arvados services =head1 SYNOPSIS use Arvados; - $arv = Arvados->new()->build(apiHost => 'arvados.local'); + $arv = Arvados->new(apiHost => 'arvados.local'); my $instances = $arv->{'pipeline_instances'}->{'list'}->execute(); print "UUID is ", $instances->{'items'}->[0]->{'uuid'}, "\n"; @@ -33,7 +33,8 @@ Set up a client and retrieve the schema from the server. =item apiHost -Hostname of API discovery service. Default: C +Hostname of API discovery service. Default: C +environment variable, or C =item apiProtocolScheme @@ -67,6 +68,8 @@ use Arvados::ResourceProxy; use Arvados::ResourceProxyList; use Arvados::Request; +$Arvados::VERSION = 0.1; + sub new { my $class = shift; @@ -79,9 +82,18 @@ sub new sub build { my $self = shift; - $self->{'authToken'} ||= $ENV{'ARVADOS_API_TOKEN'}; - $self->{'apiHost'} ||= $ENV{'ARVADOS_API_HOST'}; - $self->{'apiProtocolScheme'} ||= $ENV{'ARVADOS_API_PROTOCOL_SCHEME'}; + + $config = load_config_file("$ENV{HOME}/.config/arvados/settings.conf"); + + $self->{'authToken'} ||= + $ENV{ARVADOS_API_TOKEN} || $config->{ARVADOS_API_TOKEN}; + + $self->{'apiHost'} ||= + $ENV{ARVADOS_API_HOST} || $config->{ARVADOS_API_HOST}; + + $self->{'apiProtocolScheme'} ||= + $ENV{ARVADOS_API_PROTOCOL_SCHEME} || + $config->{ARVADOS_API_PROTOCOL_SCHEME}; $self->{'ua'} = new Arvados::Request; @@ -121,4 +133,21 @@ sub new_request Arvados::Request->new(); } +sub load_config_file ($) +{ + my $config_file = shift; + my %config; + + if (open (CONF, $config_file)) { + while () { + next if /^\s*#/ || /^\s*$/; # skip comments and blank lines + chomp; + my ($key, $val) = split /\s*=\s*/, $_, 2; + $config{$key} = $val; + } + } + close CONF; + return \%config; +} + 1;