Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Spin::Command::spin ;
- use Moose;
- use Spin::Task;
- use Spin::Group;
- use namespace::autoclean;
- use Log::Log4perl::Shortcuts qw(:all);
- extends qw(Spin::Command MooseX::App::Cmd::Command);
- has '_curr_desc' => ( is => 'rw', isa => 'Str', default => '');
- has '_groups' => ( traits => [ 'Hash' ], is => 'ro', isa => 'HashRef[Spin::Group]',
- default => sub { {} },
- handles => { set_group => 'set', get_group => 'get',
- group_exists => 'exists' },
- );
- has '_tasks' => ( traits => [ 'Array' ], is => 'ro', isa => 'ArrayRef[Spin::Task]',
- default => sub { [] },
- handles => { all_tasks => 'elements', add_task => 'push',
- pop_task => 'pop',
- },
- );
- sub abstract { return "does some stuff" }
- sub description { return 'execute server tasks'; }
- sub validate {
- my $s = shift;
- $s->_load_spinfile();
- }
- sub execute {
- my $s = shift;
- $s->_init_command($s->_spinfile);
- }
- # TODO: Fix
- sub group {
- my $group_name = shift;
- my @servers = @_;
- my $group = Spin::Group->new(name => $group_name, servers => \@servers);
- Spin::Command::spin->set_group($group_name => $group);
- }
- sub user { # not implemented yet }
- sub run { # not implemented yet }
- local our $Object;
- {
- my $done = 0;
- sub _init_command {
- return if $done;
- my $s = shift;
- $Object = $s;
- my $file = shift;
- do $file;
- $done++;
- }
- }
- sub task {
- my $name = shift;
- my $desc = $Object->_curr_desc;
- $Object->_curr_desc('');
- my $next_arg = pop;
- my $func;
- if (ref($next_arg) eq 'CODE') {
- $func = $next_arg;
- } else {
- $func = pop;
- }
- my $group = 'ALL';
- my @server = ();
- if (scalar(@_) >= 1) {
- if($_[0] eq 'group') {
- $group = $_[1];
- if ($Object->group_exists($group)) {
- @server = @{$Object->get_group($group)->servers};
- } else {
- #logf ("Group $group not found!\n");
- }
- } else {
- @server = @_;
- }
- }
- my $task;
- $task = Spin::Task->new(name => $name, server => [ @server ], desc => $desc);
- $Object->add_task($task);
- }
- sub desc {
- my $desc = shift;
- $Object->_curr_desc($desc);
- }
- __PACKAGE__->meta->make_immutable;
- 1; # Magic true value required at end of module
- # ABSTRACT: [One line description of module's purpose here]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement