AWS-CLIWrapper

 view release on metacpan or  search on metacpan

cpanfile  view on Meta::CPAN

# -*- mode: cperl -*-

requires 'IPC::Cmd';
requires 'JSON', '2';
requires 'String::ShellQuote';
requires 'perl', '5.005';
requires 'version';
requires 'perl', '5.008001';

on configure => sub {
    requires 'ExtUtils::MakeMaker', '6.30';
};

on test => sub {
    requires 'Test::More';
    requires 'File::Temp';
};

on develop => sub {
    requires 'Test::Dependencies';
    requires 'Test::Perl::Critic';
    requires 'Test::LocalFunctions';
    requires 'Test::UsedModules';
    requires 'File::Temp';
};

lib/AWS/CLIWrapper.pm  view on Meta::CPAN

our $Error = { Message => '', Code => '' };

our $true  = do { bless \(my $dummy = 1), "AWS::CLIWrapper::Boolean" };
our $false = do { bless \(my $dummy = 0), "AWS::CLIWrapper::Boolean" };

my $AWSCLI_VERSION = undef;
my $DEFAULT_CATCH_ERROR_RETRIES = 3;
my $DEFAULT_CATCH_ERROR_MIN_DELAY = 3;
my $DEFAULT_CATCH_ERROR_MAX_DELAY = 10;

sub new {
    my($class, %param) = @_;

    my $region = $param{region};

    my @opt = ();
    for my $k (qw(region profile endpoint_url)) {
        if (my $v = delete $param{$k}) {
            push @opt, param2opt($k, $v);
        }
    }

t/bin/mock-aws  view on Meta::CPAN


version() if $ARGV[0] eq "--version";

handle_die_with_error() if $ENV{AWS_CLIWRAPPER_TEST_DIE_WITH_ERROR};

my $cmd = shift @ARGV;
my $subcmd = shift @ARGV;

handle($cmd, $subcmd);

sub handle {
  my ($cmd, $subcmd) = @_;

  $subcmd =~ s/-/_/g;

  my $handler = do {
    no strict 'refs';

    *{"main::${cmd}_$subcmd"}{CODE};
  };

  if ('CODE' eq ref $handler) {
    $handler->();

    exit 0;
  }
  else {
    help();
  }
}

sub handle_die_with_error {
  my $counter_file = $ENV{AWS_CLIWRAPPER_TEST_ERROR_COUNTER_FILE};

  return unless -f $counter_file;

  open my $fh, "<", $counter_file or die "Cannot open $counter_file for read: $!";
  my $counter = <$fh>;
  close $fh;

  # This logic is the opposite of usual retries: we throw an error for the counter
  # number of times and then proceed normally after.
  if ($counter-- > 0) {
    open $fh, ">", $counter_file or die "Cannot open $counter_file for write: $!";
    print $fh $counter;
    close $fh;

    die $ENV{AWS_CLIWRAPPER_TEST_DIE_WITH_ERROR};
  }
}

sub version {
  print "aws-cli/2.42.4242\n";
  exit 0;
}

sub help {
    die <<__END__;
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

aws: error: the following arguments are required: operation

__END__
}

sub ecs_list_clusters {
    print <<__END__;
{
    "clusterArns": [
        "arn:aws:ecs:us-foo-1:123456789:cluster/foo",
        "arn:aws:ecs:us-foo-1:123456789:cluster/bar",
        "arn:aws:ecs:us-foo-1:123456789:cluster/baz"
    ]
}
__END__
}

xt/20_s3-sync.t  view on Meta::CPAN

    my $tmpdir = tempdir('s3-sync-dfdq"XXXXXX',
                          CLEANUP => $cleanup,
                          TMPDIR  => 1,
                      );
    test_sync("both source and dest dirs contains double quote",
              's3://aws-cliwrapper-test/dir"double' => $tmpdir);
}

done_testing;

sub test_sync {
    my($desc, $src, $dst) = @_;

    my $res = $aws->s3('sync', [$src => $dst],
                       {
                           'delete' => $AWS::CLIWrapper::true,
                       });
    ok($res, "$desc: $src => $dst");

    my @downloaded = bsd_glob("$dst/*");
    my $nd = scalar @downloaded;

xt/30_compat.t  view on Meta::CPAN

use strict;
use Test::More;

use AWS::CLIWrapper;

my $aws = AWS::CLIWrapper->new;
my $res;

# >= 0.14.0 : Key, Values, Name
# <  0.14.0 : key, values, name
subtest 'Uppercase key, values, name' => sub {
    $res = $aws->ec2('describe-instances', {
        filters => [
            { name => 'tag:purpose', values => ["AC-TEST-2*"] },
            { name => 'instance-state-name', values => ['running'] },
        ],
    });
    ok($res, 'name/values');
    is(scalar(@{$res->{Reservations}[0]{Instances}}), 1, 'name/values count');

    $res = $aws->ec2('describe-instances', {

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.642 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )