snitcher_reports 0.2.0

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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.snitcher.yml.example +135 -0
  3. data/CHANGELOG.md +9 -0
  4. data/LICENSE +21 -0
  5. data/README.md +685 -0
  6. data/lib/snitcher/anomaly.rb +24 -0
  7. data/lib/snitcher/anomaly_context.rb +76 -0
  8. data/lib/snitcher/anomaly_detector.rb +32 -0
  9. data/lib/snitcher/anomaly_rules/base.rb +29 -0
  10. data/lib/snitcher/anomaly_rules/commits_without_closed_tickets.rb +22 -0
  11. data/lib/snitcher/anomaly_rules/estimate_overrun.rb +37 -0
  12. data/lib/snitcher/anomaly_rules/excessive_meeting_time.rb +43 -0
  13. data/lib/snitcher/anomaly_rules/inactive_working_days.rb +32 -0
  14. data/lib/snitcher/anomaly_rules/time_above_availability.rb +27 -0
  15. data/lib/snitcher/client.rb +177 -0
  16. data/lib/snitcher/configuration.rb +123 -0
  17. data/lib/snitcher/holiday_region_resolver.rb +123 -0
  18. data/lib/snitcher/jql_validator.rb +44 -0
  19. data/lib/snitcher/meetings_aggregator.rb +38 -0
  20. data/lib/snitcher/orchestrator.rb +227 -0
  21. data/lib/snitcher/presenters/html.rb +87 -0
  22. data/lib/snitcher/presenters/markdown.rb +140 -0
  23. data/lib/snitcher/presenters/presenter.rb +90 -0
  24. data/lib/snitcher/report.rb +112 -0
  25. data/lib/snitcher/report_service.rb +128 -0
  26. data/lib/snitcher/report_writer.rb +74 -0
  27. data/lib/snitcher/sources/clickup/archived_lists.rb +174 -0
  28. data/lib/snitcher/sources/clickup/working_hours_filter.rb +88 -0
  29. data/lib/snitcher/sources/clickup.rb +467 -0
  30. data/lib/snitcher/sources/git/command_runner.rb +198 -0
  31. data/lib/snitcher/sources/git.rb +347 -0
  32. data/lib/snitcher/sources/google_calendar.rb +328 -0
  33. data/lib/snitcher/sources/jira/client.rb +346 -0
  34. data/lib/snitcher/sources/jira/status_categories.rb +60 -0
  35. data/lib/snitcher/sources/jira.rb +523 -0
  36. data/lib/snitcher/sources/linear.rb +257 -0
  37. data/lib/snitcher/sources/source.rb +140 -0
  38. data/lib/snitcher/templates/report.html.erb +564 -0
  39. data/lib/snitcher/templates/snitcher-logo.png +0 -0
  40. data/lib/snitcher/time_formatter.rb +27 -0
  41. data/lib/snitcher/validators.rb +59 -0
  42. data/lib/snitcher/version.rb +5 -0
  43. data/lib/snitcher/work_item.rb +75 -0
  44. data/lib/snitcher/working_hours_calculator.rb +205 -0
  45. data/lib/snitcher/working_hours_config.rb +208 -0
  46. data/lib/snitcher.rb +39 -0
  47. metadata +250 -0
metadata ADDED
@@ -0,0 +1,250 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: snitcher_reports
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Visuality
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0.2'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0.2'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '1.0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: faraday
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: '2.9'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - "~>"
44
+ - !ruby/object:Gem::Version
45
+ version: '2.9'
46
+ - !ruby/object:Gem::Dependency
47
+ name: faraday-retry
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '2.2'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '2.2'
60
+ - !ruby/object:Gem::Dependency
61
+ name: google-apis-calendar_v3
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0.40'
67
+ - - "<"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0.40'
77
+ - - "<"
78
+ - !ruby/object:Gem::Version
79
+ version: '1.0'
80
+ - !ruby/object:Gem::Dependency
81
+ name: googleauth
82
+ requirement: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '1.11'
87
+ type: :runtime
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '1.11'
94
+ - !ruby/object:Gem::Dependency
95
+ name: holidays
96
+ requirement: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '9.1'
101
+ type: :runtime
102
+ prerelease: false
103
+ version_requirements: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '9.1'
108
+ - !ruby/object:Gem::Dependency
109
+ name: json
110
+ requirement: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '2.19'
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 2.19.2
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.19'
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 2.19.2
128
+ - !ruby/object:Gem::Dependency
129
+ name: tzinfo
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: '2.0'
135
+ type: :runtime
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: '2.0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: tzinfo-data
144
+ requirement: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: '1.2024'
149
+ type: :runtime
150
+ prerelease: false
151
+ version_requirements: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - "~>"
154
+ - !ruby/object:Gem::Version
155
+ version: '1.2024'
156
+ - !ruby/object:Gem::Dependency
157
+ name: zeitwerk
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - "~>"
161
+ - !ruby/object:Gem::Version
162
+ version: '2.6'
163
+ type: :runtime
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: '2.6'
170
+ description: Aggregates completed work across trackers into a unified per-user report.
171
+ One set of organization credentials serves many users; the host application supplies
172
+ configuration and ENV and receives a plain Hash, or a rendered console / Markdown
173
+ / HTML report.
174
+ executables: []
175
+ extensions: []
176
+ extra_rdoc_files: []
177
+ files:
178
+ - ".snitcher.yml.example"
179
+ - CHANGELOG.md
180
+ - LICENSE
181
+ - README.md
182
+ - lib/snitcher.rb
183
+ - lib/snitcher/anomaly.rb
184
+ - lib/snitcher/anomaly_context.rb
185
+ - lib/snitcher/anomaly_detector.rb
186
+ - lib/snitcher/anomaly_rules/base.rb
187
+ - lib/snitcher/anomaly_rules/commits_without_closed_tickets.rb
188
+ - lib/snitcher/anomaly_rules/estimate_overrun.rb
189
+ - lib/snitcher/anomaly_rules/excessive_meeting_time.rb
190
+ - lib/snitcher/anomaly_rules/inactive_working_days.rb
191
+ - lib/snitcher/anomaly_rules/time_above_availability.rb
192
+ - lib/snitcher/client.rb
193
+ - lib/snitcher/configuration.rb
194
+ - lib/snitcher/holiday_region_resolver.rb
195
+ - lib/snitcher/jql_validator.rb
196
+ - lib/snitcher/meetings_aggregator.rb
197
+ - lib/snitcher/orchestrator.rb
198
+ - lib/snitcher/presenters/html.rb
199
+ - lib/snitcher/presenters/markdown.rb
200
+ - lib/snitcher/presenters/presenter.rb
201
+ - lib/snitcher/report.rb
202
+ - lib/snitcher/report_service.rb
203
+ - lib/snitcher/report_writer.rb
204
+ - lib/snitcher/sources/clickup.rb
205
+ - lib/snitcher/sources/clickup/archived_lists.rb
206
+ - lib/snitcher/sources/clickup/working_hours_filter.rb
207
+ - lib/snitcher/sources/git.rb
208
+ - lib/snitcher/sources/git/command_runner.rb
209
+ - lib/snitcher/sources/google_calendar.rb
210
+ - lib/snitcher/sources/jira.rb
211
+ - lib/snitcher/sources/jira/client.rb
212
+ - lib/snitcher/sources/jira/status_categories.rb
213
+ - lib/snitcher/sources/linear.rb
214
+ - lib/snitcher/sources/source.rb
215
+ - lib/snitcher/templates/report.html.erb
216
+ - lib/snitcher/templates/snitcher-logo.png
217
+ - lib/snitcher/time_formatter.rb
218
+ - lib/snitcher/validators.rb
219
+ - lib/snitcher/version.rb
220
+ - lib/snitcher/work_item.rb
221
+ - lib/snitcher/working_hours_calculator.rb
222
+ - lib/snitcher/working_hours_config.rb
223
+ homepage: https://github.com/visualitypl/snitcher_reports
224
+ licenses:
225
+ - MIT
226
+ metadata:
227
+ rubygems_mfa_required: 'true'
228
+ allowed_push_host: https://rubygems.org
229
+ rdoc_options: []
230
+ require_paths:
231
+ - lib
232
+ required_ruby_version: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '3.4'
237
+ - - "<"
238
+ - !ruby/object:Gem::Version
239
+ version: '5.0'
240
+ required_rubygems_version: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ requirements: []
246
+ rubygems_version: 3.6.7
247
+ specification_version: 4
248
+ summary: Embeddable multi-source work-report generator (Jira, ClickUp, Linear, Git,
249
+ Google Calendar).
250
+ test_files: []