The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use Module::Build;
use strict; use warnings;

my $class = Module::Build->subclass(
  class => 'POEx::ZMQ3::Builder',
  code  => q[

    sub ACTION_versionify {
      my $self = shift;

      my $base = $self->base_dir;
      my $vers = $self->dist_version;

      ++$|;

      print "Versionifying ($vers) ";
      require File::Find;
      File::Find->import('find');

      my $x;
      find(sub {
          if ($_ =~ /\.pm(.in)?$/) {
            my $path = $File::Find::name;
            open my $fh, '<', $path
              or die "open: $path $!";
            my @thisf = readline($fh);
            close $fh;

            my $package_l = $thisf[0] || return;
            my $pkg;
            unless (($pkg) = $package_l =~ /^package\s+(\S+)$/) {
              warn "\nSkipping, no package: $path\n";
              return
            }

            ++$x;
            print ". ";

            my $v_line = "our \$VERSION = '$vers';\n";

            if ($thisf[1] =~ /VERSION/) {
              $thisf[1] = $v_line
            }

            open $fh, '>', $path
              or die "open: $path $!";
            print $fh @thisf;
            close $fh;
          }
        },
        $base."/lib"
      );
      print "\n$x modules\n";
    }

  ],
);

my $build = $class->new(
  module_name => 'POEx::ZMQ3',
  license     => 'perl',

  dist_abstract => 'POE-enabled ZeroMQ components',
  dist_author   => 'Jon Portnoy <avenj@cobaltirc.org>',

  recursive_test_files => 1,

  create_readme      => 1,
  create_makefile_pl => 'small',

  configure_requires => {
    'Module::Build' => '0.40',
  },

  build_requires => {
    'Test::More'      => 0,
    'Test::TCP'       => 0,
  },

  requires => {
    'perl'     => '5.10.1',
    'Carp'     => 0,
    'Storable' => 0,

    'strictures'                => 1,
    'namespace::clean'          => '0.23',

    'Moo'                       => '1.000007',
    'MooX::Role::POE::Emitter'  => '0.11',

    'POE'                       => '1.3',

    'ZMQ::LibZMQ3'              => '1.06',
    'ZMQ::Constants'            => '1.02',
  },

  recommends => {
    'Class::XSAccessor'         => 0,
  },

  meta_merge => {
    resources => {
      repository => 'http://github.com/avenj/poex-zmq3.git',
    },
  },
);

$build->create_build_script;

__END__
Cake.