how_is 19.0.0 → 20.0.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 (48) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +1 -0
  3. data/.rubocop.yml +16 -0
  4. data/CHANGELOG.md +30 -3
  5. data/Gemfile +0 -6
  6. data/README.md +5 -2
  7. data/exe/how_is +7 -2
  8. data/fixtures/vcr_cassettes/how-is-example-empty-repository.yml +446 -727
  9. data/fixtures/vcr_cassettes/how-is-example-repository.yml +508 -727
  10. data/fixtures/vcr_cassettes/how-is-from-config-frontmatter.yml +43522 -1218
  11. data/fixtures/vcr_cassettes/how-is-how-is-travis-api-repos-builds.yml +287 -0
  12. data/fixtures/vcr_cassettes/how-is-with-config-file.yml +44307 -23286
  13. data/fixtures/vcr_cassettes/how_is_contributions_additions_count.yml +307 -0
  14. data/fixtures/vcr_cassettes/how_is_contributions_all_contributors.yml +81 -0
  15. data/fixtures/vcr_cassettes/how_is_contributions_changed_files.yml +307 -0
  16. data/fixtures/vcr_cassettes/how_is_contributions_changes.yml +307 -0
  17. data/fixtures/vcr_cassettes/how_is_contributions_commits.yml +307 -0
  18. data/fixtures/vcr_cassettes/how_is_contributions_compare_url.yml +74 -0
  19. data/fixtures/vcr_cassettes/how_is_contributions_deletions_count.yml +307 -0
  20. data/fixtures/vcr_cassettes/how_is_contributions_new_contributors.yml +234 -0
  21. data/fixtures/vcr_cassettes/how_is_contributions_summary.yml +378 -0
  22. data/fixtures/vcr_cassettes/how_is_contributions_summary_2.yml +378 -0
  23. data/fixtures/vcr_cassettes/how_is_fetcher_call.yml +572 -0
  24. data/how_is.gemspec +3 -2
  25. data/lib/how_is/cli.rb +4 -6
  26. data/lib/how_is/frontmatter.rb +46 -0
  27. data/lib/how_is/report.rb +59 -63
  28. data/lib/how_is/sources/github/contributions.rb +164 -0
  29. data/lib/how_is/sources/github/issues.rb +142 -0
  30. data/lib/how_is/sources/github/pulls.rb +20 -0
  31. data/lib/how_is/sources/github.rb +11 -0
  32. data/lib/how_is/sources/github_helpers.rb +191 -0
  33. data/lib/how_is/sources/travis.rb +34 -0
  34. data/lib/how_is/sources.rb +9 -0
  35. data/lib/how_is/templates/issues_or_pulls_partial.html_template +7 -0
  36. data/lib/how_is/templates/report.html_template +27 -0
  37. data/lib/how_is/templates/report_partial.html_template +12 -0
  38. data/lib/how_is/version.rb +2 -2
  39. data/lib/how_is.rb +59 -158
  40. metadata +42 -16
  41. data/lib/how_is/analyzer.rb +0 -222
  42. data/lib/how_is/builds.rb +0 -36
  43. data/lib/how_is/contributions.rb +0 -156
  44. data/lib/how_is/fetcher.rb +0 -77
  45. data/lib/how_is/pulse.rb +0 -47
  46. data/lib/how_is/report/base_report.rb +0 -148
  47. data/lib/how_is/report/html.rb +0 -120
  48. data/lib/how_is/report/json.rb +0 -34
@@ -1,120 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "cgi"
4
- require "how_is/report/base_report"
5
-
6
- class HowIs
7
- # HTML Report implementation
8
- class HtmlReport < BaseReport
9
- def format
10
- :html
11
- end
12
-
13
- def title(content)
14
- @title = content
15
- @r += "\n<h1>#{content}</h1>\n"
16
- end
17
-
18
- def header(content)
19
- @r += "\n<h2>#{content}</h2>\n"
20
- end
21
-
22
- def link(content, url)
23
- %[<a href="#{url}">#{content}</a>]
24
- end
25
-
26
- def text(content)
27
- @r += "<p>#{content}</p>\n"
28
- end
29
-
30
- def unordered_list(arr)
31
- @r += "\n<ul>\n"
32
- arr.each do |item|
33
- @r += " <li>#{item}</li>\n"
34
- end
35
- @r += "</ul>\n\n"
36
- end
37
-
38
- ROW_HTML_GRAPH = <<-EOF
39
- <tr>
40
- <td style="width: %{label_width}">%{label_text}</td>
41
- <td><span class="fill" style="width: %{percentage}%%">%{link_text}</span></td>
42
- </tr>
43
-
44
- EOF
45
-
46
- def horizontal_bar_graph(data)
47
- if data.length == 1 && data[0][0] == "(No label)"
48
- text "There are no open issues to graph."
49
- return
50
- end
51
-
52
- biggest = data.map { |x| x[1] }.max
53
- get_percentage = ->(number_of_issues) { number_of_issues * 100 / biggest }
54
-
55
- longest_label_length = data.map(&:first).map(&:length).max
56
- label_width = "#{longest_label_length}ch"
57
-
58
- @r += "<table class=\"horizontal-bar-graph\">\n"
59
- data.each do |row|
60
- @r += Kernel.format(ROW_HTML_GRAPH, label_width: label_width,
61
- label_text: label_text_for(row),
62
- percentage: get_percentage.call(row[1]),
63
- link_text: row[1])
64
- end
65
- @r += "</table>\n"
66
- end
67
-
68
- def export
69
- @r = ""
70
- generate_report_text!
71
- end
72
-
73
- HTML_DOC_TEMPLATE = <<~EOF
74
- <!DOCTYPE html>
75
- <html>
76
- <head>
77
- <title>%{title}</title>
78
- <style>
79
- body { font: sans-serif; }
80
- main {
81
- max-width: 600px;
82
- max-width: 72ch;
83
- margin: auto;
84
- }
85
- .horizontal-bar-graph {
86
- position: relative;
87
- width: 100%;
88
- }
89
- .horizontal-bar-graph .fill {
90
- display: inline-block;
91
- background: #CCC;
92
- }
93
- </style>
94
- </head>
95
- <body>
96
- <main>
97
- %{report}
98
- </main>
99
- </body>
100
- </html>
101
- EOF
102
-
103
- def export_file(file)
104
- content = Kernel.format(HTML_DOC_TEMPLATE, title: @title, report: export)
105
- File.open(file, "w") do |f|
106
- f.puts content
107
- end
108
- end
109
-
110
- private
111
-
112
- def label_text_for(row)
113
- if row[2]
114
- link(row[0], row[2])
115
- else
116
- row[0]
117
- end
118
- end
119
- end
120
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "how_is/report/base_report"
4
-
5
- class HowIs
6
- ##
7
- # A JSON report.
8
- class JsonReport < BaseReport
9
- # A JSON report is simply a JSON dump of the corresponding
10
- # HowIs::Analysis instance.
11
-
12
- ##
13
- # The format of the report.
14
- #
15
- # @return [Symbol] The name of the format.
16
- def format
17
- :json
18
- end
19
-
20
- ##
21
- # Generates a report.
22
- def export
23
- to_json
24
- end
25
-
26
- ##
27
- # Generates a report and writes it to a file.
28
- def export_file(file)
29
- File.open(file, "w") do |f|
30
- f.write export
31
- end
32
- end
33
- end
34
- end