=cut
package BarnOwl::Module::RT;
-use IPC::Open3;
+use AnyEvent::Util qw(run_cmd);
use Text::ParseWords;
our $VERSION = '1.0.1';
"status\\s(deleted|resolved|rejected|open|new|waiting)", "edit ticket/\$t set status=\$1",
"(d|del|delete)", "edit ticket/\$t set status=deleted",
"(r|res|resolve)", "edit ticket/\$t set status=resolved",
+ "(rej|reject|rejected)", "edit ticket/\$t set status=rejected",
"show", "show -l ticket/\$t/history",
"show (\\d+)", "show -l ticket/\$1/history",
"list", 'rt list -o +Created "((Status=new or Status=stalled or Status=open) and (Queue=\'$q\'))"',
close($fh);
}
-my $file_path = "$cfg/rtcommands";
+$file_path = "$cfg/rtcommands";
if(-r "$file_path") {
open(my $fh, "<:encoding(UTF-8)", "$file_path") or die("Unable to read $file_path:$!\n");
while(defined(my $line = <$fh>)) {
}
sub run_rt_command{
- my @args = ("athrun","tooltime","rt");
- push (@args, @_);
- local(*IN, *OUT, *ERR);
- open3(*IN, *OUT, *ERR, @args) || die("RT threw $!");
- close(*IN);
- my $out = do { local $/; <OUT> };
- close(*OUT);
- $out .= do { local $/; <ERR> };
- close(*ERR);
- if (($out =~ tr/\n//) eq 1){
- return $out;
- }
- BarnOwl::popless_text($out);
- return;
+ my $out;
+ run_cmd(
+ ["athrun", "tooltime", "rt", @_],
+ "<", "/dev/null",
+ ">", \$out,
+ "2>", \$out,
+ )->cb(sub {
+ my $ret = shift->recv;
+ $ret == 0 or die("RT returned $ret");
+ if (($out =~ tr/\n//) == 1) {
+ BarnOwl::message($out);
+ } else {
+ BarnOwl::popless_text($out);
+ }
+ });
}
BarnOwl::new_command("rt",
rt [set|add|del] <args> - runs rt (set|add|del) with relevent args - Dangerous if not careful
rt [d|del|delete] - mark a ticket deleted
rt [r|res|resolve] - mark a ticked resolved
+ rt [rej|reject|rejected] - mark a ticked rejected
rt status [deleted|resolved|new|open|waiting|rejected] - set status of a ticket
rt show - show detailed history of selected ticket
rt show <ticket> - show history of <ticket>
It is a good place to put custom queries which will be used frequently.
Examples:
- "list-owner (\w+)" "rt list -o +Created \"((Status=new or Status=stalled or Status=open) and (Queue='\$q') and 'Owner='\$1')\""
+ "list-owner (\\w+)" "rt list -o +Created \"((Status=new or Status=stalled or Status=open) and (Queue='\$q') and 'Owner='\$1')\""
\$t is the current ticket
\$q is the current queue