#!/usr/bin/env perl
#
# $Id: Build.PL 4 2006-12-26 01:39:04Z hironori.yoshida $
#
package main;
use strict;
use warnings;
our $VERSION = eval { require version; version::qv( (qw$Revision: 4 $)[1] ) };

use Carp;
use English qw(-no_match_vars);
use Module::Build::JSAN;

my $build = Module::Build::JSAN->new(
    module_name    => 'JSONScriptRequest',
    license        => 'mit',
    dist_author    => "Hironori Yoshida <yoshida\@cpan.org>",
    sign           => 1,
    keywords       => [qw(json script request ajax XMLHttpRequest)],
    build_requires => { 'Test.Simple' => 0.20, },
    requires       => {},
);
$build->create_build_script;

open my $fh, '>>', 'Build' or croak $OS_ERROR;
print {$fh} <<'EOF';

BEGIN {
    $ENV{PERL5LIB} ||= q{};    # avoid warnings at Module/Build/Base.pm:4000
    if ( my $_strip_pod = Module::Build::JSAN->can('_strip_pod') ) {
        undef *Module::Build::JSAN::_strip_pod;    ## no critic
        *Module::Build::JSAN::_strip_pod = sub {   ## no critic
            my ( $self, $dist_dir ) = @_;

            my $files = $self->find_js_files;
            foreach my $file ( keys %{$files} ) {
                $files->{$file} = ( stat "$dist_dir/$file" )[2];
                chmod oct(644), "$dist_dir/$file";
            }
            $_strip_pod->(@_);
            foreach my $file ( keys %{$files} ) {
                chmod $files->{$file}, "$dist_dir/$file";
            }
        };
    }
}

{

    package Module::Build::JSAN;

    use Carp;
    use English qw(-no_match_vars);
    use File::Path;

    sub ACTION_build {   ## no critic (NamingConventions::ProhibitMixedCaseSubs)
        eval {
            require JavaScript::Squish;
            my $self = shift;

            my $infile = 'lib/' . $self->module_name . '.js';
            open my $fh, '<', $infile or croak $OS_ERROR;
            my $js = do { local $INPUT_RECORD_SEPARATOR = undef; <$fh> };
            close $fh;
            my $compacted = JavaScript::Squish->squish($js) or croak;
            ( my $copyright = $js ) =~ s{.*\s*(Copyright[^\n]*\n).*}{// $1}msx;
            $compacted = $copyright . $compacted;

            my $outfile = $self->blib . q{/} . $infile;
            mkpath( [ $self->blib . '/lib' ], 1, oct 755 );
            print {*STDERR} "js_compactor $infile => $outfile\n";
            open $fh, '>', $outfile or croak $OS_ERROR;
            print {$fh} $compacted;
            close $fh;
        };
        if ($EVAL_ERROR) {
            print {*STDOUT} $EVAL_ERROR;
        }
        return;
    }
}
EOF
close $fh;

