jirametrics 2.14 → 2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/jirametrics/aging_work_bar_chart.rb +176 -134
- data/lib/jirametrics/anonymizer.rb +8 -6
- data/lib/jirametrics/atlassian_document_format.rb +3 -3
- data/lib/jirametrics/bar_chart_range.rb +17 -0
- data/lib/jirametrics/board.rb +4 -0
- data/lib/jirametrics/board_config.rb +3 -1
- data/lib/jirametrics/change_item.rb +11 -4
- data/lib/jirametrics/chart_base.rb +34 -2
- data/lib/jirametrics/cycletime_config.rb +22 -4
- data/lib/jirametrics/cycletime_histogram.rb +3 -1
- data/lib/jirametrics/cycletime_scatterplot.rb +36 -17
- data/lib/jirametrics/daily_view.rb +6 -20
- data/lib/jirametrics/daily_wip_by_age_chart.rb +3 -4
- data/lib/jirametrics/daily_wip_by_blocked_stalled_chart.rb +13 -3
- data/lib/jirametrics/daily_wip_chart.rb +1 -1
- data/lib/jirametrics/data_quality_report.rb +8 -3
- data/lib/jirametrics/dependency_chart.rb +4 -1
- data/lib/jirametrics/downloader.rb +34 -99
- data/lib/jirametrics/downloader_for_cloud.rb +202 -0
- data/lib/jirametrics/downloader_for_data_center.rb +94 -0
- data/lib/jirametrics/examples/standard_project.rb +9 -9
- data/lib/jirametrics/expedited_chart.rb +1 -1
- data/lib/jirametrics/exporter.rb +12 -5
- data/lib/jirametrics/file_system.rb +24 -1
- data/lib/jirametrics/fix_version.rb +13 -0
- data/lib/jirametrics/flow_efficiency_scatterplot.rb +1 -1
- data/lib/jirametrics/groupable_issue_chart.rb +7 -1
- data/lib/jirametrics/html/aging_work_bar_chart.erb +2 -1
- data/lib/jirametrics/html/aging_work_in_progress_chart.erb +3 -1
- data/lib/jirametrics/html/aging_work_table.erb +2 -0
- data/lib/jirametrics/html/collapsible_issues_panel.erb +2 -2
- data/lib/jirametrics/html/cycletime_histogram.erb +4 -2
- data/lib/jirametrics/html/cycletime_scatterplot.erb +6 -6
- data/lib/jirametrics/html/daily_wip_chart.erb +2 -0
- data/lib/jirametrics/html/estimate_accuracy_chart.erb +2 -0
- data/lib/jirametrics/html/expedited_chart.erb +3 -1
- data/lib/jirametrics/html/flow_efficiency_scatterplot.erb +2 -0
- data/lib/jirametrics/html/index.css +16 -9
- data/lib/jirametrics/html/index.erb +3 -35
- data/lib/jirametrics/html/index.js +114 -0
- data/lib/jirametrics/html/sprint_burndown.erb +11 -3
- data/lib/jirametrics/html/throughput_chart.erb +2 -2
- data/lib/jirametrics/html_generator.rb +31 -0
- data/lib/jirametrics/html_report_config.rb +8 -25
- data/lib/jirametrics/issue.rb +125 -19
- data/lib/jirametrics/jira_gateway.rb +55 -17
- data/lib/jirametrics/project_config.rb +22 -2
- data/lib/jirametrics/raw_javascript.rb +13 -0
- data/lib/jirametrics/settings.json +3 -1
- data/lib/jirametrics/sprint.rb +12 -0
- data/lib/jirametrics/sprint_burndown.rb +6 -2
- data/lib/jirametrics/stitcher.rb +75 -0
- data/lib/jirametrics.rb +26 -70
- metadata +10 -3
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Stitcher < HtmlGenerator
|
|
4
|
+
class StitchContent
|
|
5
|
+
include ValueEquality
|
|
6
|
+
|
|
7
|
+
attr_reader :file, :title, :content, :type
|
|
8
|
+
|
|
9
|
+
def initialize file:, title:, type:, content:
|
|
10
|
+
@file = file
|
|
11
|
+
@title = title
|
|
12
|
+
@content = content
|
|
13
|
+
@type = type
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
attr_reader :loaded_files, :all_stitches
|
|
18
|
+
|
|
19
|
+
def initialize file_system:
|
|
20
|
+
super()
|
|
21
|
+
self.file_system = file_system
|
|
22
|
+
@all_stitches = []
|
|
23
|
+
@loaded_files = []
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def run stitch_file:
|
|
27
|
+
output_filename = make_output_filename stitch_file
|
|
28
|
+
file_system.log "Creating file #{output_filename.inspect}", also_write_to_stderr: true
|
|
29
|
+
erb = ERB.new file_system.load(stitch_file)
|
|
30
|
+
@sections = [[erb.result(binding), :body]]
|
|
31
|
+
create_html output_filename: output_filename, settings: {}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def make_output_filename input_filename
|
|
35
|
+
if /^(.+)\.erb$/ =~ input_filename
|
|
36
|
+
"#{$1}.html"
|
|
37
|
+
else
|
|
38
|
+
"#{input_filename}.html"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def grab_by_title title, from_file:, type: 'chart'
|
|
43
|
+
parse_file from_file
|
|
44
|
+
stitch_content = @all_stitches.find { |s| s.file == from_file && s.title == title && s.type == type }
|
|
45
|
+
return stitch_content.content if stitch_content
|
|
46
|
+
|
|
47
|
+
raise "Unable to find content in file #{from_file.inspect} matching title: #{title.inspect}"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def parse_file filename
|
|
51
|
+
return false if @loaded_files.include? filename
|
|
52
|
+
|
|
53
|
+
# To match: <!-- seam-start | chart78 | GithubPrScatterplot | PR Scatterplot | chart -->
|
|
54
|
+
regex = /^<!-- seam-(?<seam>start|end) \| (?<id>[^|]+) \| (?<clazz>[^|]+) \| (?<title>[^|]+) \| (?<type>[^|]+) -->$/
|
|
55
|
+
content = nil
|
|
56
|
+
file_system.load(filename).lines do |line|
|
|
57
|
+
matches = line.match(regex)
|
|
58
|
+
if matches
|
|
59
|
+
if matches[:seam] == 'start'
|
|
60
|
+
content = +''
|
|
61
|
+
else
|
|
62
|
+
@all_stitches << Stitcher::StitchContent.new(
|
|
63
|
+
file: filename, title: matches[:title], type: matches[:type], content: content
|
|
64
|
+
)
|
|
65
|
+
content = nil
|
|
66
|
+
end
|
|
67
|
+
elsif content
|
|
68
|
+
content << line
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
@loaded_files << filename
|
|
73
|
+
true
|
|
74
|
+
end
|
|
75
|
+
end
|
data/lib/jirametrics.rb
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'thor'
|
|
4
|
+
require 'require_all'
|
|
5
|
+
|
|
6
|
+
# This one does need to be loaded early. The rest will be loaded later.
|
|
7
|
+
require 'jirametrics/file_system'
|
|
4
8
|
|
|
5
9
|
class JiraMetrics < Thor
|
|
6
10
|
def self.exit_on_failure?
|
|
@@ -43,81 +47,33 @@ class JiraMetrics < Thor
|
|
|
43
47
|
|
|
44
48
|
option :config
|
|
45
49
|
desc 'info', 'Dump information about one issue'
|
|
46
|
-
def info
|
|
50
|
+
def info key
|
|
47
51
|
load_config options[:config]
|
|
48
|
-
Exporter.instance.info(
|
|
52
|
+
Exporter.instance.info(key, name_filter: options[:name] || '*')
|
|
49
53
|
end
|
|
50
54
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
def
|
|
54
|
-
|
|
55
|
+
option :config
|
|
56
|
+
desc 'stitch', 'Dump information about one issue'
|
|
57
|
+
def stitch stitch_file = 'stitcher.erb'
|
|
58
|
+
load_config options[:config]
|
|
59
|
+
Exporter.instance.stitch stitch_file
|
|
60
|
+
end
|
|
55
61
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
config_file = File.absolute_path(config_file).to_s
|
|
60
|
-
else
|
|
61
|
-
puts "Cannot find configuration file #{config_file.inspect}"
|
|
62
|
-
exit 1
|
|
63
|
-
end
|
|
62
|
+
no_commands do
|
|
63
|
+
def load_config config_file, file_system: FileSystem.new
|
|
64
|
+
config_file = './config.rb' if config_file.nil?
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
66
|
+
if file_system.file_exist? config_file
|
|
67
|
+
# The fact that File.exist can see the file does not mean that require will be
|
|
68
|
+
# able to load it. Convert this to an absolute pathname now for require.
|
|
69
|
+
config_file = File.absolute_path(config_file).to_s
|
|
70
|
+
else
|
|
71
|
+
file_system.error "Cannot find configuration file #{config_file.inspect}"
|
|
72
|
+
exit 1
|
|
73
|
+
end
|
|
73
74
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
require 'jirametrics/file_config'
|
|
78
|
-
require 'jirametrics/jira_gateway'
|
|
79
|
-
require 'jirametrics/trend_line_calculator'
|
|
80
|
-
require 'jirametrics/status'
|
|
81
|
-
require 'jirametrics/issue_link'
|
|
82
|
-
require 'jirametrics/estimate_accuracy_chart'
|
|
83
|
-
require 'jirametrics/status_collection'
|
|
84
|
-
require 'jirametrics/sprint'
|
|
85
|
-
require 'jirametrics/issue'
|
|
86
|
-
require 'jirametrics/daily_wip_by_age_chart'
|
|
87
|
-
require 'jirametrics/daily_wip_by_parent_chart'
|
|
88
|
-
require 'jirametrics/aging_work_in_progress_chart'
|
|
89
|
-
require 'jirametrics/cycletime_scatterplot'
|
|
90
|
-
require 'jirametrics/flow_efficiency_scatterplot'
|
|
91
|
-
require 'jirametrics/sprint_issue_change_data'
|
|
92
|
-
require 'jirametrics/cycletime_histogram'
|
|
93
|
-
require 'jirametrics/daily_wip_by_blocked_stalled_chart'
|
|
94
|
-
require 'jirametrics/html_report_config'
|
|
95
|
-
require 'jirametrics/data_quality_report'
|
|
96
|
-
require 'jirametrics/aging_work_bar_chart'
|
|
97
|
-
require 'jirametrics/change_item'
|
|
98
|
-
require 'jirametrics/project_config'
|
|
99
|
-
require 'jirametrics/dependency_chart'
|
|
100
|
-
require 'jirametrics/cycletime_config'
|
|
101
|
-
require 'jirametrics/tree_organizer'
|
|
102
|
-
require 'jirametrics/aging_work_table'
|
|
103
|
-
require 'jirametrics/sprint_burndown'
|
|
104
|
-
require 'jirametrics/self_or_issue_dispatcher'
|
|
105
|
-
require 'jirametrics/throughput_chart'
|
|
106
|
-
require 'jirametrics/exporter'
|
|
107
|
-
require 'jirametrics/file_system'
|
|
108
|
-
require 'jirametrics/blocked_stalled_change'
|
|
109
|
-
require 'jirametrics/board_column'
|
|
110
|
-
require 'jirametrics/anonymizer'
|
|
111
|
-
require 'jirametrics/downloader'
|
|
112
|
-
require 'jirametrics/fix_version'
|
|
113
|
-
require 'jirametrics/download_config'
|
|
114
|
-
require 'jirametrics/columns_config'
|
|
115
|
-
require 'jirametrics/hierarchy_table'
|
|
116
|
-
require 'jirametrics/estimation_configuration'
|
|
117
|
-
require 'jirametrics/board'
|
|
118
|
-
require 'jirametrics/daily_view'
|
|
119
|
-
require 'jirametrics/user'
|
|
120
|
-
require 'jirametrics/atlassian_document_format'
|
|
121
|
-
load config_file
|
|
75
|
+
require_rel 'jirametrics'
|
|
76
|
+
load config_file
|
|
77
|
+
end
|
|
122
78
|
end
|
|
123
79
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jirametrics
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '2.
|
|
4
|
+
version: '2.22'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mike Bowler
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: random-word
|
|
@@ -66,6 +66,7 @@ files:
|
|
|
66
66
|
- lib/jirametrics/aging_work_table.rb
|
|
67
67
|
- lib/jirametrics/anonymizer.rb
|
|
68
68
|
- lib/jirametrics/atlassian_document_format.rb
|
|
69
|
+
- lib/jirametrics/bar_chart_range.rb
|
|
69
70
|
- lib/jirametrics/blocked_stalled_change.rb
|
|
70
71
|
- lib/jirametrics/board.rb
|
|
71
72
|
- lib/jirametrics/board_column.rb
|
|
@@ -87,6 +88,8 @@ files:
|
|
|
87
88
|
- lib/jirametrics/dependency_chart.rb
|
|
88
89
|
- lib/jirametrics/download_config.rb
|
|
89
90
|
- lib/jirametrics/downloader.rb
|
|
91
|
+
- lib/jirametrics/downloader_for_cloud.rb
|
|
92
|
+
- lib/jirametrics/downloader_for_data_center.rb
|
|
90
93
|
- lib/jirametrics/estimate_accuracy_chart.rb
|
|
91
94
|
- lib/jirametrics/estimation_configuration.rb
|
|
92
95
|
- lib/jirametrics/examples/aggregated_project.rb
|
|
@@ -113,14 +116,17 @@ files:
|
|
|
113
116
|
- lib/jirametrics/html/hierarchy_table.erb
|
|
114
117
|
- lib/jirametrics/html/index.css
|
|
115
118
|
- lib/jirametrics/html/index.erb
|
|
119
|
+
- lib/jirametrics/html/index.js
|
|
116
120
|
- lib/jirametrics/html/sprint_burndown.erb
|
|
117
121
|
- lib/jirametrics/html/throughput_chart.erb
|
|
122
|
+
- lib/jirametrics/html_generator.rb
|
|
118
123
|
- lib/jirametrics/html_report_config.rb
|
|
119
124
|
- lib/jirametrics/issue.rb
|
|
120
125
|
- lib/jirametrics/issue_collection.rb
|
|
121
126
|
- lib/jirametrics/issue_link.rb
|
|
122
127
|
- lib/jirametrics/jira_gateway.rb
|
|
123
128
|
- lib/jirametrics/project_config.rb
|
|
129
|
+
- lib/jirametrics/raw_javascript.rb
|
|
124
130
|
- lib/jirametrics/rules.rb
|
|
125
131
|
- lib/jirametrics/self_or_issue_dispatcher.rb
|
|
126
132
|
- lib/jirametrics/settings.json
|
|
@@ -129,6 +135,7 @@ files:
|
|
|
129
135
|
- lib/jirametrics/sprint_issue_change_data.rb
|
|
130
136
|
- lib/jirametrics/status.rb
|
|
131
137
|
- lib/jirametrics/status_collection.rb
|
|
138
|
+
- lib/jirametrics/stitcher.rb
|
|
132
139
|
- lib/jirametrics/throughput_chart.rb
|
|
133
140
|
- lib/jirametrics/tree_organizer.rb
|
|
134
141
|
- lib/jirametrics/trend_line_calculator.rb
|
|
@@ -156,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
156
163
|
- !ruby/object:Gem::Version
|
|
157
164
|
version: '0'
|
|
158
165
|
requirements: []
|
|
159
|
-
rubygems_version: 3.6.
|
|
166
|
+
rubygems_version: 3.6.9
|
|
160
167
|
specification_version: 4
|
|
161
168
|
summary: Extract Jira metrics
|
|
162
169
|
test_files: []
|