how_is 17.0.0 → 18.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71e52f74ab14a10f79d1fcebd73a3e44a2a8860a
4
- data.tar.gz: 93b67eedce8aeab93e266db7524f66e139059a1f
3
+ metadata.gz: 0c44d90a04abb7343c89a5ff858d63d23c98c0ce
4
+ data.tar.gz: e2c1842533e09ec46d26d5cc6d5e24c72c2c65f2
5
5
  SHA512:
6
- metadata.gz: 0010c1c0d71fd9560ce5ece88e9366e87481eb28f933833807db62ad0e7384da502265461f087d9372cb029077afd8d9c111f47f55ab596455817ab5f928e8a2
7
- data.tar.gz: d7441138e3ebb82e4d66703492d28268550203503284c6e591a6147a779da9261ef24f2d3447564e09f4abee1dc1b3346c71a35c53751cbe56e41ed21a422fc8
6
+ metadata.gz: 77dea4e880e70869bc7b9ad6a3ce2cd2d33cd20a07cfd5ebbf45e01937275fe828b7e448bfcbf0c93486720202c44244065da82b5251b0423358efcdd174905d
7
+ data.tar.gz: 41c3d52d430ec1de181d01461db6b084e14ccbf3d50e147e72306f85214b367bb718d059199edb2ee9cc09f412c93e5b1c30b5e66b45a2bf53b6aa5481abc0e7
data/CHANGELOG.md CHANGED
@@ -9,6 +9,41 @@ this project adheres to [Semantic Versioning](http://semver.org).
9
9
 
10
10
  (Nothing so far.)
11
11
 
12
+ ## [v18.0.0]
13
+
14
+ This release ([snapshot](https://github.com/how-is/how_is/tree/v18.0.0))
15
+ vastly improves documentation, fixes the `--from` flag, and adds the
16
+ `HowIs.from_hash` method (used by the
17
+ [dashboard](https://github.com/how-is/dashboard)).
18
+
19
+ Pull Requests for this release can be [viewed on
20
+ GitHub](https://github.com/how-is/how_is/pulls?utf8=&q=is%3Apr%20created%3A2017-02-10..2017-03-03).
21
+
22
+ ### Additions
23
+
24
+ * Add/improve inline code documentation.
25
+ ([#132](https://github.com/how-is/how_is/pull/132))
26
+ * Move documentation from design/ to README.
27
+ ([#143](https://github.com/how-is/how_is/pull/143))
28
+ * Add `HowIs.from_hash` method.
29
+ ([#144](https://github.com/how-is/how_is/pull/144))
30
+
31
+ ### Changes
32
+
33
+ * Unpin Rack version. ([#139](https://github.com/how-is/how_is/pull/139))
34
+ * Fix --from. ([#141](https://github.com/how-is/how_is/pull/141))
35
+
36
+ ### Miscellaneous
37
+
38
+ Things that don't affect users of how\_is.
39
+
40
+ * Fix grammar in gemspec.
41
+ ([#129](https://github.com/how-is/how_is/pull/129))
42
+ * Fix URL in gemspec. ([#130](https://github.com/how-is/how_is/pull/130))
43
+ * Remove shebang line from lib/ file.
44
+ ([#131](https://github.com/how-is/how_is/pull/131))
45
+
46
+
12
47
  ## [v17.0.0]
13
48
 
14
49
  This release ([snapshot](https://github.com/how-is/how_is/tree/v17.0.0))
data/README.md CHANGED
@@ -34,9 +34,28 @@ E.g.,
34
34
 
35
35
  The above command creates a HTML file containing the summary at `./report.html`.
36
36
 
37
+ If you don't pass the `--report` flag, it defaults to
38
+ `./report.html`.
39
+
40
+ #### Generating reports, using a JSON report as a cache
41
+
42
+ You can use a JSON report as a cache when generating another rpeort.
43
+
44
+ E.g.,
45
+
46
+ $ how_is rubygems/rubygems --report report.json
47
+ $ how_is --from report.json --report report.html
48
+
49
+ The first command generates a JSON report at `./report.json`. The second
50
+ command generates an HTML report at `./report.html`, using information
51
+ from `./report.json`.
52
+
53
+ When using `--from`, no network requests are made, because all of the
54
+ required information is in the JSON report.
55
+
37
56
  #### Generating reports from a config file
38
57
 
39
- Beyond the above, you can also create a config file — typically called
58
+ You can also create a config file — typically called
40
59
  how_is.yml — and run `how_is --config YAML_CONFIG_FILE`. (E.g., if
41
60
  the config file is how_is.yml, you would run `how_is --config how_is.yml`.)
42
61
 
@@ -91,65 +91,7 @@ Items with two asterisks (\*\*) have been partially implemented.
91
91
 
92
92
  ## UI Specification
93
93
 
94
- ## Infmation about how_is
95
-
96
- `how_is --help` prints help text and exits.
97
-
98
- `how_is --version` prints the version and exits.
99
-
100
- ### Generating a report
101
-
102
- How\_is can generate HTML reports for https://github.com/rubygems/rubygems.
103
- By default, it generates reports at `./report.html`.
104
- To view an HTML report, open it in aweb browser.
105
-
106
- There is no output when it succeeds.
107
-
108
- ```
109
- $ how_is rubygems/rubygems
110
- $
111
- ```
112
-
113
- ### Generate a report, specifying the filename
114
-
115
- You can generate reports with other filenames, as well as different
116
- report formats, using the `--report FILENAME` parameter.
117
-
118
- The FILENAME can be any filename that ends with a lowercase
119
- extension specifying a supported format (currently `.html` and `.json`).
120
-
121
- If the filename ends with `.html` it'll generate an HTML report,
122
- if it ends with `.json` it'll generate a JSON report.
123
-
124
- There is no output when it succeeds.
125
-
126
- ```
127
- $ how_is --report report.json rubygems/rubygems
128
- $
129
- ```
130
-
131
- ### Generate a report, using data from a JSON report
132
-
133
- If you have a JSON report (see above), you can use that to generate
134
- another report (probably HTML) using that data.
135
-
136
- E.g.,
137
-
138
- ```
139
- $ how_is --from report.json --report report.html
140
- $
141
- ```
142
-
143
- This generates an HTML report just like `how_is --report report.html
144
- REPOSITORY`, except it uses the data from `report.json` instead of
145
- fetching it again.
146
-
147
- tl;dr: you're using the JSON file as a cache.
148
-
149
- ### Generating a report using a config file
150
-
151
- See [the README](https://github.com/how-is/how_is/blob/master/README.md#generating-reports-from-a-config-file).
152
-
153
- ### Ruby API
154
-
155
- See [the README](https://github.com/how-is/how_is/blob/master/README.md#ruby-api).
94
+ how_is follows [Readme Driven
95
+ Development](http://tom.preston-werner.com/2010/08/23/readme-driven-development.html) and, as such,
96
+ [README.md](https://github.com/how-is/how_is/blob/master/README.md) is
97
+ both the documentation and the specification.
data/exe/how_is CHANGED
@@ -18,16 +18,41 @@ opts = result[:opts]
18
18
  options = result[:options]
19
19
  arguments = result[:arguments]
20
20
 
21
+ if options[:help]
22
+ puts result[:opts]
23
+ exit
24
+ elsif options[:version]
25
+ puts HowIs::VERSION
26
+ exit
27
+ end
28
+
29
+ def save_files(reports)
30
+ reports.each do |file, report|
31
+ format = file.split('.').last
32
+
33
+ File.open(file, 'w') do |f|
34
+ f.write report.send("to_#{format}")
35
+ end
36
+ end
37
+ end
38
+
21
39
  begin
22
- if options[:help]
23
- puts result[:opts]
24
- elsif options[:version]
25
- puts HowIs::VERSION
26
- elsif options[:config]
27
- HowIs.from_config_file(YAML.load_file(options[:config]))
40
+ if options[:config]
41
+ reports = HowIs.from_config_file(YAML.load_file(options[:config]))
42
+
43
+ save_files(reports)
28
44
  else
29
- HowIs.generate_report_file(options)
45
+ report =
46
+ if options[:from]
47
+ json_report = File.open(options[:from]).read
48
+ HowIs.from_json(json_report)
49
+ else
50
+ HowIs.new(options[:repository])
51
+ end
52
+
53
+ save_files({ options[:report] => report })
30
54
  end
55
+
31
56
  rescue => e
32
57
  if ENV['SHOW_TRACE']
33
58
  raise
data/how_is.gemspec CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Ellen Marie Dash"]
10
10
  spec.email = ["me@duckie.co"]
11
11
 
12
- spec.summary = %q{Quantify the health of a GitHub repository is.}
13
- spec.homepage = "https://github.com/duckinator/how_is"
12
+ spec.summary = %q{Quantify the health of a GitHub repository.}
13
+ spec.homepage = "https://github.com/how-is/how_is"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -22,8 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.add_runtime_dependency "contracts", "~> 0.14.0"
23
23
  spec.add_runtime_dependency "slop", "~> 4.4.1"
24
24
 
25
- spec.add_runtime_dependency "rack", "~> 2.0"
26
-
27
25
  spec.add_runtime_dependency "tessellator-fetcher", "~> 5.0.0"
28
26
 
29
27
  spec.add_development_dependency "bundler", "~> 1.11"
@@ -21,7 +21,11 @@ class HowIs
21
21
  end
22
22
 
23
23
  ##
24
- # Generates and returns an analysis.
24
+ # Generates and returns an analysis.i
25
+ #
26
+ # @param data [Fetcher::Results] The results gathered by Fetcher.
27
+ # @param analysis_class (You don't need this.) A class to use instead of
28
+ # HowIs::Analysis.
25
29
  Contract Fetcher::Results, C::KeywordArgs[analysis_class: C::Optional[Class]] => Analysis
26
30
  def call(data, analysis_class: Analysis)
27
31
  issues = data.issues
@@ -53,10 +57,11 @@ class HowIs
53
57
  end
54
58
 
55
59
  ##
56
- # Generates an analysis from a JSON report.
57
- def self.from_json(json)
58
- hash = JSON.parse(json)
59
- hash = hash.map do |k, v|
60
+ # Generates an analysis from a hash of report data.
61
+ #
62
+ # @param data [Hash] The hash to generate an Analysis from.
63
+ def self.from_hash(data)
64
+ hash = data.map do |k, v|
60
65
  v = DateTime.parse(v) if k.end_with?('_date')
61
66
 
62
67
  [k, v]
data/lib/how_is/cli.rb CHANGED
@@ -1,20 +1,24 @@
1
- #!/usr/bin/env ruby
2
-
3
1
  require "how_is"
4
2
  require "slop"
5
3
 
6
4
  class HowIs::CLI
7
5
  DEFAULT_REPORT_FILE = "report.#{HowIs::DEFAULT_FORMAT}"
8
6
 
7
+ # Parent class of all exceptions raised in HowIs::CLI.
9
8
  class OptionsError < StandardError
10
9
  end
11
10
 
11
+ # Raised when the specified output file can't be used.
12
12
  class InvalidOutputFileError < OptionsError
13
13
  end
14
14
 
15
+ # Raised when the specified input file doesn't contain
16
+ # a valid JSON report.
15
17
  class InvalidInputFileError < OptionsError
16
18
  end
17
19
 
20
+ # Raised when no repository is specified, but one is required.
21
+ # (It's _not_ required, e.g., when +--config+ is passed.)
18
22
  class NoRepositoryError < OptionsError
19
23
  end
20
24
 
@@ -25,6 +29,8 @@ class HowIs::CLI
25
29
  # the library.
26
30
  def call(argv)
27
31
  opts = Slop::Options.new
32
+
33
+ # General usage information.
28
34
  opts.banner =
29
35
  <<-EOF.gsub(/ *\| ?/, '')
30
36
  | Usage: how_is REPOSITORY [--report REPORT_FILE] [--from JSON_FILE]
@@ -41,48 +47,64 @@ class HowIs::CLI
41
47
  opts.separator ""
42
48
  opts.separator "Options:"
43
49
 
50
+ # Allowed arguments:
44
51
  opts.bool "-h", "--help", "Print help text"
45
52
  opts.string "--config", "YAML config file, used to generate a group of reports"
46
53
  opts.string "--from", "JSON report file, used instead of fetching the data again"
47
54
  opts.string "--report", "output file for the report (valid extensions: #{HowIs.supported_formats.join(', ')}; default: #{DEFAULT_REPORT_FILE})"
48
55
  opts.bool "-v", "--version", "prints the version"
49
56
 
57
+ # Parse the arguments.
50
58
  parser = Slop::Parser.new(opts)
51
59
  result = parser.parse(argv)
60
+
61
+ # +options+ is a Hash of flags/values.
52
62
  options = result.to_hash
63
+ # +arguments+ is an Array of values that don't correspond to a flag.
53
64
  arguments = result.arguments
54
65
 
66
+ # If --report isn't specified, default to DEFAULT_REPORT_FILE.
55
67
  options[:report] ||= DEFAULT_REPORT_FILE
56
68
 
57
69
  # The following are only useful if they're not nil or false.
58
- # Removing them here simplifies contracts and keyword args for other APIs.
70
+ # Removing them here simplifies contracts and keyword args for
71
+ # other APIs.
59
72
  options.delete(:config) unless options[:config]
60
73
  options.delete(:help) unless options[:help]
61
74
  options.delete(:version) unless options[:version]
62
75
 
63
- # Raise an exception if the file can't be exported.
76
+ # If we can't export to the specified file, raise an exception.
64
77
  unless HowIs.can_export_to?(options[:report])
65
78
  raise InvalidOutputFileError, "Invalid file: #{options[:report_file]}. Supported formats: #{HowIs.supported_formats.join(', ')}"
66
79
  end
67
80
 
81
+ # If we pass --config, other options (excluding --help and
82
+ # --version) are ignored. As such, when --config is passed,
83
+ # everything in this `unless` block is irrelevant.
68
84
  unless options[:config]
69
- # If we pass --config, other options (excluding --help and --version)
70
- # are ignored. As such, everything in this `unless` block is irrelevant.
71
-
72
85
  if options[:from]
73
86
  raise InvalidInputFileError, "No such file: #{options[:from]}" unless File.file?(options[:from])
74
87
 
75
- # Opening the file here is a bit gross, but I couldn't find a better
76
- # way to do it. -@duckinator
77
- options[:repository] = JSON.parse(open(options[:from_file]).read)['repository']
88
+ # Opening the file here is a bit gross, but I couldn't find a
89
+ # better way to do it. -@duckinator
90
+ options[:repository] = JSON.parse(open(options[:from]).read)['repository']
91
+
78
92
  raise InvalidInputFileError, "Invalid JSON report file." unless options[:repository]
93
+
79
94
  elsif argv.length >= 1
80
95
  options[:repository] = argv.delete_at(0)
96
+
81
97
  else
82
98
  raise NoRepositoryError, "No repository specified."
83
99
  end
84
100
  end
85
101
 
102
+ # Return a Hash with:
103
+ # +opts+: the original Slop::Options object.
104
+ # +options+: the Hash of flags/values (e.g. +--foo bar+ becomes
105
+ # +options[:foo]+ with the value of +"bar"+).
106
+ # +arguments+: an Array of arguments that don't have a
107
+ # corresponding flags.
86
108
  {
87
109
  opts: opts,
88
110
  options: options,
data/lib/how_is/pulse.rb CHANGED
@@ -1,18 +1,23 @@
1
1
  require 'tessellator/fetcher'
2
2
 
3
3
  class HowIs
4
- # This entire class is a monstrous hack, because GitHub doesn't provide a good
5
- # API for Pulse.
4
+ # This entire class is a monstrous hack, because GitHub doesn't provide
5
+ # a good API for Pulse.
6
+ #
7
+ # TODO: Use GitHub's Statistics API to replace this garbage.
8
+ # See https://github.com/how-is/how_is/issues/122
6
9
  class Pulse
7
10
  def initialize(repository)
8
11
  @repository = repository
9
12
  @pulse_page_response = fetch_pulse!(repository)
10
13
  end
11
14
 
15
+ # This is probably dead code.
12
16
  def text_summary
13
17
  raise NotImplementedError
14
18
  end
15
19
 
20
+ # Gets the HTML Pulse summary.
16
21
  def html_summary
17
22
  parts =
18
23
  @pulse_page_response.body
@@ -30,6 +35,7 @@ class HowIs
30
35
  end
31
36
 
32
37
  private
38
+ # Fetch Pulse page from GitHub for scraping.
33
39
  def fetch_pulse!(repository, period='monthly')
34
40
  Tessellator::Fetcher.new.call('get', "https://github.com/#{repository}/pulse/#{period}")
35
41
  end
@@ -38,40 +38,62 @@ class HowIs
38
38
  @r
39
39
  end
40
40
 
41
+ # === Methods implemented by subclasses of BaseReport ===
41
42
 
42
-
43
+ ##
44
+ # Returns the format of report this class generates.
45
+ #
46
+ # @returns [Symbol] A lowercase symbol denoting the report format.
43
47
  def format
44
48
  raise NotImplementedError
45
49
  end
46
50
 
51
+ ##
52
+ # Appends a title to the report.
47
53
  def title(_text)
48
54
  raise NotImplementedError
49
55
  end
50
56
 
57
+ ##
58
+ # Appends a header to the report.
51
59
  def header(_text)
52
60
  raise NotImplementedError
53
61
  end
54
62
 
63
+ ##
64
+ # Appends a line of text to the report.
55
65
  def text(_text)
56
66
  raise NotImplementedError
57
67
  end
58
68
 
69
+ ##
70
+ # Appends a link to the report.
59
71
  def link(_text, url)
60
72
  raise NotImplementedError
61
73
  end
62
74
 
75
+ ##
76
+ # Appends an unordered list to the report.
63
77
  def unordered_list(arr)
64
78
  raise NotImplementedError
65
79
  end
66
80
 
81
+ ##
82
+ # Appends a horizontal bar graph to the report.
67
83
  def horizontal_bar_graph(data)
68
84
  raise NotImplementedError
69
85
  end
70
86
 
87
+ ##
88
+ # Exports the report as a String.
71
89
  def export
72
90
  raise NotImplementedError
73
91
  end
74
92
 
93
+ ##
94
+ # Exports a report to a file.
95
+ #
96
+ # NOTE: May be removed in the future.
75
97
  def export_file(file)
76
98
  raise NotImplementedError
77
99
  end
@@ -1,15 +1,28 @@
1
1
  require 'how_is/report/base_report'
2
2
 
3
3
  class HowIs
4
+ ##
5
+ # A JSON report.
4
6
  class JsonReport < BaseReport
7
+ # A JSON report is simply a JSON dump of the corresponding
8
+ # HowIs::Analysis instance.
9
+
10
+ ##
11
+ # The format of the report.
12
+ #
13
+ # @return [Symbol] The name of the format.
5
14
  def format
6
15
  :json
7
16
  end
8
17
 
18
+ ##
19
+ # Generates a report.
9
20
  def export
10
21
  to_json
11
22
  end
12
23
 
24
+ ##
25
+ # Generates a report and writes it to a file.
13
26
  def export_file(file)
14
27
  File.open(file, 'w') do |f|
15
28
  f.write export
@@ -1,3 +1,3 @@
1
1
  class HowIs
2
- VERSION = "17.0.0"
2
+ VERSION = "18.0.0"
3
3
  end
data/lib/how_is.rb CHANGED
@@ -16,36 +16,65 @@ class HowIs
16
16
  DEFAULT_FORMAT = :html
17
17
 
18
18
  ##
19
- # Generate a report file.
20
- def self.generate_report_file(report:, **kw_args)
21
- analysis = self.generate_analysis(**kw_args)
22
-
23
- Report.export_file(analysis, report)
24
- end
25
-
26
- ##
27
- # Generates and returns a report as a String.
19
+ # Generate a HowIs instance, so you can generate reports.
20
+ #
21
+ # @param repository [String] The name of a GitHub repository (of the
22
+ # format <user or organization>/<repository>).
23
+ # @param analysis [HowIs::Analysis] Optional; if passed, this Analysis
24
+ # object is used instead of generating one.
28
25
  def initialize(repository, analysis = nil, **kw_args)
26
+ # If no Analysis is passed, generate one.
29
27
  analysis ||= HowIs.generate_analysis(repository: repository, **kw_args)
28
+
29
+ # Used by to_html, to_json, etc.
30
30
  @analysis = analysis
31
31
  end
32
32
 
33
+ ##
34
+ # Generate an HTML report.
35
+ #
36
+ # @returns [String] An HTML report.
33
37
  def to_html
34
38
  Report.export(@analysis, :html)
35
39
  end
36
40
 
41
+ ##
42
+ # Generate a JSON report.
43
+ #
44
+ # @returns [String] A JSON report.
37
45
  def to_json
38
46
  Report.export(@analysis, :json)
39
47
  end
40
48
 
49
+ ##
50
+ # Given a JSON report, create a new HowIs object (for generating other
51
+ # reports).
52
+ #
53
+ # @param json [String] A JSON report object.
54
+ # @returns [HowIs] A HowIs object that can be used for generating other
55
+ # reports, treating the JSON report as a cache.
41
56
  def self.from_json(json)
42
- analysis = HowIs::Analyzer.from_json(json)
57
+ self.from_hash(JSON.parse(json))
58
+ end
59
+
60
+ ##
61
+ # Given report data as a hash, create a new HowIs object (for generating
62
+ # other reports).
63
+ #
64
+ # @param data [Hash] A hash containing report data.
65
+ # @returns [HowIs] A HowIs object that can be used for generating other
66
+ # reports, treating the provided report data as a cache.
67
+ def self.from_hash(data)
68
+ analysis = HowIs::Analyzer.from_hash(data)
43
69
 
44
70
  self.new(analysis.repository, analysis)
45
71
  end
46
72
 
47
73
  ##
48
74
  # Returns a list of possible export formats.
75
+ #
76
+ # @returns [Array<String>] An array of the types of reports you can
77
+ # generate.
49
78
  def self.supported_formats
50
79
  report_constants = HowIs.constants.grep(/.Report/) - [:BaseReport]
51
80
  report_constants.map {|x| x.to_s.split('Report').first.downcase }
@@ -53,28 +82,27 @@ class HowIs
53
82
 
54
83
  ##
55
84
  # Returns whether or not the specified +file+ can be exported to.
85
+ #
86
+ # @param file [String] A filename.
87
+ # @returns [Boolean] +true+ if HowIs can export to the file, +false+
88
+ # if it can't.
56
89
  def self.can_export_to?(file)
57
90
  # TODO: Check if the file is writable?
58
91
  supported_formats.include?(file.split('.').last)
59
92
  end
60
93
 
61
- # Generate an analysis. Used internally for generate_report{,_file}.
94
+ # Generate an analysis.
95
+ # TODO: This may make more sense as Analysis.new().
62
96
  Contract C::KeywordArgs[repository: String,
63
- from: C::Optional[C::Or[String, nil]],
64
97
  fetcher: C::Optional[Class],
65
98
  analyzer: C::Optional[Class],
66
99
  github: C::Optional[C::Any]] => C::Any
67
100
  def self.generate_analysis(repository:,
68
- from: nil,
69
101
  fetcher: Fetcher.new,
70
102
  analyzer: Analyzer.new,
71
103
  github: nil)
72
- if from
73
- analysis = analyzer.from_file(from)
74
- else
75
- raw_data = fetcher.call(repository, github)
76
- analysis = analyzer.call(raw_data)
77
- end
104
+ raw_data = fetcher.call(repository, github)
105
+ analysis = analyzer.call(raw_data)
78
106
 
79
107
  analysis
80
108
  end
@@ -101,6 +129,13 @@ class HowIs
101
129
 
102
130
  ##
103
131
  # Generates a series of report files based on a config Hash.
132
+ #
133
+ # @param config [Hash] A Hash specifying the formats, locations, etc
134
+ # of the reports to generate.
135
+ # @param github (You don't need this.) An object to replace the GitHub
136
+ # class when fetching data.
137
+ # @param report_class (You don't need this.) An object to replace the
138
+ # HowIs::Report class when generating reports.
104
139
  def self.from_config(config,
105
140
  github: nil,
106
141
  report_class: nil)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: how_is
3
3
  version: !ruby/object:Gem::Version
4
- version: 17.0.0
4
+ version: 18.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ellen Marie Dash
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-09 00:00:00.000000000 Z
11
+ date: 2017-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: github_api
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 4.4.1
55
- - !ruby/object:Gem::Dependency
56
- name: rack
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: tessellator-fetcher
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -203,7 +189,7 @@ files:
203
189
  - lib/how_is/report/json.rb
204
190
  - lib/how_is/version.rb
205
191
  - roadmap.markdown
206
- homepage: https://github.com/duckinator/how_is
192
+ homepage: https://github.com/how-is/how_is
207
193
  licenses:
208
194
  - MIT
209
195
  metadata: {}
@@ -223,8 +209,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
209
  version: '0'
224
210
  requirements: []
225
211
  rubyforge_project:
226
- rubygems_version: 2.5.2
212
+ rubygems_version: 2.4.5.2
227
213
  signing_key:
228
214
  specification_version: 4
229
- summary: Quantify the health of a GitHub repository is.
215
+ summary: Quantify the health of a GitHub repository.
230
216
  test_files: []