The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Pinwheel::Commands::Routes;

use strict;
use warnings;

use Data::Dumper;
use Pinwheel;
use Pinwheel::Controller;

my $routes = $Pinwheel::Controller::map->{routes};

# Pass 1: get the maximum field widths
my $max_name_width = 0;
my $max_route_width = 0;
foreach my $route (@$routes) {
    $max_name_width = length($route->{name}) if $max_name_width < length($route->{name});
    $max_route_width = length($route->{route}) if $max_route_width < length($route->{route});
}

# Pass 2: print out the routing table
foreach my $route (@$routes) {
    printf " %*s %-*s",
       $max_name_width, $route->{name},
       $max_route_width, $route->{route};
    
    my @pairs = ();
    while (my ($key, $value) = each %{$route->{target}})
    {
        push(@pairs,"$key=>'$value'");
    }
    print " {".join(', ',@pairs)."}\n";
}

1;