how_is 18.1.0 → 19.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: 12f40c2d14b7dbee11526ad2f15bd79ad3a40098
4
- data.tar.gz: 2a6af70ce9d9b881c4ad31fde73b9c7558e78023
3
+ metadata.gz: 179757abf82f4dd4e9b214d5f128c5ebd81d0ff0
4
+ data.tar.gz: d252caf2ae299e2a88c6491e228e06589561e404
5
5
  SHA512:
6
- metadata.gz: ba87d6976df416f2be30c93023ef7082c7d815a8cd90a475dcca11041b296c263d547b3176c4ef57700ad19defef13c7377cadc2e18079e5a92cdd91ce0d57b7
7
- data.tar.gz: 1b699cce4a95ed0bc1bbd946b8728c53c85393bf069ecdb7099955d8662cc97812b7d2704636e6f3a171d7b6f0cba4fdf24d33097beaa068247fd8b6c1d44096
6
+ metadata.gz: 4ff22d8943d1b5f051bec0ce43901cacf39848aa0331b534390f9d9ffd033bb1134bc419ec1729257ce094a0fbe6a032d52a76cb0981460edf2ec33dbf4fb766
7
+ data.tar.gz: e09adb9c29bb218b750cdda73c0fd8f3f01439ebfa0dbfe8bdc8f6caee7ad32064fd4dc1f1d1fe47e64cb1b741443c229ee9a2d049ceef55f126b7176a3fa7fb
data/.codeclimate.yml ADDED
@@ -0,0 +1,22 @@
1
+ ---
2
+ engines:
3
+ bundler-audit:
4
+ enabled: false
5
+ duplication:
6
+ enabled: true
7
+ config:
8
+ languages:
9
+ - ruby
10
+ fixme:
11
+ enabled: true
12
+ rubocop:
13
+ enabled: true
14
+ channel: rubocop-0-49
15
+ ratings:
16
+ paths:
17
+ - Gemfile.lock
18
+ - "**.rb"
19
+ exclude_paths:
20
+ - spec/
21
+ - ".bundle/"
22
+ - vendor/
data/CHANGELOG.md CHANGED
@@ -1,10 +1,33 @@
1
1
  # Change Log
2
2
 
3
+ ## [19.0.0](https://github.com/how-is/how_is/tree/19.0.0) (2017-09-15)
4
+ [Full Changelog](https://github.com/how-is/how_is/compare/v18.1.0...19.0.0)
5
+
6
+ **Closed issues:**
7
+
8
+ - move away from slop bc of conflicts [\#202](https://github.com/how-is/how_is/issues/202)
9
+ - Contributions: look up default\_branch in GitHub API [\#195](https://github.com/how-is/how_is/issues/195)
10
+ - Only enable VCR when used [\#185](https://github.com/how-is/how_is/issues/185)
11
+
12
+ **Merged pull requests:**
13
+
14
+ - Move away from slop [\#205](https://github.com/how-is/how_is/pull/205) ([duckinator](https://github.com/duckinator))
15
+ - add .codeclimate.yml [\#204](https://github.com/how-is/how_is/pull/204) ([duckinator](https://github.com/duckinator))
16
+ - quick refactor of spec/capture\_warnings. [\#203](https://github.com/how-is/how_is/pull/203) ([duckinator](https://github.com/duckinator))
17
+ - \[docs\] YARD annotation for example [\#201](https://github.com/how-is/how_is/pull/201) ([olleolleolle](https://github.com/olleolleolle))
18
+ - Refactor: introduce pretty\_date\(date\) [\#199](https://github.com/how-is/how_is/pull/199) ([olleolleolle](https://github.com/olleolleolle))
19
+ - update VCR fixture [\#197](https://github.com/how-is/how_is/pull/197) ([duckinator](https://github.com/duckinator))
20
+ - Contributions: default\_branch fetching [\#196](https://github.com/how-is/how_is/pull/196) ([olleolleolle](https://github.com/olleolleolle))
21
+ - update tessellator-fetcher to ~\>5.0.2 [\#193](https://github.com/how-is/how_is/pull/193) ([duckinator](https://github.com/duckinator))
22
+ - Builds: a Travis CI API fetcher [\#192](https://github.com/how-is/how_is/pull/192) ([olleolleolle](https://github.com/olleolleolle))
23
+ - Contributions: YARD docblock type typo; typos [\#191](https://github.com/how-is/how_is/pull/191) ([olleolleolle](https://github.com/olleolleolle))
24
+
3
25
  ## [v18.1.0](https://github.com/how-is/how_is/tree/v18.1.0) (2017-08-06)
4
26
  [Full Changelog](https://github.com/how-is/how_is/compare/v18.0.5...v18.1.0)
5
27
 
6
28
  **Merged pull requests:**
7
29
 
30
+ - bump version -- 18.1.0 [\#190](https://github.com/how-is/how_is/pull/190) ([duckinator](https://github.com/duckinator))
8
31
  - Replace Pulse scraping with API calls [\#187](https://github.com/how-is/how_is/pull/187) ([duckinator](https://github.com/duckinator))
9
32
 
10
33
  ## [v18.0.5](https://github.com/how-is/how_is/tree/v18.0.5) (2017-08-06)
data/Rakefile CHANGED
@@ -87,3 +87,14 @@ task :new_contributors, [:user, :repo, :start_date] => [] do |_t, args|
87
87
  puts contributions.summary
88
88
  puts contributions.new_contributors
89
89
  end
90
+
91
+ desc "Display duration of latest CI build. CI builds supported include Travis."
92
+ task :test_execution_time, [:user, :repo] => [] do |_t, args|
93
+ require "how_is/builds"
94
+ user = args[:user] || "how-is"
95
+ repo = args[:repo] || "how_is"
96
+ builds = HowIs::Builds.new(user: user, repo: repo)
97
+
98
+ puts "Test execution information:"
99
+ puts builds.summary
100
+ end
@@ -0,0 +1,165 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://api.travis-ci.org/repos/how-is/how_is/builds?event_type=push
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - application/vnd.travis-ci.2+json
14
+ User-Agent:
15
+ - TessellatorFetcher/v5.0.1
16
+ Host:
17
+ - api.travis-ci.org
18
+ response:
19
+ status:
20
+ code: 301
21
+ message: Moved Permanently
22
+ headers:
23
+ Connection:
24
+ - keep-alive
25
+ Server:
26
+ - nginx
27
+ Date:
28
+ - Sun, 06 Aug 2017 19:19:39 GMT
29
+ Content-Type:
30
+ - text/html
31
+ Content-Length:
32
+ - '0'
33
+ Access-Control-Allow-Origin:
34
+ - "*"
35
+ Access-Control-Allow-Credentials:
36
+ - 'true'
37
+ Access-Control-Expose-Headers:
38
+ - Content-Type, Cache-Control, Expires, Etag, Last-Modified
39
+ Location:
40
+ - https://api.travis-ci.org/repos/how-is/how_is/builds?event_type=push
41
+ X-Request-Id:
42
+ - 10b0ed57-ec0e-48c2-ba64-6d89e18d6ca1
43
+ Via:
44
+ - 1.1 vegur
45
+ body:
46
+ encoding: UTF-8
47
+ string: ''
48
+ http_version:
49
+ recorded_at: Sun, 06 Aug 2017 19:19:39 GMT
50
+ - request:
51
+ method: get
52
+ uri: https://api.travis-ci.org/repos/how-is/how_is/builds?event_type=push
53
+ body:
54
+ encoding: US-ASCII
55
+ string: ''
56
+ headers:
57
+ Accept-Encoding:
58
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
59
+ Accept:
60
+ - application/vnd.travis-ci.2+json
61
+ User-Agent:
62
+ - TessellatorFetcher/v5.0.1
63
+ Host:
64
+ - api.travis-ci.org
65
+ response:
66
+ status:
67
+ code: 200
68
+ message: OK
69
+ headers:
70
+ Connection:
71
+ - keep-alive
72
+ Server:
73
+ - nginx
74
+ Date:
75
+ - Sun, 06 Aug 2017 19:20:42 GMT
76
+ Content-Type:
77
+ - application/json;charset=utf-8
78
+ Transfer-Encoding:
79
+ - chunked
80
+ Access-Control-Allow-Origin:
81
+ - "*"
82
+ Access-Control-Allow-Credentials:
83
+ - 'true'
84
+ Access-Control-Expose-Headers:
85
+ - Content-Type, Cache-Control, Expires, Etag, Last-Modified
86
+ Strict-Transport-Security:
87
+ - max-age=31536000
88
+ X-Endpoint:
89
+ - Travis::Api::App::Endpoint::Repos
90
+ X-Pattern:
91
+ - "/:owner_name/:name/builds"
92
+ X-Oauth-Scopes:
93
+ - public
94
+ X-Accepted-Oauth-Scopes:
95
+ - public
96
+ Vary:
97
+ - Accept,Accept-Encoding
98
+ Cache-Control:
99
+ - no-cache
100
+ X-Rack-Cache:
101
+ - miss
102
+ X-Request-Id:
103
+ - ccc7b2b7-9214-42eb-8203-ab4b1783d7ff
104
+ Via:
105
+ - 1.1 vegur
106
+ body:
107
+ encoding: ASCII-8BIT
108
+ string: '{"builds":[{"id":261544542,"repository_id":8014235,"commit_id":76060199,"number":"594","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T14:56:07Z","finished_at":"2017-08-06T14:57:18Z","duration":137,"job_ids":[261544543,261544544]},{"id":261544463,"repository_id":8014235,"commit_id":76060169,"number":"593","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T14:55:34Z","finished_at":"2017-08-06T14:56:46Z","duration":138,"job_ids":[261544464,261544465]},{"id":261543823,"repository_id":8014235,"commit_id":76059955,"number":"591","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T14:51:49Z","finished_at":"2017-08-06T14:53:57Z","duration":203,"job_ids":[261543824,261543825]},{"id":261542619,"repository_id":8014235,"commit_id":76059595,"number":"590","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T14:45:38Z","finished_at":"2017-08-06T14:47:27Z","duration":181,"job_ids":[261542620,261542621]},{"id":261541975,"repository_id":8014235,"commit_id":76059412,"number":"588","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T14:42:39Z","finished_at":"2017-08-06T14:45:18Z","duration":220,"job_ids":[261541976,261541977]},{"id":261541831,"repository_id":8014235,"commit_id":76059360,"number":"586","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T14:41:33Z","finished_at":"2017-08-06T14:42:58Z","duration":157,"job_ids":[261541832,261541833]},{"id":261540169,"repository_id":8014235,"commit_id":76058893,"number":"584","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"failed","started_at":"2017-08-06T14:34:55Z","finished_at":"2017-08-06T14:37:05Z","duration":247,"job_ids":[261540170,261540171]},{"id":261539470,"repository_id":8014235,"commit_id":76058657,"number":"583","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"failed","started_at":"2017-08-06T14:30:55Z","finished_at":"2017-08-06T14:32:10Z","duration":143,"job_ids":[261539471,261539472]},{"id":261538934,"repository_id":8014235,"commit_id":76058517,"number":"580","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"failed","started_at":"2017-08-06T14:28:24Z","finished_at":"2017-08-06T14:29:47Z","duration":160,"job_ids":[261538935,261538936]},{"id":261538363,"repository_id":8014235,"commit_id":76058330,"number":"578","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"failed","started_at":"2017-08-06T14:24:52Z","finished_at":"2017-08-06T14:27:08Z","duration":203,"job_ids":[261538364,261538365]},{"id":261525512,"repository_id":8014235,"commit_id":76054257,"number":"576","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T13:14:14Z","finished_at":"2017-08-06T13:16:27Z","duration":259,"job_ids":[261525513,261525514]},{"id":261517523,"repository_id":8014235,"commit_id":76051565,"number":"575","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T12:25:48Z","finished_at":"2017-08-06T12:27:03Z","duration":144,"job_ids":[261517524,261517525]},{"id":261517503,"repository_id":8014235,"commit_id":76051555,"number":"574","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T12:25:32Z","finished_at":"2017-08-06T12:27:20Z","duration":178,"job_ids":[261517504,261517505]},{"id":261514987,"repository_id":8014235,"commit_id":76050771,"number":"571","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T12:10:31Z","finished_at":"2017-08-06T12:12:16Z","duration":188,"job_ids":[261514988,261514989]},{"id":261513254,"repository_id":8014235,"commit_id":76050220,"number":"570","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T12:00:41Z","finished_at":"2017-08-06T12:04:12Z","duration":269,"job_ids":[261513255,261513256]},{"id":261482578,"repository_id":8014235,"commit_id":76039974,"number":"569","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T08:40:46Z","finished_at":"2017-08-06T08:42:30Z","duration":143,"job_ids":[261482579,261482580]},{"id":261457931,"repository_id":8014235,"commit_id":76032205,"number":"567","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-06T05:25:31Z","finished_at":"2017-08-06T05:26:36Z","duration":127,"job_ids":[261457932,261457933]},{"id":261399424,"repository_id":8014235,"commit_id":76015649,"number":"566","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-08-05T21:22:52Z","finished_at":"2017-08-05T21:24:24Z","duration":163,"job_ids":[261399425,261399426]},{"id":257049384,"repository_id":8014235,"commit_id":74727936,"number":"551","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-07-24T20:29:15Z","finished_at":"2017-07-24T20:30:24Z","duration":133,"job_ids":[257049385,257049386]},{"id":257047944,"repository_id":8014235,"commit_id":74727483,"number":"549","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-07-24T20:25:37Z","finished_at":"2017-07-24T20:27:42Z","duration":189,"job_ids":[257047946,257047948]},{"id":257044081,"repository_id":8014235,"commit_id":74726378,"number":"548","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-07-24T20:15:30Z","finished_at":"2017-07-24T20:17:19Z","duration":208,"job_ids":[257044082,257044083]},{"id":254221687,"repository_id":8014235,"commit_id":73884312,"number":"544","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-07-16T19:43:21Z","finished_at":"2017-07-16T19:45:15Z","duration":164,"job_ids":[254221688,254221689]},{"id":254221003,"repository_id":8014235,"commit_id":73884104,"number":"542","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-07-16T19:40:11Z","finished_at":"2017-07-16T19:42:04Z","duration":224,"job_ids":[254221004,254221005]},{"id":254178194,"repository_id":8014235,"commit_id":73871523,"number":"532","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-07-16T16:24:08Z","finished_at":"2017-07-16T16:25:44Z","duration":161,"job_ids":[254178195,254178196]},{"id":254177271,"repository_id":8014235,"commit_id":73871232,"number":"529","event_type":"push","pull_request":false,"pull_request_title":null,"pull_request_number":null,"config":{"language":"ruby","rvm":["2.3.3","2.4.1"],".result":"configured","group":"stable","dist":"precise"},"state":"passed","started_at":"2017-07-16T16:19:33Z","finished_at":"2017-07-16T16:21:34Z","duration":218,"job_ids":[254177272,254177273]}],"commits":[{"id":76060199,"sha":"5d148159a2d5e64f817cc0a844f5be8cd3b586ff","branch":"v18.1.0","message":"Merge
109
+ pull request #190 from how-is/new-release\n\nbump version -- 18.1.0","committed_at":null,"author_name":"Ellen
110
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/v18.1.0","pull_request_number":null},{"id":76060169,"sha":"5d148159a2d5e64f817cc0a844f5be8cd3b586ff","branch":"master","message":"Merge
111
+ pull request #190 from how-is/new-release\n\nbump version -- 18.1.0","committed_at":"2017-08-06T14:55:30Z","author_name":"Ellen
112
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/591a16aa48ec...5d148159a2d5","pull_request_number":null},{"id":76059955,"sha":"407f8d59d932ffa868cedf9a745bcaa767db38af","branch":"new-release","message":"bump
113
+ version -- 18.1.0","committed_at":"2017-08-06T14:51:36Z","author_name":"Ellen
114
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/commit/407f8d59d932","pull_request_number":null},{"id":76059595,"sha":"591a16aa48ec4000b40391d0c0970722c576d7f1","branch":"master","message":"Merge
115
+ pull request #187 from how-is/replace-pulse-with-api-calls\n\n[WIP] Replace
116
+ Pulse scraping with API calls","committed_at":"2017-08-06T14:45:31Z","author_name":"Ellen
117
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/25d9cafea1ba...591a16aa48ec","pull_request_number":null},{"id":76059412,"sha":"9869738c7a0f591212f2f0e1f1fb4a3897b57c3d","branch":"replace-pulse-with-api-calls","message":"follow
118
+ rubocop style guide","committed_at":"2017-08-06T14:42:04Z","author_name":"Ellen
119
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/compare/3e4b53fa3a99...9869738c7a0f","pull_request_number":null},{"id":76059360,"sha":"3e4b53fa3a993fa2b13143ec037d7d8b1455e6c5","branch":"replace-pulse-with-api-calls","message":"fix
120
+ warning","committed_at":"2017-08-06T14:41:10Z","author_name":"Ellen Marie
121
+ Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/compare/8a7efd57b650...3e4b53fa3a99","pull_request_number":null},{"id":76058893,"sha":"8a7efd57b650065685bd43faccb9ce8d2b5e68e4","branch":"replace-pulse-with-api-calls","message":"remove
122
+ unneccessary comment","committed_at":"2017-08-06T14:34:48Z","author_name":"Ellen
123
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/compare/6ac661226c15...8a7efd57b650","pull_request_number":null},{"id":76058657,"sha":"6ac661226c159260056c619fd582188a676c0a63","branch":"replace-pulse-with-api-calls","message":"misc
124
+ cleanup","committed_at":"2017-08-06T14:29:31Z","author_name":"Ellen Marie
125
+ Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/compare/ae42b759f810...6ac661226c15","pull_request_number":null},{"id":76058517,"sha":"ae42b759f810af9db4fe02fb90a61273865af569","branch":"replace-pulse-with-api-calls","message":"^.^","committed_at":"2017-08-06T14:28:18Z","author_name":"Ellen
126
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/compare/e73594a7477e...ae42b759f810","pull_request_number":null},{"id":76058330,"sha":"e73594a7477e27662b27f5cc1d4e632c704a9993","branch":"replace-pulse-with-api-calls","message":"WOOOOOOOOO","committed_at":"2017-08-06T14:24:44Z","author_name":"Ellen
127
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/compare/d714b771a1fd...e73594a7477e","pull_request_number":null},{"id":76054257,"sha":"d714b771a1fde5a5e615f3b1e15c4fb7038fbb00","branch":"replace-pulse-with-api-calls","message":"fix
128
+ Rakefile, handle authentication.","committed_at":"2017-08-06T13:13:03Z","author_name":"Ellen
129
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/compare/8074b4861928...d714b771a1fd","pull_request_number":null},{"id":76051565,"sha":"25d9cafea1ba25f114f6bcaabb18974fd745a4d3","branch":"v18.0.5","message":"Merge
130
+ pull request #188 from how-is/new-release\n\nversion bump -- v18.0.5","committed_at":null,"author_name":"Ellen
131
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/v18.0.5","pull_request_number":null},{"id":76051555,"sha":"25d9cafea1ba25f114f6bcaabb18974fd745a4d3","branch":"master","message":"Merge
132
+ pull request #188 from how-is/new-release\n\nversion bump -- v18.0.5","committed_at":"2017-08-06T12:25:28Z","author_name":"Ellen
133
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/406d29d0d78e...25d9cafea1ba","pull_request_number":null},{"id":76050771,"sha":"54ddc4564208b271764c64019d521b23f0350e43","branch":"new-release","message":"version
134
+ bump -- v18.0.5","committed_at":"2017-08-06T12:10:22Z","author_name":"Ellen
135
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/commit/54ddc4564208","pull_request_number":null},{"id":76050220,"sha":"8074b48619283f9dc124401bf5b336e78bc15eb4","branch":"replace-pulse-with-api-calls","message":"beginning
136
+ of work on replacing Pulse","committed_at":"2017-08-06T12:00:29Z","author_name":"Ellen
137
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/commit/8074b4861928","pull_request_number":null},{"id":76039974,"sha":"406d29d0d78e3e8bf930c18ee779aca3c70f462c","branch":"master","message":"Merge
138
+ pull request #186 from how-is/ignore-gemfile-lock\n\nre-add Gemfile.lock to
139
+ .gitignore","committed_at":"2017-08-06T08:40:37Z","author_name":"Ellen Marie
140
+ Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/7ab3658ef795...406d29d0d78e","pull_request_number":null},{"id":76032205,"sha":"8b676f7d2d501385c4e533cb428d800e90c8fa85","branch":"ignore-gemfile-lock","message":"re-add
141
+ Gemfile.lock to .gitignore","committed_at":"2017-08-06T05:25:18Z","author_name":"Ellen
142
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/commit/8b676f7d2d50","pull_request_number":null},{"id":76015649,"sha":"7ab3658ef795581837d5a2a38f830566cd3d1901","branch":"master","message":"Merge
143
+ pull request #184 from olleolleolle/feature/track-new-contributors\n\nList
144
+ new contributors during period","committed_at":"2017-08-05T21:22:47Z","author_name":"Ellen
145
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/6baf9704252e...7ab3658ef795","pull_request_number":null},{"id":74727936,"sha":"6baf9704252e08989c6119f0d9b5fd931bf7a1e2","branch":"master","message":"Merge
146
+ pull request #183 from how-is/remove-gemfile-lock\n\nRemove Gemfile.lock.","committed_at":"2017-07-24T20:29:09Z","author_name":"Ellen
147
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/d22d6fa70b0d...6baf9704252e","pull_request_number":null},{"id":74727483,"sha":"2549a25b5a2eea47623c31c2101fc2d7c57119e5","branch":"remove-gemfile-lock","message":"Remove
148
+ Gemfile.lock.\n\nSee: http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/","committed_at":"2017-07-24T20:23:53Z","author_name":"Ellen
149
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/commit/2549a25b5a2e","pull_request_number":null},{"id":74726378,"sha":"d22d6fa70b0d952cf16c538498752659b97bfa3c","branch":"master","message":"Merge
150
+ pull request #182 from olleolleolle/fix/pr-180-replacement\n\nGemfile: add
151
+ pry as Git dep","committed_at":"2017-07-24T20:15:24Z","author_name":"Ellen
152
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/7402d28c9a5c...d22d6fa70b0d","pull_request_number":null},{"id":73884312,"sha":"7402d28c9a5c99d00d6d7d7864ddde0d1ed839f4","branch":"master","message":"Merge
153
+ pull request #179 from olleolleolle/fix/params-file-for-github_changelog_generator\n\nAdd
154
+ config file for github_changelog_generator","committed_at":"2017-07-16T19:43:14Z","author_name":"Ellen
155
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/d2311beacc83...7402d28c9a5c","pull_request_number":null},{"id":73884104,"sha":"d2311beacc8380e7f7c3ca37180ba5deb7ed9181","branch":"master","message":"Merge
156
+ pull request #178 from olleolleolle/fix/rubocop-warnings\n\nRuboCop linting","committed_at":"2017-07-16T19:40:05Z","author_name":"Ellen
157
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/50a9b616043f...d2311beacc83","pull_request_number":null},{"id":73871523,"sha":"50a9b616043fdadfcb262d68c5be32bb5f350c5d","branch":"master","message":"Merge
158
+ pull request #177 from how-is/changelog-stuff\n\nUse github_changelog_generator
159
+ for generating the changelog.","committed_at":"2017-07-16T16:23:56Z","author_name":"Ellen
160
+ Marie Dash","author_email":"the@smallest.dog","committer_name":"GitHub","committer_email":"noreply@github.com","compare_url":"https://github.com/how-is/how_is/compare/b4a24011f4c9...50a9b616043f","pull_request_number":null},{"id":73871232,"sha":"27b252d3625d198ded7dee32a86387a8ec613588","branch":"changelog-stuff","message":"Use
161
+ github_changelog_generator for generating the changelog!","committed_at":"2017-07-16T16:19:20Z","author_name":"Ellen
162
+ Marie Dash","author_email":"me@duckie.co","committer_name":"Ellen Marie Dash","committer_email":"me@duckie.co","compare_url":"https://github.com/how-is/how_is/commit/27b252d3625d","pull_request_number":null}]}'
163
+ http_version:
164
+ recorded_at: Sun, 06 Aug 2017 19:20:42 GMT
165
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,151 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.github.com/repos/how-is/how_is
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1
12
+ Accept-Charset:
13
+ - utf-8
14
+ User-Agent:
15
+ - Github API Ruby Gem 0.17.0
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - GitHub.com
25
+ Date:
26
+ - Thu, 10 Aug 2017 20:59:50 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Status:
32
+ - 200 OK
33
+ X-Ratelimit-Limit:
34
+ - '60'
35
+ X-Ratelimit-Remaining:
36
+ - '59'
37
+ X-Ratelimit-Reset:
38
+ - '1502402390'
39
+ Cache-Control:
40
+ - public, max-age=60, s-maxage=60
41
+ Vary:
42
+ - Accept
43
+ Etag:
44
+ - W/"5a8e2fe83bdc6bf80131eb88c2cc2ddb"
45
+ Last-Modified:
46
+ - Thu, 15 Jun 2017 21:46:29 GMT
47
+ X-Github-Media-Type:
48
+ - github.v3; format=json
49
+ Access-Control-Expose-Headers:
50
+ - ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
51
+ X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
52
+ Access-Control-Allow-Origin:
53
+ - "*"
54
+ Content-Security-Policy:
55
+ - default-src 'none'
56
+ Strict-Transport-Security:
57
+ - max-age=31536000; includeSubdomains; preload
58
+ X-Content-Type-Options:
59
+ - nosniff
60
+ X-Frame-Options:
61
+ - deny
62
+ X-Xss-Protection:
63
+ - 1; mode=block
64
+ X-Runtime-Rack:
65
+ - '0.028766'
66
+ X-Github-Request-Id:
67
+ - CB49:5C59:4C6E84:A743C3:598CC946
68
+ body:
69
+ encoding: ASCII-8BIT
70
+ string: '{"id":54295243,"name":"how_is","full_name":"how-is/how_is","owner":{"login":"how-is","id":20577802,"avatar_url":"https://avatars0.githubusercontent.com/u/20577802?v=4","gravatar_id":"","url":"https://api.github.com/users/how-is","html_url":"https://github.com/how-is","followers_url":"https://api.github.com/users/how-is/followers","following_url":"https://api.github.com/users/how-is/following{/other_user}","gists_url":"https://api.github.com/users/how-is/gists{/gist_id}","starred_url":"https://api.github.com/users/how-is/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/how-is/subscriptions","organizations_url":"https://api.github.com/users/how-is/orgs","repos_url":"https://api.github.com/users/how-is/repos","events_url":"https://api.github.com/users/how-is/events{/privacy}","received_events_url":"https://api.github.com/users/how-is/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/how-is/how_is","description":"A
71
+ gem that explains the state of a GitHub repository.","fork":false,"url":"https://api.github.com/repos/how-is/how_is","forks_url":"https://api.github.com/repos/how-is/how_is/forks","keys_url":"https://api.github.com/repos/how-is/how_is/keys{/key_id}","collaborators_url":"https://api.github.com/repos/how-is/how_is/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/how-is/how_is/teams","hooks_url":"https://api.github.com/repos/how-is/how_is/hooks","issue_events_url":"https://api.github.com/repos/how-is/how_is/issues/events{/number}","events_url":"https://api.github.com/repos/how-is/how_is/events","assignees_url":"https://api.github.com/repos/how-is/how_is/assignees{/user}","branches_url":"https://api.github.com/repos/how-is/how_is/branches{/branch}","tags_url":"https://api.github.com/repos/how-is/how_is/tags","blobs_url":"https://api.github.com/repos/how-is/how_is/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/how-is/how_is/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/how-is/how_is/git/refs{/sha}","trees_url":"https://api.github.com/repos/how-is/how_is/git/trees{/sha}","statuses_url":"https://api.github.com/repos/how-is/how_is/statuses/{sha}","languages_url":"https://api.github.com/repos/how-is/how_is/languages","stargazers_url":"https://api.github.com/repos/how-is/how_is/stargazers","contributors_url":"https://api.github.com/repos/how-is/how_is/contributors","subscribers_url":"https://api.github.com/repos/how-is/how_is/subscribers","subscription_url":"https://api.github.com/repos/how-is/how_is/subscription","commits_url":"https://api.github.com/repos/how-is/how_is/commits{/sha}","git_commits_url":"https://api.github.com/repos/how-is/how_is/git/commits{/sha}","comments_url":"https://api.github.com/repos/how-is/how_is/comments{/number}","issue_comment_url":"https://api.github.com/repos/how-is/how_is/issues/comments{/number}","contents_url":"https://api.github.com/repos/how-is/how_is/contents/{+path}","compare_url":"https://api.github.com/repos/how-is/how_is/compare/{base}...{head}","merges_url":"https://api.github.com/repos/how-is/how_is/merges","archive_url":"https://api.github.com/repos/how-is/how_is/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/how-is/how_is/downloads","issues_url":"https://api.github.com/repos/how-is/how_is/issues{/number}","pulls_url":"https://api.github.com/repos/how-is/how_is/pulls{/number}","milestones_url":"https://api.github.com/repos/how-is/how_is/milestones{/number}","notifications_url":"https://api.github.com/repos/how-is/how_is/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/how-is/how_is/labels{/name}","releases_url":"https://api.github.com/repos/how-is/how_is/releases{/id}","deployments_url":"https://api.github.com/repos/how-is/how_is/deployments","created_at":"2016-03-20T01:37:02Z","updated_at":"2017-06-15T21:46:29Z","pushed_at":"2017-08-09T07:51:43Z","git_url":"git://github.com/how-is/how_is.git","ssh_url":"git@github.com:how-is/how_is.git","clone_url":"https://github.com/how-is/how_is.git","svn_url":"https://github.com/how-is/how_is","homepage":"","size":1353,"stargazers_count":27,"watchers_count":27,"language":"Ruby","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":20,"forks":5,"open_issues":20,"watchers":27,"default_branch":"master","organization":{"login":"how-is","id":20577802,"avatar_url":"https://avatars0.githubusercontent.com/u/20577802?v=4","gravatar_id":"","url":"https://api.github.com/users/how-is","html_url":"https://github.com/how-is","followers_url":"https://api.github.com/users/how-is/followers","following_url":"https://api.github.com/users/how-is/following{/other_user}","gists_url":"https://api.github.com/users/how-is/gists{/gist_id}","starred_url":"https://api.github.com/users/how-is/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/how-is/subscriptions","organizations_url":"https://api.github.com/users/how-is/orgs","repos_url":"https://api.github.com/users/how-is/repos","events_url":"https://api.github.com/users/how-is/events{/privacy}","received_events_url":"https://api.github.com/users/how-is/received_events","type":"Organization","site_admin":false},"network_count":5,"subscribers_count":2}'
72
+ http_version:
73
+ recorded_at: Thu, 10 Aug 2017 20:59:56 GMT
74
+ - request:
75
+ method: get
76
+ uri: https://api.github.com/repos/how-is/example-repository
77
+ body:
78
+ encoding: US-ASCII
79
+ string: ''
80
+ headers:
81
+ Accept:
82
+ - application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1
83
+ Accept-Charset:
84
+ - utf-8
85
+ User-Agent:
86
+ - Github API Ruby Gem 0.17.0
87
+ Authorization:
88
+ - Basic ZHVja2luYXRvcjo5MTgyNzc3ZmYzYzAwNjc5NTE5M2E1NzBjZGFjMzI2YjY0NDU5ZGM5"
89
+ Accept-Encoding:
90
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
91
+ response:
92
+ status:
93
+ code: 200
94
+ message: OK
95
+ headers:
96
+ Server:
97
+ - GitHub.com
98
+ Date:
99
+ - Fri, 11 Aug 2017 04:15:20 GMT
100
+ Content-Type:
101
+ - application/json; charset=utf-8
102
+ Transfer-Encoding:
103
+ - chunked
104
+ Status:
105
+ - 200 OK
106
+ X-Ratelimit-Limit:
107
+ - '5000'
108
+ X-Ratelimit-Remaining:
109
+ - '4986'
110
+ X-Ratelimit-Reset:
111
+ - '1502425710'
112
+ Cache-Control:
113
+ - private, max-age=60, s-maxage=60
114
+ Vary:
115
+ - Accept, Authorization, Cookie, X-GitHub-OTP
116
+ Etag:
117
+ - W/"43d9383ed14ed79ce34282a54e3d9815"
118
+ Last-Modified:
119
+ - Sun, 07 Aug 2016 03:52:53 GMT
120
+ X-Oauth-Scopes:
121
+ - ''
122
+ X-Accepted-Oauth-Scopes:
123
+ - repo
124
+ X-Github-Media-Type:
125
+ - github.v3; format=json
126
+ Access-Control-Expose-Headers:
127
+ - ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
128
+ X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
129
+ Access-Control-Allow-Origin:
130
+ - "*"
131
+ Content-Security-Policy:
132
+ - default-src 'none'
133
+ Strict-Transport-Security:
134
+ - max-age=31536000; includeSubdomains; preload
135
+ X-Content-Type-Options:
136
+ - nosniff
137
+ X-Frame-Options:
138
+ - deny
139
+ X-Xss-Protection:
140
+ - 1; mode=block
141
+ X-Runtime-Rack:
142
+ - '0.040584'
143
+ X-Github-Request-Id:
144
+ - 9D7E:1122:3D7850:7B6762:598D2F58
145
+ body:
146
+ encoding: ASCII-8BIT
147
+ string: '{"id":65114449,"name":"example-repository","full_name":"how-is/example-repository","owner":{"login":"how-is","id":20577802,"avatar_url":"https://avatars0.githubusercontent.com/u/20577802?v=4","gravatar_id":"","url":"https://api.github.com/users/how-is","html_url":"https://github.com/how-is","followers_url":"https://api.github.com/users/how-is/followers","following_url":"https://api.github.com/users/how-is/following{/other_user}","gists_url":"https://api.github.com/users/how-is/gists{/gist_id}","starred_url":"https://api.github.com/users/how-is/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/how-is/subscriptions","organizations_url":"https://api.github.com/users/how-is/orgs","repos_url":"https://api.github.com/users/how-is/repos","events_url":"https://api.github.com/users/how-is/events{/privacy}","received_events_url":"https://api.github.com/users/how-is/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/how-is/example-repository","description":"Example
148
+ repository for testing how_is.","fork":false,"url":"https://api.github.com/repos/how-is/example-repository","forks_url":"https://api.github.com/repos/how-is/example-repository/forks","keys_url":"https://api.github.com/repos/how-is/example-repository/keys{/key_id}","collaborators_url":"https://api.github.com/repos/how-is/example-repository/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/how-is/example-repository/teams","hooks_url":"https://api.github.com/repos/how-is/example-repository/hooks","issue_events_url":"https://api.github.com/repos/how-is/example-repository/issues/events{/number}","events_url":"https://api.github.com/repos/how-is/example-repository/events","assignees_url":"https://api.github.com/repos/how-is/example-repository/assignees{/user}","branches_url":"https://api.github.com/repos/how-is/example-repository/branches{/branch}","tags_url":"https://api.github.com/repos/how-is/example-repository/tags","blobs_url":"https://api.github.com/repos/how-is/example-repository/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/how-is/example-repository/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/how-is/example-repository/git/refs{/sha}","trees_url":"https://api.github.com/repos/how-is/example-repository/git/trees{/sha}","statuses_url":"https://api.github.com/repos/how-is/example-repository/statuses/{sha}","languages_url":"https://api.github.com/repos/how-is/example-repository/languages","stargazers_url":"https://api.github.com/repos/how-is/example-repository/stargazers","contributors_url":"https://api.github.com/repos/how-is/example-repository/contributors","subscribers_url":"https://api.github.com/repos/how-is/example-repository/subscribers","subscription_url":"https://api.github.com/repos/how-is/example-repository/subscription","commits_url":"https://api.github.com/repos/how-is/example-repository/commits{/sha}","git_commits_url":"https://api.github.com/repos/how-is/example-repository/git/commits{/sha}","comments_url":"https://api.github.com/repos/how-is/example-repository/comments{/number}","issue_comment_url":"https://api.github.com/repos/how-is/example-repository/issues/comments{/number}","contents_url":"https://api.github.com/repos/how-is/example-repository/contents/{+path}","compare_url":"https://api.github.com/repos/how-is/example-repository/compare/{base}...{head}","merges_url":"https://api.github.com/repos/how-is/example-repository/merges","archive_url":"https://api.github.com/repos/how-is/example-repository/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/how-is/example-repository/downloads","issues_url":"https://api.github.com/repos/how-is/example-repository/issues{/number}","pulls_url":"https://api.github.com/repos/how-is/example-repository/pulls{/number}","milestones_url":"https://api.github.com/repos/how-is/example-repository/milestones{/number}","notifications_url":"https://api.github.com/repos/how-is/example-repository/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/how-is/example-repository/labels{/name}","releases_url":"https://api.github.com/repos/how-is/example-repository/releases{/id}","deployments_url":"https://api.github.com/repos/how-is/example-repository/deployments","created_at":"2016-08-07T03:52:53Z","updated_at":"2016-08-07T03:52:53Z","pushed_at":"2017-08-05T20:39:30Z","git_url":"git://github.com/how-is/example-repository.git","ssh_url":"git@github.com:how-is/example-repository.git","clone_url":"https://github.com/how-is/example-repository.git","svn_url":"https://github.com/how-is/example-repository","homepage":null,"size":0,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":4,"forks":0,"open_issues":4,"watchers":0,"default_branch":"master","permissions":{"admin":true,"push":true,"pull":true},"organization":{"login":"how-is","id":20577802,"avatar_url":"https://avatars0.githubusercontent.com/u/20577802?v=4","gravatar_id":"","url":"https://api.github.com/users/how-is","html_url":"https://github.com/how-is","followers_url":"https://api.github.com/users/how-is/followers","following_url":"https://api.github.com/users/how-is/following{/other_user}","gists_url":"https://api.github.com/users/how-is/gists{/gist_id}","starred_url":"https://api.github.com/users/how-is/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/how-is/subscriptions","organizations_url":"https://api.github.com/users/how-is/orgs","repos_url":"https://api.github.com/users/how-is/repos","events_url":"https://api.github.com/users/how-is/events{/privacy}","received_events_url":"https://api.github.com/users/how-is/received_events","type":"Organization","site_admin":false},"network_count":0,"subscribers_count":1}'
149
+ http_version:
150
+ recorded_at: Fri, 11 Aug 2017 04:15:20 GMT
151
+ recorded_with: VCR 3.0.3
data/how_is.gemspec CHANGED
@@ -21,9 +21,8 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_runtime_dependency "github_api", "~> 0.17.0"
23
23
  spec.add_runtime_dependency "contracts", "~> 0.16.0"
24
- spec.add_runtime_dependency "slop", "~> 4.4.1"
25
24
 
26
- spec.add_runtime_dependency "tessellator-fetcher", "~> 5.0.0"
25
+ spec.add_runtime_dependency "tessellator-fetcher", "~> 5.0.2"
27
26
 
28
27
  spec.add_development_dependency "bundler", "~> 1.11"
29
28
  spec.add_development_dependency "rake", "~> 11.2"
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "how_is/fetcher"
4
+
5
+ class HowIs
6
+ # Fetches metadata about CI builds.
7
+ #
8
+ # Supports Travis
9
+ class Builds
10
+ # @param user [String] GitHub user of repository.
11
+ # @param repo [String] GitHub repository name.
12
+ def initialize(user:, repo:)
13
+ @user = user
14
+ @repo = repo
15
+ # TODO: Figure out Default Branch of the repo
16
+ end
17
+
18
+ def summary
19
+ JSON.parse(travis_builds)
20
+ end
21
+
22
+ # Returns API result of /repos/:user/:repo/builds for Push type Travis
23
+ # events.
24
+ #
25
+ # @return [String] JSON result
26
+ def travis_builds
27
+ Tessellator::Fetcher::Request::HTTP.call(
28
+ Tessellator::Fetcher::Config.new,
29
+ "get",
30
+ "http://api.travis-ci.org/repos/#{@user}/#{@repo}/builds?event_type=push",
31
+ {},
32
+ headers: {"Accept" => "application/vnd.travis-ci.2+json"}
33
+ ).body
34
+ end
35
+ end
36
+ end
data/lib/how_is/cli.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # NOPE THIS IS BROKEN // frozen_string_literal: // true
2
2
 
3
3
  require "how_is"
4
- require "slop"
4
+ require "optparse"
5
5
 
6
6
  class HowIs::CLI
7
7
  DEFAULT_REPORT_FILE = "report.#{HowIs::DEFAULT_FORMAT}".freeze
@@ -27,83 +27,104 @@ class HowIs::CLI
27
27
  # Parses +argv+ to generate an options Hash to control the behavior of
28
28
  # the library.
29
29
  def self.parse(argv)
30
- opts = Slop::Options.new
31
-
32
- # General usage information.
33
- opts.banner =
34
- <<-EOF.gsub(/ *\| ?/, '')
30
+ options = {}
31
+ opts_ = nil
32
+
33
+ opt_parser = OptionParser.new do |opts|
34
+ opts_ = opts
35
+ # General usage information.
36
+ opts.banner =
37
+ <<-EOF.gsub(/ *\| ?/, '')
35
38
  | Usage: how_is REPOSITORY [--report REPORT_FILE] [--from JSON_FILE]
36
39
  | how_is --config CONFIG_FILE
37
40
  |
38
41
  | Where REPOSITORY is <GitHub username or org>/<repository name>.
39
- | CONFIG_FILE defaults to how_is.yml.
40
42
  |
41
43
  | E.g., if you wanted to check https://github.com/how-is/how_is,
42
44
  | you'd run `how_is how-is/how_is`.
43
45
  |
44
46
  EOF
45
47
 
46
- opts.separator ""
47
- opts.separator "Options:"
48
-
49
- # The extra spaces make this a lot easier to comprehend, so we don't want
50
- # RuboCop to complain about them.
51
- #
52
- # Same for line length.
53
- #
54
- # rubocop:disable Style/SpaceBeforeFirstArg
55
- # rubocop:disable Metrics/LineLength
48
+ opts.separator ""
49
+ opts.separator "Options:"
56
50
 
57
- # Allowed arguments:
58
- opts.bool "-h", "--help", "Print help text"
59
- opts.string "--config", "YAML config file, used to generate a group of reports"
60
- opts.string "--from", "JSON report file, used instead of fetching the data again"
61
- opts.string "--report", "output file for the report (valid extensions: #{HowIs.supported_formats.join(', ')}; default: #{DEFAULT_REPORT_FILE})"
62
- opts.bool "-v", "--version", "prints the version"
63
-
64
- # rubocop:enable Style/SpaceBeforeFirstArg
65
- # rubocop:enable Metrics/LineLength
51
+ # The extra spaces make this a lot easier to comprehend, so we don't want
52
+ # RuboCop to complain about them.
53
+ #
54
+ # Same for line length.
55
+ #
56
+ # rubocop:disable Style/SpaceBeforeFirstArg
57
+ # rubocop:disable Metrics/LineLength
66
58
 
67
- # Parse the arguments.
68
- parser = Slop::Parser.new(opts)
69
- result = parser.parse(argv)
59
+ opts.on("--config CONFIG_FILE",
60
+ "YAML config file, used to generate a group of reports") do |filename|
61
+ options[:config] = filename
62
+ end
70
63
 
71
- # +options+ is a Hash of flags/values.
72
- options = result.to_hash
73
- # +arguments+ is an Array of values that don't correspond to a flag.
74
- arguments = result.arguments
64
+ opts.on("--from JSON_FILE",
65
+ "JSON report file, used instead of fetching the data again") do |filename|
66
+ options[:from] = filename
67
+ end
75
68
 
76
- # If --report isn't specified, default to DEFAULT_REPORT_FILE.
77
- options[:report] ||= DEFAULT_REPORT_FILE
69
+ opts.on("--report REPORT_FILE",
70
+ "Output file for the report (valid extensions: #{HowIs.supported_formats.join(', ')}; default: #{DEFAULT_REPORT_FILE})") do |filename|
71
+ options[:report] = filename
72
+ end
78
73
 
79
- # The following are only useful if they're not nil or false.
80
- # Removing them here simplifies contracts and keyword args for
81
- # other APIs.
82
- options.delete(:config) unless options[:config]
83
- options.delete(:help) unless options[:help]
84
- options.delete(:version) unless options[:version]
74
+ opts.on("-v", "--version",
75
+ "Prints version information") do
76
+ options[:version] = true
77
+ end
85
78
 
86
- # If we can't export to the specified file, raise an exception.
87
- unless HowIs.can_export_to?(options[:report])
88
- raise InvalidOutputFileError, "Invalid file: #{options[:report]}. Supported formats: #{HowIs.supported_formats.join(', ')}"
79
+ opts.on("-h", "--help",
80
+ "Print help text") do
81
+ options[:help] = true
82
+ end
89
83
  end
84
+ # rubocop:enable Style/SpaceBeforeFirstArg
85
+ # rubocop:enable Metrics/LineLength
90
86
 
91
- # If we pass --config, other options (excluding --help and
92
- # --version) are ignored. As such, when --config is passed,
93
- # everything in this `unless` block is irrelevant.
94
- unless options[:config]
95
- if options[:from]
96
- raise InvalidInputFileError, "No such file: #{options[:from]}" unless File.file?(options[:from])
97
-
98
- # Opening the file here is a bit gross, but I couldn't find a
99
- # better way to do it. -@duckinator
100
- options[:repository] = JSON.parse(open(options[:from]).read)['repository']
101
-
102
- raise InvalidInputFileError, "Invalid JSON report file." unless options[:repository]
87
+ # `.parse!` populates the `options` Hash that was
88
+ # created above, and the return value is any non-flag
89
+ # arguments.
90
+ arguments = opt_parser.parse!(argv)
91
+
92
+ # TODO: Should this raise an exception instead?
93
+ keep_only = lambda { |options_, key| options_.select {|k, v| k == key } }
94
+
95
+ if options[:help]
96
+ # If --help is passed, _only_ accept --help.
97
+ options = keep_only.call(options, :help)
98
+ elsif options[:version]
99
+ # If --version is passed, _only_ accept --version.
100
+ options = keep_only.call(options, :version)
101
+ elsif options[:config]
102
+ # If --config is passed, _only_ accept --config.
103
+ options = keep_only.call(options, :config)
104
+ elsif options[:from]
105
+ # Handle --from.
106
+
107
+ raise InvalidInputFileError, "No such file: #{options[:from]}" unless File.file?(options[:from])
108
+
109
+ # Opening the file here is a bit gross, but I couldn't find a
110
+ # better way to do it. -@duckinator
111
+ options[:repository] = JSON.parse(open(options[:from]).read)['repository']
112
+
113
+ raise InvalidInputFileError, "Invalid JSON report file." unless options[:repository]
114
+ else
115
+ # If we get here, we're generating a report from the command line,
116
+ # without using --from or --config.
117
+
118
+ # If --report isn't specified, default to DEFAULT_REPORT_FILE.
119
+ options[:report] ||= DEFAULT_REPORT_FILE
120
+
121
+ # If we can't export to the specified file, raise an exception.
122
+ unless HowIs.can_export_to?(options[:report])
123
+ raise InvalidOutputFileError, "Invalid file: #{options[:report]}. Supported formats: #{HowIs.supported_formats.join(', ')}"
124
+ end
103
125
 
104
- elsif argv.length >= 1
126
+ if argv.length >= 1
105
127
  options[:repository] = argv.delete_at(0)
106
-
107
128
  else
108
129
  raise NoRepositoryError, "No repository specified."
109
130
  end
@@ -116,7 +137,7 @@ class HowIs::CLI
116
137
  # +arguments+: an Array of arguments that don't have a
117
138
  # corresponding flags.
118
139
  {
119
- opts: opts,
140
+ opts: opts_,
120
141
  options: options,
121
142
  arguments: arguments,
122
143
  }
@@ -37,11 +37,13 @@ class HowIs
37
37
 
38
38
  @user = user
39
39
  @repo = repo
40
+
41
+ @commit = {}
40
42
  end
41
43
 
42
44
  # Returns a list of contributors that have zero commits before the @since_date.
43
45
  #
44
- # @return [Hash{String => Hash] Committers keyed by GitHub login name
46
+ # @return [Hash{String => Hash}] Contributors keyed by email
45
47
  def new_contributors
46
48
  # author: GitHub login, name or email by which to filter by commit author.
47
49
  @new_contributors ||= contributors.select do |email, _committer|
@@ -61,18 +63,19 @@ class HowIs
61
63
  end
62
64
 
63
65
  def commits
64
- return @commits if defined?(@commits)
65
-
66
- commits = @github.repos.commits.list(user: @user, repo: @repo, since: @since_date)
67
-
68
- # The commits list endpoint doesn't include all commit data, e.g. stats.
69
- # So, we make N requests here, where N == number of commits returned,
70
- # and then we die a bit inside.
71
- @commits = commits.map { |c| commit(c.sha) }
66
+ @commits ||= begin
67
+ @github.repos.commits.list(user: @user,
68
+ repo: @repo,
69
+ since: @since_date).map { |c|
70
+ # The commits list endpoint doesn't include all commit data, e.g. stats.
71
+ # So, we make N requests here, where N == number of commits returned,
72
+ # and then we die a bit inside.
73
+ commit(c.sha)
74
+ }
75
+ end
72
76
  end
73
77
 
74
78
  def commit(sha)
75
- @commit ||= {}
76
79
  @commit[sha] ||= @github.repos.commits.get(user: @user, repo: @repo, sha: sha)
77
80
  end
78
81
 
@@ -100,11 +103,6 @@ class HowIs
100
103
  {"stats" => @stats, "files" => @changed_files}
101
104
  end
102
105
 
103
- # TODO: Don't hard-code the default branch.
104
- def default_branch
105
- "master"
106
- end
107
-
108
106
  def changed_files
109
107
  changes["files"]
110
108
  end
@@ -120,15 +118,12 @@ class HowIs
120
118
  def compare_url
121
119
  since_timestamp = @since_date.to_time.to_i
122
120
  until_timestamp = @until_date.to_time.to_i
123
- "https://github.com/#{@user}/#{@repo}/compare/#{default_branch}@%7B#{since_timestamp}%7D...#{default_branch}@%7B#{until_timestamp}%7D"
124
- end
125
-
126
- def pretty_start_date
127
- @since_date.strftime("%b %d, %Y")
121
+ "https://github.com/#{@user}/#{@repo}/compare/#{default_branch}@%7B#{since_timestamp}%7D...#{default_branch}@%7B#{until_timestamp}%7D" # rubocop:disable Metrics/LineLength
128
122
  end
129
123
 
130
- def pretty_end_date
131
- @until_date.strftime("%b %d, %Y")
124
+ def default_branch
125
+ @default_branch ||= @github.repos.get(user: @user,
126
+ repo: @repo).default_branch
132
127
  end
133
128
 
134
129
  def summary(start_text: nil)
@@ -137,7 +132,7 @@ class HowIs
137
132
  # to /repos/:owner/:repo/commits.
138
133
  # https://developer.github.com/v3/repos/commits/
139
134
 
140
- start_text ||= "From #{pretty_start_date} through #{pretty_end_date}"
135
+ start_text ||= "From #{pretty_date(@since_date)} through #{pretty_date(@until_date)}"
141
136
 
142
137
  "#{start_text}, #{@user}/#{@repo} gained "\
143
138
  "<a href=\"#{compare_url}\">#{pluralize('new commit', commits.length)}</a>, " \
@@ -150,6 +145,10 @@ class HowIs
150
145
 
151
146
  private
152
147
 
148
+ def pretty_date(date)
149
+ date.strftime("%b %d, %Y")
150
+ end
151
+
153
152
  def pluralize(string, number)
154
153
  "#{number} #{string}#{(number == 1) ? '' : 's'}"
155
154
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class HowIs
4
- VERSION = "18.1.0"
4
+ VERSION = "19.0.0"
5
5
  end
data/lib/how_is.rb CHANGED
@@ -197,8 +197,9 @@ class HowIs
197
197
  str.string
198
198
  end
199
199
 
200
- # convert_keys({'foo' => 'bar'}, :to_sym)
201
- # => {:foo => 'bar'}
200
+ # @example
201
+ # convert_keys({'foo' => 'bar'}, :to_sym)
202
+ # # => {:foo => 'bar'}
202
203
  def self.convert_keys(data, method_name)
203
204
  data.map { |k, v| [k.send(method_name), v] }.to_h
204
205
  end
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: 18.1.0
4
+ version: 19.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-08-06 00:00:00.000000000 Z
11
+ date: 2017-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: github_api
@@ -38,34 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.16.0
41
- - !ruby/object:Gem::Dependency
42
- name: slop
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 4.4.1
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 4.4.1
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: tessellator-fetcher
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: 5.0.0
47
+ version: 5.0.2
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: 5.0.0
54
+ version: 5.0.2
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: bundler
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -186,6 +172,7 @@ executables:
186
172
  extensions: []
187
173
  extra_rdoc_files: []
188
174
  files:
175
+ - ".codeclimate.yml"
189
176
  - ".github_changelog_generator"
190
177
  - ".gitignore"
191
178
  - ".hound.yml"
@@ -208,12 +195,15 @@ files:
208
195
  - fixtures/vcr_cassettes/how-is-example-empty-repository.yml
209
196
  - fixtures/vcr_cassettes/how-is-example-repository.yml
210
197
  - fixtures/vcr_cassettes/how-is-from-config-frontmatter.yml
198
+ - fixtures/vcr_cassettes/how-is-how-is-travis-api-repos-builds.yml
211
199
  - fixtures/vcr_cassettes/how-is-with-config-file.yml
212
200
  - fixtures/vcr_cassettes/how_is_contributions_all_contributors.yml
201
+ - fixtures/vcr_cassettes/how_is_contributions_default_branch.yml
213
202
  - fixtures/vcr_cassettes/how_is_contributions_new_contributors.yml
214
203
  - how_is.gemspec
215
204
  - lib/how_is.rb
216
205
  - lib/how_is/analyzer.rb
206
+ - lib/how_is/builds.rb
217
207
  - lib/how_is/cli.rb
218
208
  - lib/how_is/contributions.rb
219
209
  - lib/how_is/fetcher.rb
@@ -244,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
244
234
  version: '0'
245
235
  requirements: []
246
236
  rubyforge_project:
247
- rubygems_version: 2.6.11
237
+ rubygems_version: 2.6.13
248
238
  signing_key:
249
239
  specification_version: 4
250
240
  summary: Quantify the health of a GitHub repository.