#
# Module::Build build script for Thingy.
#
# (C) 2005-2007 Julian Mehnle <julian@mehnle.net>
# $Id$
#
##############################################################################

use Module::Build 0.26;

my $class = Module::Build->subclass( code => <<'EOF' );

    sub process_extra_files {
        my ($self, $dir) = @_;
        $dir ||= $element;
        File::Find::find(
            {
                wanted      => sub {
                    $File::Find::prune = 1 if -d and /\.svn$/;  # Exclude .svn/ dirs.
                    return if not -f;                           # Handle files only.
                    
                    my $destination = $self->copy_if_modified(
                        from    => $File::Find::name,
                        to      => File::Spec->catfile($self->blib, $File::Find::name)
                    );
                    return if not defined($destination);        # Already up to date?
                    
                    chmod((stat($File::Find::name))[2], $destination)
                        or warn("Cannot set permissions on $destination: $!");
                },
                no_chdir    => 1
            },
            $dir
        );
    }
    
    sub process_etc_files     { shift->process_extra_files('etc')     }
    sub process_cgi_bin_files { shift->process_extra_files('cgi-bin') }
    sub process_sbin_files    { shift->process_extra_files('sbin')    }
    sub process_skel_files    { shift->process_extra_files('skel')    }
    sub process_www_files     { shift->process_extra_files('www')     }

EOF

my $build = $class->new(
    module_name     => 'Thingy',
    dist_author     => [
        'Julian Mehnle <julian@mehnle.net>',
        'Michael Buschbeck <michael@buschbeck.net>'
    ],
    license         => 'gpl',
    dist_version_from
                    => 'cgi-bin/thingy',
    requires        => {
        # Core requirements:
        perl            => '5.008',
        Getopt::Long    => 0,
        IO::Handle      => 0,
        IO::File        => 0,
        IO::Dir         => 0,
        File::Basename  => 0,
        File::Spec      => 0,
        File::Path      => 0,
        File::Find      => 0,
        File::Copy      => 0,
        Digest::MD5     => 0,
        version         => 0,
        Error           => 0,
        CGI             => 0,
        Locale::Maketext
                        => 0,
        Wookee          => '1.100'
    },
    recommends      => {
    },
    build_requires  => {
        # Build requirements:
        Module::Build   => '0.26',
        Test::Simple    => 0
    },
    install_path    => {
        'etc'           => '/etc/thingy',
        'cgi-bin'       => '/usr/lib/cgi-bin',
        'sbin'          => '/usr/sbin',
        'lib'           => '/usr/share/thingy/lib',
        'skel'          => '/usr/share/thingy/skel',
        'www'           => '/usr/share/thingy/www',
        'etc-global'    => '/etc'
    },
    misc_files      => {
        'misc/wookee-upgrade-hook'  => 'etc-global/wookee/upgrade-hooks/thingy',
        'misc/bash-completion'      => 'etc-global/bash_completion.d/thingy'
    },
    create_makefile_pl
                    => 'passthrough',
    sign            => 1
);

$build->add_build_element($_)
    foreach qw(etc cgi_bin sbin skel www misc);

$build->create_build_script();

