how_is 17.0.0 → 18.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.
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: []