use strict;
use warnings;
use File::Spec::Functions;
use File::Path 'mkpath';

my $libdir = catdir(qw(lib SOOT Examples));
my $exdir = 'examples';
mkpath($libdir);

my @example_dirs = do {
  opendir my $dh, $exdir or die $!;
  grep {!/\/\./ and /\// and -d $_} map {catdir($exdir, $_)} readdir($dh)
};

my $template = join '', <DATA>;

foreach my $exdir (@example_dirs) {
  my $exdirname = $exdir;
  $exdirname =~ s{^.*/([^/]+)$}{$1};
  my $pod = $template;
  $pod =~ s/\$DIRNAME/$exdirname/g;
  my @examples;
  opendir my $dh, $exdir or die $!;
  my @examples_files;
  while (defined(my $file = readdir($dh))) {
    my $fullpath = catfile($exdir, $file);
    next unless $fullpath =~ /\.pl$/i and -f $fullpath;
    push @examples_files, $fullpath;
  }
  push @examples, make_example($_) for sort @examples_files;
  $pod =~ s/\$EXAMPLES/join '', @examples/ge;

  open my $oh, '>', catfile($libdir, $exdirname.".pod") or die $!;
  print $oh $pod;
  close $oh;
}

sub make_example {
  my $file = shift;
  my $text = do {local $/; open my $fh, '<', $file or die $!; <$fh>};

  my $filename = $file;
  $filename =~ s{^.*/([^/]+)$}{$1};
  $text =~ s/^/  /mg;
  my $pod = <<HERE;

=head2 $filename

$text

HERE
}

__DATA__

=head1 NAME

SOOT::Examples::$DIRNAME - SOOT Examples for $DIRNAME

=head1 DESCRIPTION

This is a listing of all SOOT examples for $DIRNAME.

=head1 EXAMPLES

$EXAMPLES

=head1 SEE ALSO

L<SOOT>

=head1 AUTHOR

Steffen Mueller, E<lt>smueller@cpan.orgE<gt>

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2010 by Steffen Mueller

SOOT, the Perl-ROOT wrapper, is free software; you can redistribute it and/or modify
it under the same terms as ROOT itself, that is, the GNU Lesser General Public License.
A copy of the full license text is available from the distribution as the F<LICENSE> file.

=cut

