Add command line option.

This commit is contained in:
Bradley M. Kuhn 2018-07-22 15:08:31 -07:00
parent fc1c35c25c
commit cb49fb5c3e

View file

@ -11,7 +11,7 @@ use Getopt::Long;
use File::Spec;
use Date::Manip qw(ParseDate UnixDate);
my($PAYMENT_DIR, $VERBOSE, $INTERACTIVE, $PAYMENT_NUMBER, $RT_CMD);
my($PAYMENT_DIR, $VERBOSE, $INTERACTIVE, $PAYMENT_NUMBER, $RT_CMD, $INVOICE_LINE);
###############################################################################
sub FindUniqueTicket(@) {
@ -63,14 +63,79 @@ sub LedgerTagFromTicket($$) {
return $tagValue;
}
###############################################################################
sub GetLinksForTicket($) {
my($ticketSpec) = @_;
my @linked;
open(my $rtLinksFH, "-|", "$RT_CMD", "show", $ticketSpec . '/links');
while (my $linksLine = <$rtLinksFH>) {
if ($linksLine =~ m%rt.*ticket/(\d+)\s*$%) {
push(@linked, $1);
}
}
close $rtLinksFH;
return @linked;
}
###############################################################################
sub FindTaxTicketFromList(@) {
my $taxTicket;
foreach my $ticket (@_) {
open(my $rtQueueFH, "-|", "$RT_CMD", "show", "-f", 'Queue', $ticket);
while (my $queueLine = <$rtQueueFH>) {
if ($queueLine =~ /\s*Queue\s*:\s*(\S+)\s*$/) {
my $queue = $1;
$taxTicket = $ticket if $queue =~ /accounts-taxinfo/;
last;
}
}
close $rtQueueFH;
last if defined $taxTicket;
}
$taxTicket = "ticket/$taxTicket" if defined $taxTicket;
return $taxTicket;
}
###############################################################################
sub GetStatusFromTicket($) {
my($ticketSpec) = @_;
my $status;
open(my $statusFH, "-|", "$RT_CMD", "show", "-f", 'Status', $ticketSpec);
while (my $statusLine = <$statusFH>) {
if ($statusLine =~ /\s*Status\s*:\s*(\S+)\s*$/) {
$status = $1;
last;
}
}
close $statusFH;
return $status;
}
###############################################################################
sub GetCustomFieldForTicket($$) {
my($ticketSpec, $customField) = @_;
open(my $rtPayFH, "-|", "$RT_CMD", "show", "-f", 'CF.{' . $customField .'}', $ticketSpec);
my $val;
while (my $customFieldLine = <$rtPayFH>) {
chomp $customFieldLine;
if ($customFieldLine =~ /^\s*(\S+)\s*$/) {
$val = $customFieldLine;
last;
}
}
close $rtPayFH;
return $val;
}
###############################################################################
GetOptions("paymentDir=s" => \$PAYMENT_DIR, "verbose=i" => \$VERBOSE, "interactive" => \$INTERACTIVE,
"paymentNumber=i" => \$PAYMENT_NUMBER, "rtCommand=s" => $RT_CMD);
"paymentNumber=i" => \$PAYMENT_NUMBER, "rtCommand=s" => \$RT_CMD,
"invoiceLine=s" => \$INVOICE_LINE);
$RT_CMD = '/usr/bin/rt' unless defined $RT_CMD;
$INTERACTIVE = 0 if not defined $INTERACTIVE;
unless (defined $INVOICE_LINE and $INVOICE_LINE =~ /^rt.*/) {
print STDERR "usage: $0 --invoiceLine=<RT_SPEC> option is required and must match an RT spec\n";
exit 1;
}
unless (defined $PAYMENT_DIR and -d $PAYMENT_DIR) {
print STDERR "usage: $0 --paymentDir=<DIRECTORY> option is required and directory must exist\n";
exit 1;