1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/usr/bin/env php
<?php
if (empty(trim($argv[1]))) {
echo "Please paste the tickets as an argument";
exit(3);
}
$tickets = array_unique(array_filter(explode(' ', strtr($argv[1], "\n\t\"/", ' '))));
function rgb(int $r, int $g, int $b): string {
$blacktext = "\033[38;2;0;0;0m";
return $blacktext . "\033[48;2;{$r};{$g};{$b}m";
}
function status_to_ansi(string $status): string {
$ansired = "\033[31m";
$ansigreen = "\033[32m";
$ansiyellow = "\033[33m";
$ansiblue = "\033[34m";
$ansimagenta = "\033[35m"; // pink
$ansicyan = "\033[36m";
$ansireset = "\033[0m";
$ansibrightblue = "\033[94m"; // purple
return match($status) {
"Blocked" => rgb(240, 226, 209), //rgb(252, 229, 205), //$ansiyellow, #fce5cd
"Ready To Work" => $ansireset,
"In Progress" => rgb(233, 175, 165), //rgb(230, 184, 175), //$ansired, #e6b8af
"Code Review" => rgb(228, 129, 188), //rgb(234, 209, 220), //$ansimagenta, #ead1dc
"Pending Demo",
"Ready To Test", "Testing" => rgb(131, 90, 226), //rgb(217, 210, 233), //$ansibrightblue, #d9d2e9
"Pending Sign Off", "Signed Off",
"Ready To Deploy",
"Obsolete", "Done" => rgb(32, 143, 223), //rgb(207, 226, 243), // $ansiblue, #cfe2f3
default => $ansireset,
};
}
function linkify(string $key): string {
return str_replace("LAMP-", "", $key);
}
//echo implode(' ', $tickets);
//exit(1);
$keys = implode(',', array_filter($tickets, fn($x) => str_starts_with($x, 'LAMP-')));
$command = "jira-cli issues list -q 'project = LAMP and key in ($keys)' --columns=KEY,STATUS --plain | grep -v '^KEY\b'";
//echo $command;
$jira_tickets = explode("\n", rtrim(shell_exec($command)));
$ticket_status = [];
$search = $replace = [];
foreach ($jira_tickets as $jira_ticket) {
[$key, $status] = explode("\t", $jira_ticket);
$ticket_status[$key] = $status;
$search[] = $key;
$replace[] = status_to_ansi($status) . linkify($key);
// $search_replace[$key] =
}
$search[] = "HOLIDAY";
$replace[] = "\033[0m" . "HOLIDAY";
$search[] = "PTO";
$replace[] = "\033[0m" . "PTO";
$search[] = " / ";
$replace[] = "\033[0m" . "/";
echo "\n";
echo str_replace($search, $replace, $argv[1]);
echo "\033[0m" . "\n";
return;
$padlen = 50;
print(str_pad("\rGetting ready to work tickets from jira...", $padlen));
$RTWtickets = explode("\n", rtrim(`jira-cli issues list -q"project IS NOT EMPTY and project != AUTO and project != NET and project != MSP and project != SYST and project != LOYAL and project != ONBDCA" --order-by="Sprint" -s"Ready To Work" --columns=KEY --plain | grep -v '^KEY$'`));
print(str_pad("\rGetting blocked tickets from jira...", $padlen));
$BLOCKtickets = explode("\n", rtrim(`jira-cli issues list -q"project IS NOT EMPTY and project != AUTO and project != NET and project != MSP and project != SYST and project != LOYAL" --order-by="Sprint" -s"Blocked" -s"Needs Ops Refinement" --columns=KEY --plain | grep -v '^KEY$'`));
print(str_pad("\rGetting in progress tickets from jira...", $padlen));
$IPtickets = explode("\n", rtrim(`jira-cli issues list -q"project IS NOT EMPTY and project != AUTO and project != NET and project != MSP and project != SYST and project != LOYAL and project != BCP" --order-by="Sprint" -s"In Progress" --columns=KEY --plain | grep -v '^KEY$'`));
print(str_pad("\rGetting code review tickets from jira...", $padlen));
$CRtickets = explode("\n", rtrim(`jira-cli issues list -q"project IS NOT EMPTY and project != AUTO and project != NET and project != MSP and project != SYST and project != LOYAL" --order-by="Sprint" -s"Code Review" --columns=KEY --plain | grep -v '^KEY$'`));
print(str_pad("\rGetting testing tickets from jira...", $padlen));
$TESTtickets = explode("\n", rtrim(`jira-cli issues list -q"project IS NOT EMPTY and project != AUTO and project != NET and project != MSP and project != SYST and project != LOYAL" --order-by="Sprint" -s"Pending Demo" -s"Ready To Test" -s "Testing" --columns=KEY --plain | grep -v '^KEY$'`));
print(str_pad("\rGetting done tickets from jira...", $padlen));
$DONEtickets = explode("\n", rtrim(`jira-cli issues list -q"project IS NOT EMPTY and project != AUTO and project != NET and project != MSP and project != SYST and project != LOYAL and project != BCP and project != 'DO' and project != SC and project != ONBDCA" --order-by="Sprint" -s"Pending Sign Off" -s "Signed Off" -s"Done" --columns=KEY --plain | grep -v '^KEY$'`));
print(str_pad("\r", $padlen));
print("\r");
echo "Ready To Work: " . implode(' ', array_intersect($tickets, $RTWtickets)) . "\n";
echo "Blocked: " . implode(' ', array_intersect($tickets, $BLOCKtickets)) . "\n";
echo "In Progress: " . implode(' ', array_intersect($tickets, $IPtickets)) . "\n";
echo "Code Review: " . implode(' ', array_intersect($tickets, $CRtickets)) . "\n";
echo "Testing: " . implode(' ', array_intersect($tickets, $TESTtickets)) . "\n";
echo "Done: " . implode(' ', array_intersect($tickets, $DONEtickets)) . "\n";
echo "Unknown: " . implode(' ', array_diff($tickets, $RTWtickets, $BLOCKtickets, $IPtickets, $CRtickets, $TESTtickets, $DONEtickets, ['/', 'PTO'])) . "\n";
|