1#!/usr/bin/perl 2 3my $pager = `which less` || `which more`; 4my $tmpdir = "/tmp/FSJIRA"; 5 6system("mkdir -p $tmpdir"); 7 8my $cmd = "git log " . join(" ", @ARGV); 9 10open(CMD, "$cmd |"); 11open(PAGER, "|$pager"); 12select PAGER; 13 14while(my $line = <CMD>) { 15 16 print $line; 17 18 if ($line =~ /([A-Z]+\-[0-9]+)/) { 19 my $bug = $1; 20 my $txt = bugtxt($bug); 21 if ($txt) { 22 print "=" x 80 . "\n"; 23 print $txt; 24 print "=" x 80 . "\n"; 25 } 26 } 27} 28 29close(CMD); 30close(PAGER); 31 32sub catfile($) { 33 my $file = shift; 34 open(I, $file) or return; 35 $/ = undef; 36 my $txt = <I>; 37 $/ = "\n"; 38 close(I); 39 return $txt; 40} 41 42 43sub bugtxt($) 44{ 45 my $bug = shift or return ""; 46 my $now = time; 47 my $tmp; 48 49 $bug =~ s/\.\.//g; 50 $bug =~ s/^\///g; 51 $bug =~ s/~//g; 52 $bug =~ s/[^a-zA-Z0-9\-]//g; 53 54 $tmp = "$tmpdir/$bug.txt"; 55 56 if(-f $tmp) { 57 return catfile($tmp); 58 } 59 60 my $cmd = "wget -q https://freeswitch.org/jira/si/jira.issueviews:issue-xml/$bug/$bug.xml -O $tmp"; 61 62 system($cmd); 63 64 my $txt = catfile($tmp); 65 66 my ($a,$title) = $txt =~ /\<title\>(.*?)\<\/title\>/smg; 67 my ($status) = $txt =~ /\<status.*?\>(.*?)\<\/status\>/smg; 68 my ($a,$des) = $txt =~ /\<description\>(.*?)\<\/description\>/smg; 69 my ($alogin, $aname) = $txt =~ /\<assignee username=\"([^\"]+)\"\>(.*?)\<\/assignee\>/smg; 70 my ($rlogin, $rname) = $txt =~ /\<reporter username=\"([^\"]+)\"\>(.*?)\<\/reporter\>/smg; 71 72 73 if ($rname && $aname) { 74 my $data = "$title\nReporter: $rname [$rlogin]\nAssignee: $aname [$alogin]\nStatus: $status\nhttps://freeswitch.org/jira/browse/$bug\n"; 75 open(O, ">$tmp"); 76 print O $data; 77 close(O); 78 return $data; 79 } else { 80 unlink($tmp); 81 } 82} 83