The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use strict;
=head1 NAME
App::CLI::Command::Commands - Print a list of commands for your app
=head1 SYNOPSIS
package MyApp;
use base qw(App::CLI App::CLI::Command);
# Make your app get a list of commands
use constant alias => (
commands => '+App::CLI::Command::Commands',
);
1;
=head1 DESCRIPTION
Print a list of commands registered for your application;
=cut
sub run {
my ($self) = shift;
my ($longest) = sort { length($b) cmp length($a) } $self->app->commands;
$longest = length $longest;
foreach ( $self->app->commands ) {
my $cmd = $self->app->get_cmd($_);
my @components = split /::/, ref $cmd;
my $name = lc pop @components;
printf " %${longest}s\n", $name;
}
}
1;