package My::App;
use Moose;
use Foo;
sub run {
my ($self, $cmd) = @_;
if (Foo->meta->has_command($cmd)) {
Foo->new->$cmd;
}
elsif ($cmd eq 'cmdlist') {
print join ', ', map { $_->name } Foo->meta->get_all_commands;
}
}