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

use Moose;
use 5.010;
use Dist::Zilla::File::InMemory;

with 'Dist::Zilla::Role::FileMunger';
with 'Dist::Zilla::Role::FileGatherer';

sub gather_files
{
}

sub munge_files
{
  my($self) = @_;
  
  my @mods = grep { $_->name =~ m{^lib/Yars/Command/.*\.pm$} } @{ $self->zilla->files };
  
  foreach my $mod (@mods)
  {
    $mod->name =~ m{^lib/Yars/Command/(.*)\.pm$};
    my $basename = $1;
    
    my $content = $mod->content;
    $content =~ s{^(=pod.*)}{}ms;
    my $pod = $1;

    $content .= join "\n",
      "=pod",
      "",
      "=head1 NAME",
      "",
      "Yars::Command::$basename - code for $basename",
      "",
      "=head1 DESCRIPTION",
      "",
      "This module contains the machinery for the command line program L<$basename>",
      "",
      "=head1 SEE ALSO",
      "",
      "L<yars_disk_scan>",
      "",
      "=cut";
    
    $mod->content($content);
    
    my $script = Dist::Zilla::File::InMemory->new(
      name    => "bin/$basename",
      mode    => 0755,
      content => join("\n",
        "#!/usr/bin/perl",
        "",
        "use strict;",
        "use warnings;",
        "use 5.010;",
        "use Yars::Command::$basename;",
        "",
        "Yars::Command::$basename->main(\@ARGV);",
        "",
        "__END__",
        "",
        $pod,
      ),
    );
    
    $self->log($mod->name . ' => ' . $script->name);
    $self->add_file($script);
  }
}

1;