Rex-Inline

 view release on metacpan or  search on metacpan

lib/Rex/Inline/Base.pm  view on Meta::CPAN

  extends 'Rex::Inline::Base';

  sub func {
    my $self = shift;

    return sub {
      my $output = run "uptime";
      say $output;
      say $self->input;
    }
  }

  __PACKAGE__->meta->make_immutable;

=cut
package Rex::Inline::Base;

use strict;
use warnings;

use utf8;

our $VERSION = '0.0.8'; # VERSION

use Moose;
use MooseX::AttributeShortcuts;

use JSON;

use namespace::autoclean;

=head1 ATTRIBUTES

=over 7

=item id

set/get task id (String)

default is random number

=cut
has id => (is => 'ro', builder => 1);

=item server

server address used when ssh connection

This param is required.

=cut
has server => (is => 'ro', required => 1);
=item user

username used when ssh connection

=item password

password used when ssh connection

=item private_key

private_key filename used when ssh connection

=item public_key

public_key filename used when ssh connection

=item sudo [TRUE|FALSE]

use sudo when execute commands

default is C<undef>

=cut
has user => (is => 'ro', default => '');
has [qw(password private_key public_key sudo)] => (is => 'ro');
=item input

input param for tasklist module in any format you need

=cut
has input => (is => 'rw');
=back

=cut
has name => (is => 'ro', lazy => 1, builder => 1);
has task_auth => (is => 'ro', lazy => 1, builder => 1);

sub _build_id { time ^ $$ ^ unpack "%L*", `ps axww | gzip` }
sub _build_name { join('_',grep {$_} (split(/::/, shift->meta->{package}))[qw(-2 -1)]) }
sub _build_task_auth {
  my %auth;
  $auth{user} = $_[0]->{user};
  $auth{password} = $_[0]->{password} if $_[0]->{password};
  $auth{public_key} = $_[0]->{public_key} if $_[0]->{public_key};
  $auth{private_key} = $_[0]->{private_key} if $_[0]->{private_key};
  $auth{sudo} = $_[0]->{sudo} if $_[0]->{sudo};
  return {%auth};
}

__PACKAGE__->meta->make_immutable;



( run in 0.807 second using v1.01-cache-2.11-cpan-39bf76dae61 )