#!/usr/bin/perl

use strict;
use warnings;

use Pod::PseudoPod::Book;

my %deps =
(
    create        => [],
    buildcredits  => [],
    buildchapters => [qw( buildcredits )],
    buildhtml     => [qw( buildchapters buildcredits )],
    buildepub     => [qw( buildcredits buildchapters buildhtml )],
    buildpml      => [qw( buildcredits buildchapters buildpml )],
    buildlatex    => [qw( buildcredits buildchapters )],
    buildpdf      => [qw( buildcredits buildchapters buildlatex )],
);

exit main( @ARGV );

sub main {
    my $app = Pod::PseudoPod::Book->new;

    return usage("Missing command") unless @_;
    return usage("Unknown command (@_)") unless $app->plugin_for( $_[0] );

    my ($cmd, $opt, @args) = $app->get_command(@_);
    my @deps;

    unless ($_[-1] eq '--nodeps')
    {
        @deps = @{ $deps{$_[0]} };
    }

    for my $command (@deps, $cmd)
    {
        $app->execute_command( $app->plugin_for($command), $opt, @args );
    }

    return 0;
}


sub usage
{
    my $txt = shift;

    print "$txt\n" if $txt;
    print "Available commands:\n";
    print "   $_\n" for sort keys %deps;

    return 1;
}
