App-Ordo

 view release on metacpan or  search on metacpan

lib/App/Ordo/Command/Cal/Delete.pm  view on Meta::CPAN

package App::Ordo::Command::Cal::Delete;
use Moo;
use feature qw(say);
extends 'App::Ordo::Command::Base';

use Term::ANSIColor qw(colored);

sub name    { "cal delete" }
sub summary { "Delete a calendar and all its cron expressions" }
sub usage   { "<calendar-name>" }
sub aliases { ['cal rm'] }

sub option_spec {
    return {
        'force' => 'Force delete even if attached to clusters',
    };
}

sub execute {
    my ($self, $opt, $cal_name) = @_;

    unless ($cal_name) {
        say colored(["bold red"], "Usage: cal delete <calendar-name> [--force]");
        say "Use --force if the calendar is attached to clusters";
        return;
    }

    my $payload = { name => $cal_name };
    $payload->{force} = 1 if $opt->{force};

    my $res = $self->api->call('delete_cal', $payload);

    if ($res->{success}) {
        say colored(["bold green"], "Calendar '$cal_name' deleted");
        say "All associated cron expressions removed (cascade delete)";
    } else {
        say colored(["bold red"], "Failed to delete calendar: " . ($res->{message} || 'unknown error'));
    }
}

1;



( run in 0.462 second using v1.01-cache-2.11-cpan-9581c071862 )