AWS-CLI-Config
view release on metacpan or search on metacpan
lib/AWS/CLI/Config.pm view on Meta::CPAN
open my $fh, '<', $file;
$contents = <$fh>;
close( $fh );
}
foreach my $line (split /\n/, $contents) {
chomp $line;
$profile = $1 if $line =~ /^\[(?:profile )?([\w]+)\]/;
my ($indent, $key, $value) = $line =~ /^(\s*)([\w]+)\s*=\s*(.*)/;
next if !defined $key or $key eq q{};
if (length $indent) {
$nested->{$key} = $value;
}
else {
# Reset nested hash
$nested = {} if keys %{$nested};
$hash->{$profile}{$key} = ($key and $value) ? $value : $nested;
}
}
return $hash;
}
PROFILE: {
package AWS::CLI::Config::Profile;
use 5.008001;
use strict;
use warnings;
sub new {
my $class = shift;
my $data = @_ ? @_ > 1 ? { @_ } : shift : {};
return bless $data, $class;
}
sub AUTOLOAD {
our $AUTOLOAD;
my $self = shift;
return if $AUTOLOAD =~ /DESTROY/;
my $method = $AUTOLOAD;
$method =~ s/.*:://;
no strict 'refs';
*{$AUTOLOAD} = sub {
return shift->{$method}
};
return $self->{$method};
}
}
1;
__END__
=encoding UTF-8
=head1 NAME
AWS::CLI::Config - Interface to access AWS CLI configs and credentials
=head1 SYNOPSIS
use AWS::CLI::Config;
my $aws_access_key_id = AWS::CLI::Config::access_key_id;
my $aws_secret_access_key = AWS::CLI::Config::secret_access_key($profile);
my $aws_session_token = AWS::CLI::Config::session_token($profile);
my $region = AWS::CLI::Config::region($profile);
=head1 DESCRIPTION
B<AWS::CLI::Config> provides an interface to access AWS CLI configuration and
credentials. It fetches its values from the appropriate environment variables,
or a credential or config file in the order described in
L<AWS CLI Documents|http://docs.aws.amazon.com/cli/>.
=head1 SUBROUTINES
=head2 access_key_id (Str)
Fetches $ENV{AWS_ACCESS_KEY_ID} or I<aws_access_key_id> defined in the
credential or config file. You can optionally specify the profile as the
first argument.
=head2 secret_access_key (Str)
Fetches $ENV{AWS_SECRET_ACCESS_KEY} or I<aws_secret_access_key> defined in
the credential or config file. You can optionally specify the profile as
the first argument.
=head2 session_token (Str)
Fetches $ENV{AWS_SESSION_TOKEN} or I<aws_session_token> defined in the
credential or config file. You can optionally specify the profile as the first
argument.
=head2 region (Str)
Fetches $ENV{AWS_DEFAULT_REGION} or I<region> defined in the credential or
config file. You can optionally specify the profile as the first argument.
=head2 output (Str)
Fetches I<output> defined in the credential or config file. You can optionally
specify the profile as the first argument.
=head2 credentials (Str)
Fetches information from the credential file if it exists. You can optionally
specify the profile as the first argument.
=head2 config (Str)
Fetches information from the config file if it exists. If you need to override
the default path of this file, use the C<$ENV{AWS_CONFIG_FILE}> variable.
You can optionally specify the profile as the first argument.
( run in 2.670 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )