use 5.008;
use strict;
use warnings;

package Data::Conveyor::App::Exported::Launcher;
BEGIN {
  $Data::Conveyor::App::Exported::Launcher::VERSION = '1.103130';
}
# ABSTRACT: Stage-based conveyor-belt-like ticket handling system

use Getopt::Long;
use IO::Handle;
use FindBin '$Bin';
use Exporter qw(import);
our @EXPORT = qw(start);

sub start {
    STDOUT->autoflush;
    STDERR->autoflush;
    my %opt;
    GetOptions(
        \%opt, qw/
          lockpath=s
          parallel=s
          /
    );
    usage() unless defined $opt{parallel} && $opt{lockpath};
    for (qw/PROJROOT CF_CONF PERL5OPT/) {
        die "$_ not set" unless $ENV{$_};
    }
    my @executable = ("$Bin/reg_dispatch.pl", "--lockpath=$opt{lockpath}");
    require Data::Conveyor::Lock::Dispatcher;
    my $lockclass = Data::Conveyor::Lock::Dispatcher->new(
        lockpath => $opt{lockpath},
        numlocks => $opt{parallel}
    );
    $lockclass->administrate_locks;

    # we lose the lock here, of course. in the worst case
    # though, we just bloat and finally end up without the lock.
    if ($lockclass->get_lock) {
        exec $^X, @executable or die "exec @executable failed.";
    }
}

sub usage () {
    (my $exe = $0) =~ s|.*/||;
    printf STDERR <<'__EOF', $exe;

Usage:
 %s --lockpath=<directory> --parallel=<n>

__EOF
    exit;
}
1;


__END__
=pod

=head1 NAME

Data::Conveyor::App::Exported::Launcher - Stage-based conveyor-belt-like ticket handling system

=head1 VERSION

version 1.103130

=head1 METHODS

=head2 start

FIXME

=head2 usage

FIXME

=head1 INSTALLATION

See perlmodinstall for information and options on installing Perl modules.

=head1 BUGS AND LIMITATIONS

No bugs have been reported.

Please report any bugs or feature requests through the web interface at
L<http://rt.cpan.org/Public/Dist/Display.html?Name=Data-Conveyor>.

=head1 AVAILABILITY

The latest version of this module is available from the Comprehensive Perl
Archive Network (CPAN). Visit L<http://www.perl.com/CPAN/> to find a CPAN
site near you, or see L<http://search.cpan.org/dist/Data-Conveyor/>.

The development version lives at L<http://github.com/hanekomu/Data-Conveyor>
and may be cloned from L<git://github.com/hanekomu/Data-Conveyor>.
Instead of sending patches, please fork this project using the standard
git and github infrastructure.

=head1 AUTHORS

=over 4

=item *

Marcel Gruenauer <marcel@cpan.org>

=item *

Florian Helmberger <fh@univie.ac.at>

=item *

Achim Adam <ac@univie.ac.at>

=item *

Mark Hofstetter <mh@univie.ac.at>

=item *

Heinz Ekker <ek@univie.ac.at>

=back

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2004 by Marcel Gruenauer.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut

