#!/usr/bin/perl

use strict;

use lib 'd:/app/tools/appuser/lib';
use lib 'd:/app/tools/common/lib';
use lib 'd:/app/tools/data_classes/lib';
use lib 'd:/app/tools/distribution/lib';
use lib 'd:/app/tools/job/lib';
use lib 'd:/app/tools/mediaserve/lib';
use lib 'd:/app/tools/metadata/lib';
use lib 'd:/app/tools/rps/lib';
use lib 'd:/app/tools/sysadmin/lib';

use Getopt::Std;

use lib '/app/tools/common/lib';
use Common::RSApp;

use lib '/app/tools/distribution/lib';
use Distribution::Service;

my %opt;
getopts( 'rc:s:j:f:p:dt', \%opt );

unless ( $opt{c} =~ /^\d+$/ && $opt{s} =~ /^\d+$/ && $opt{j} =~ /^\d+$/ && $opt{f} && $opt{p} ) {
    usage();
    exit(1);
}

my $clientID  = $opt{c};
my $serviceID = $opt{s};
my $distJobID = $opt{j};
my $debug     = $opt{d};
my $dontRetry = $opt{r};
my $dir       = $opt{f};
my $package   = $opt{p};
my $testing   = $opt{t};

my $appSingleton = Common::RSApp->new( clientID => $clientID );

my $pkg = Distribution::Service::get_delivery($serviceID);
eval "require $pkg";
die "oops, can't require $pkg\n$@\n" if $@;

my $packager = $pkg->new(
    client_id               => $clientID,
    service_id              => $serviceID,
    distribution_process_id => $distJobID,
    dont_retry              => $dontRetry,
    source_path             => $dir,
    package                 => $package,
    testing                 => $testing,
    debug                   => $debug,
);

exit(0) if ( $packager->run() );
exit(2);

sub usage {
    print STDERR "\nusage: $0 " . "-d " . "-t " . "-r "
      . "-c <client_id> "
      . "-s <service_id> "
      . "-j <distribution_process_id> "
      . "-f <source_path> "
      . "-p <package> " . "\n";
}
