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