how_is 24.0.0 → 25.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github_changelog_generator +0 -1
- data/.rubocop.yml +37 -12
- data/.travis.yml +6 -3
- data/CHANGELOG.md +56 -0
- data/CONTRIBUTING.md +34 -0
- data/Gemfile +8 -4
- data/ISSUES.md +30 -54
- data/README.md +16 -91
- data/Rakefile +3 -31
- data/bin/prerelease-generate-changelog +1 -1
- data/bin/setup +0 -0
- data/build-debug.rb +20 -0
- data/exe/how_is +25 -22
- data/fixtures/vcr_cassettes/how-is-example-empty-repository.yml +334 -1
- data/fixtures/vcr_cassettes/how-is-example-repository.yml +350 -1
- data/fixtures/vcr_cassettes/how-is-from-config-frontmatter.yml +15234 -1
- data/fixtures/vcr_cassettes/how-is-how-is-travis-api-repos-builds.yml +2694 -1
- data/fixtures/vcr_cassettes/how-is-with-config-file.yml +15234 -1
- data/fixtures/vcr_cassettes/how_is_contributions_additions_count.yml +70 -1
- data/fixtures/vcr_cassettes/how_is_contributions_all_contributors.yml +70 -1
- data/fixtures/vcr_cassettes/how_is_contributions_changed_files.yml +70 -1
- data/fixtures/vcr_cassettes/how_is_contributions_changes.yml +70 -1
- data/fixtures/vcr_cassettes/how_is_contributions_commits.yml +70 -1
- data/fixtures/vcr_cassettes/how_is_contributions_compare_url.yml +70 -1
- data/fixtures/vcr_cassettes/how_is_contributions_default_branch.yml +70 -1
- data/fixtures/vcr_cassettes/how_is_contributions_deletions_count.yml +70 -1
- data/fixtures/vcr_cassettes/how_is_contributions_new_contributors.yml +70 -1
- data/fixtures/vcr_cassettes/how_is_contributions_summary.yml +70 -1
- data/fixtures/vcr_cassettes/how_is_contributions_summary_2.yml +70 -1
- data/how_is.gemspec +12 -6
- data/lib/how_is/cacheable.rb +71 -0
- data/lib/how_is/cli.rb +121 -124
- data/lib/how_is/config.rb +123 -0
- data/lib/how_is/constants.rb +9 -0
- data/lib/how_is/date_time_helpers.rb +48 -0
- data/lib/how_is/frontmatter.rb +14 -9
- data/lib/how_is/report.rb +86 -58
- data/lib/how_is/report_collection.rb +113 -0
- data/lib/how_is/sources/ci/appveyor.rb +88 -0
- data/lib/how_is/sources/ci/travis.rb +159 -0
- data/lib/how_is/sources/github/contributions.rb +169 -128
- data/lib/how_is/sources/github/issue_fetcher.rb +148 -0
- data/lib/how_is/sources/github/issues.rb +86 -235
- data/lib/how_is/sources/github/pulls.rb +19 -18
- data/lib/how_is/sources/github.rb +40 -18
- data/lib/how_is/sources/github_helpers.rb +8 -91
- data/lib/how_is/sources.rb +2 -0
- data/lib/how_is/template.rb +9 -0
- data/lib/how_is/templates/contributions_partial.html +1 -0
- data/lib/how_is/templates/{issues_or_pulls_partial.html_template → issues_or_pulls_partial.html} +0 -0
- data/lib/how_is/templates/new_contributors_partial.html +5 -0
- data/lib/how_is/templates/{report.html_template → report.html} +0 -8
- data/lib/how_is/templates/{report_partial.html_template → report_partial.html} +3 -3
- data/lib/how_is/text.rb +26 -0
- data/lib/how_is/version.rb +2 -1
- data/lib/how_is.rb +33 -60
- metadata +28 -47
- data/.hound.yml +0 -2
- data/.rubocop_todo.yml +0 -21
- data/lib/how_is/sources/travis.rb +0 -37
- data/roadmap.markdown +0 -82
@@ -1135,4 +1135,353 @@ http_interactions:
|
|
1135
1135
|
commit","tree":{"sha":"7bee2a10cc8c7c036d5006fa0aacadd869d09c4e","url":"https://api.github.com/repos/how-is/example-repository/git/trees/7bee2a10cc8c7c036d5006fa0aacadd869d09c4e"},"url":"https://api.github.com/repos/how-is/example-repository/git/commits/9e29405efa433529b86722542b8fb4b34dfd9edd","comment_count":0,"verification":{"verified":false,"reason":"unsigned","signature":null,"payload":null}},"url":"https://api.github.com/repos/how-is/example-repository/commits/9e29405efa433529b86722542b8fb4b34dfd9edd","html_url":"https://github.com/how-is/example-repository/commit/9e29405efa433529b86722542b8fb4b34dfd9edd","comments_url":"https://api.github.com/repos/how-is/example-repository/commits/9e29405efa433529b86722542b8fb4b34dfd9edd/comments","author":{"login":"duckinator","id":39698,"avatar_url":"https://avatars3.githubusercontent.com/u/39698?v=4","gravatar_id":"","url":"https://api.github.com/users/duckinator","html_url":"https://github.com/duckinator","followers_url":"https://api.github.com/users/duckinator/followers","following_url":"https://api.github.com/users/duckinator/following{/other_user}","gists_url":"https://api.github.com/users/duckinator/gists{/gist_id}","starred_url":"https://api.github.com/users/duckinator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/duckinator/subscriptions","organizations_url":"https://api.github.com/users/duckinator/orgs","repos_url":"https://api.github.com/users/duckinator/repos","events_url":"https://api.github.com/users/duckinator/events{/privacy}","received_events_url":"https://api.github.com/users/duckinator/received_events","type":"User","site_admin":false},"committer":{"login":"duckinator","id":39698,"avatar_url":"https://avatars3.githubusercontent.com/u/39698?v=4","gravatar_id":"","url":"https://api.github.com/users/duckinator","html_url":"https://github.com/duckinator","followers_url":"https://api.github.com/users/duckinator/followers","following_url":"https://api.github.com/users/duckinator/following{/other_user}","gists_url":"https://api.github.com/users/duckinator/gists{/gist_id}","starred_url":"https://api.github.com/users/duckinator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/duckinator/subscriptions","organizations_url":"https://api.github.com/users/duckinator/orgs","repos_url":"https://api.github.com/users/duckinator/repos","events_url":"https://api.github.com/users/duckinator/events{/privacy}","received_events_url":"https://api.github.com/users/duckinator/received_events","type":"User","site_admin":false},"parents":[]}]'
|
1136
1136
|
http_version:
|
1137
1137
|
recorded_at: Tue, 01 Nov 2016 00:00:00 GMT
|
1138
|
-
|
1138
|
+
- request:
|
1139
|
+
method: get
|
1140
|
+
uri: https://api.travis-ci.org/repo/how-is%2Fexample-repository/branches?sort_by=default_branch
|
1141
|
+
body:
|
1142
|
+
encoding: US-ASCII
|
1143
|
+
string: ''
|
1144
|
+
headers:
|
1145
|
+
Accept-Encoding:
|
1146
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
1147
|
+
Accept:
|
1148
|
+
- application/json
|
1149
|
+
User-Agent:
|
1150
|
+
- how_is/24.0.0 (https://github.com/how-is/how_is/)
|
1151
|
+
Host:
|
1152
|
+
- api.travis-ci.org
|
1153
|
+
Travis-Api-Version:
|
1154
|
+
- '3'
|
1155
|
+
response:
|
1156
|
+
status:
|
1157
|
+
code: 200
|
1158
|
+
message: OK
|
1159
|
+
headers:
|
1160
|
+
Connection:
|
1161
|
+
- keep-alive
|
1162
|
+
Server:
|
1163
|
+
- nginx
|
1164
|
+
Date:
|
1165
|
+
- Fri, 30 Mar 2018 22:04:02 GMT
|
1166
|
+
Content-Type:
|
1167
|
+
- application/json
|
1168
|
+
Transfer-Encoding:
|
1169
|
+
- chunked
|
1170
|
+
Access-Control-Allow-Origin:
|
1171
|
+
- "*"
|
1172
|
+
Access-Control-Allow-Credentials:
|
1173
|
+
- 'true'
|
1174
|
+
Access-Control-Expose-Headers:
|
1175
|
+
- Content-Type, Cache-Control, Expires, Etag, Last-Modified, X-Request-ID
|
1176
|
+
Strict-Transport-Security:
|
1177
|
+
- max-age=31536000
|
1178
|
+
X-Endpoint:
|
1179
|
+
- Travis::API::V3::Services::Branches::Find
|
1180
|
+
X-Oauth-Scopes:
|
1181
|
+
- ''
|
1182
|
+
Vary:
|
1183
|
+
- Accept-Encoding
|
1184
|
+
X-Rack-Cache:
|
1185
|
+
- miss
|
1186
|
+
X-Request-Id:
|
1187
|
+
- 508118b3-e746-442e-8e4f-381b7fc763ec
|
1188
|
+
Via:
|
1189
|
+
- 1.1 vegur
|
1190
|
+
body:
|
1191
|
+
encoding: ASCII-8BIT
|
1192
|
+
string: |-
|
1193
|
+
{
|
1194
|
+
"@type": "branches",
|
1195
|
+
"@href": "/repo/how-is%2Fexample-repository/branches?sort_by=default_branch",
|
1196
|
+
"@representation": "standard",
|
1197
|
+
"@pagination": {
|
1198
|
+
"limit": 25,
|
1199
|
+
"offset": 0,
|
1200
|
+
"count": 1,
|
1201
|
+
"is_first": true,
|
1202
|
+
"is_last": true,
|
1203
|
+
"next": null,
|
1204
|
+
"prev": null,
|
1205
|
+
"first": {
|
1206
|
+
"@href": "/repo/how-is%2Fexample-repository/branches?sort_by=default_branch",
|
1207
|
+
"offset": 0,
|
1208
|
+
"limit": 25
|
1209
|
+
},
|
1210
|
+
"last": {
|
1211
|
+
"@href": "/repo/how-is%2Fexample-repository/branches?sort_by=default_branch",
|
1212
|
+
"offset": 0,
|
1213
|
+
"limit": 25
|
1214
|
+
}
|
1215
|
+
},
|
1216
|
+
"branches": [
|
1217
|
+
{
|
1218
|
+
"@type": "branch",
|
1219
|
+
"@href": "/repo/9682159/branch/master",
|
1220
|
+
"@representation": "standard",
|
1221
|
+
"name": "master",
|
1222
|
+
"repository": {
|
1223
|
+
"@type": "repository",
|
1224
|
+
"@href": "/repo/9682159",
|
1225
|
+
"@representation": "minimal",
|
1226
|
+
"id": 9682159,
|
1227
|
+
"name": "example-repository",
|
1228
|
+
"slug": "how-is/example-repository"
|
1229
|
+
},
|
1230
|
+
"default_branch": true,
|
1231
|
+
"exists_on_github": true,
|
1232
|
+
"last_build": null
|
1233
|
+
}
|
1234
|
+
]
|
1235
|
+
}
|
1236
|
+
http_version:
|
1237
|
+
recorded_at: Tue, 01 Nov 2016 00:00:00 GMT
|
1238
|
+
- request:
|
1239
|
+
method: get
|
1240
|
+
uri: https://api.travis-ci.org/repo/how-is%2Fexample-repository/builds?branch.name=master&event_type=push
|
1241
|
+
body:
|
1242
|
+
encoding: US-ASCII
|
1243
|
+
string: ''
|
1244
|
+
headers:
|
1245
|
+
Accept-Encoding:
|
1246
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
1247
|
+
Accept:
|
1248
|
+
- application/json
|
1249
|
+
User-Agent:
|
1250
|
+
- how_is/24.0.0 (https://github.com/how-is/how_is/)
|
1251
|
+
Host:
|
1252
|
+
- api.travis-ci.org
|
1253
|
+
Travis-Api-Version:
|
1254
|
+
- '3'
|
1255
|
+
response:
|
1256
|
+
status:
|
1257
|
+
code: 200
|
1258
|
+
message: OK
|
1259
|
+
headers:
|
1260
|
+
Connection:
|
1261
|
+
- keep-alive
|
1262
|
+
Server:
|
1263
|
+
- nginx
|
1264
|
+
Date:
|
1265
|
+
- Fri, 30 Mar 2018 22:04:02 GMT
|
1266
|
+
Content-Type:
|
1267
|
+
- application/json
|
1268
|
+
Transfer-Encoding:
|
1269
|
+
- chunked
|
1270
|
+
Access-Control-Allow-Origin:
|
1271
|
+
- "*"
|
1272
|
+
Access-Control-Allow-Credentials:
|
1273
|
+
- 'true'
|
1274
|
+
Access-Control-Expose-Headers:
|
1275
|
+
- Content-Type, Cache-Control, Expires, Etag, Last-Modified, X-Request-ID
|
1276
|
+
Strict-Transport-Security:
|
1277
|
+
- max-age=31536000
|
1278
|
+
X-Endpoint:
|
1279
|
+
- Travis::API::V3::Services::Builds::Find
|
1280
|
+
X-Oauth-Scopes:
|
1281
|
+
- ''
|
1282
|
+
Vary:
|
1283
|
+
- Accept-Encoding
|
1284
|
+
X-Rack-Cache:
|
1285
|
+
- miss
|
1286
|
+
X-Request-Id:
|
1287
|
+
- 137b385a-8828-4b6b-9366-48720615036e
|
1288
|
+
Via:
|
1289
|
+
- 1.1 vegur
|
1290
|
+
body:
|
1291
|
+
encoding: ASCII-8BIT
|
1292
|
+
string: |-
|
1293
|
+
{
|
1294
|
+
"@type": "builds",
|
1295
|
+
"@href": "/repo/how-is%2Fexample-repository/builds?event_type=push&branch.name=master",
|
1296
|
+
"@representation": "standard",
|
1297
|
+
"@pagination": {
|
1298
|
+
"limit": 25,
|
1299
|
+
"offset": 0,
|
1300
|
+
"count": 0,
|
1301
|
+
"is_first": true,
|
1302
|
+
"is_last": true,
|
1303
|
+
"next": null,
|
1304
|
+
"prev": null,
|
1305
|
+
"first": {
|
1306
|
+
"@href": "/repo/how-is%2Fexample-repository/builds?event_type=push&branch.name=master",
|
1307
|
+
"offset": 0,
|
1308
|
+
"limit": 25
|
1309
|
+
},
|
1310
|
+
"last": {
|
1311
|
+
"@href": "/repo/how-is%2Fexample-repository/builds?branch.name=master&event_type=push&limit=25&offset=-25",
|
1312
|
+
"offset": -25,
|
1313
|
+
"limit": 25
|
1314
|
+
}
|
1315
|
+
},
|
1316
|
+
"builds": [
|
1317
|
+
|
1318
|
+
]
|
1319
|
+
}
|
1320
|
+
http_version:
|
1321
|
+
recorded_at: Tue, 01 Nov 2016 00:00:00 GMT
|
1322
|
+
- request:
|
1323
|
+
method: get
|
1324
|
+
uri: https://ci.appveyor.com/api/projects/how-is/example-repository
|
1325
|
+
body:
|
1326
|
+
encoding: US-ASCII
|
1327
|
+
string: ''
|
1328
|
+
headers:
|
1329
|
+
Accept-Encoding:
|
1330
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
1331
|
+
Accept:
|
1332
|
+
- application/json
|
1333
|
+
User-Agent:
|
1334
|
+
- how_is/24.0.0 (https://github.com/how-is/how_is/)
|
1335
|
+
Host:
|
1336
|
+
- ci.appveyor.com
|
1337
|
+
response:
|
1338
|
+
status:
|
1339
|
+
code: 404
|
1340
|
+
message: Not Found
|
1341
|
+
headers:
|
1342
|
+
Cache-Control:
|
1343
|
+
- no-cache
|
1344
|
+
Pragma:
|
1345
|
+
- no-cache
|
1346
|
+
Content-Type:
|
1347
|
+
- application/json; charset=utf-8
|
1348
|
+
Expires:
|
1349
|
+
- "-1"
|
1350
|
+
X-Xss-Protection:
|
1351
|
+
- 1; mode=block
|
1352
|
+
X-Frame-Options:
|
1353
|
+
- SAMEORIGIN
|
1354
|
+
Strict-Transport-Security:
|
1355
|
+
- max-age=31536000
|
1356
|
+
X-Content-Type-Options:
|
1357
|
+
- nosniff
|
1358
|
+
Date:
|
1359
|
+
- Fri, 30 Mar 2018 22:04:02 GMT
|
1360
|
+
Content-Length:
|
1361
|
+
- '49'
|
1362
|
+
body:
|
1363
|
+
encoding: UTF-8
|
1364
|
+
string: '{"message":"Project not found or access denied."}'
|
1365
|
+
http_version:
|
1366
|
+
recorded_at: Tue, 01 Nov 2016 00:00:00 GMT
|
1367
|
+
- request:
|
1368
|
+
method: get
|
1369
|
+
uri: https://ci.appveyor.com/api/projects/how-is/example-repository/history?recordsNumber=100
|
1370
|
+
body:
|
1371
|
+
encoding: US-ASCII
|
1372
|
+
string: ''
|
1373
|
+
headers:
|
1374
|
+
Accept-Encoding:
|
1375
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
1376
|
+
Accept:
|
1377
|
+
- application/json
|
1378
|
+
User-Agent:
|
1379
|
+
- how_is/24.0.0 (https://github.com/how-is/how_is/)
|
1380
|
+
Host:
|
1381
|
+
- ci.appveyor.com
|
1382
|
+
response:
|
1383
|
+
status:
|
1384
|
+
code: 404
|
1385
|
+
message: Not Found
|
1386
|
+
headers:
|
1387
|
+
Cache-Control:
|
1388
|
+
- no-cache
|
1389
|
+
Pragma:
|
1390
|
+
- no-cache
|
1391
|
+
Content-Type:
|
1392
|
+
- application/json; charset=utf-8
|
1393
|
+
Expires:
|
1394
|
+
- "-1"
|
1395
|
+
X-Xss-Protection:
|
1396
|
+
- 1; mode=block
|
1397
|
+
X-Frame-Options:
|
1398
|
+
- SAMEORIGIN
|
1399
|
+
Strict-Transport-Security:
|
1400
|
+
- max-age=31536000
|
1401
|
+
X-Content-Type-Options:
|
1402
|
+
- nosniff
|
1403
|
+
Date:
|
1404
|
+
- Fri, 25 May 2018 15:54:59 GMT
|
1405
|
+
Content-Length:
|
1406
|
+
- '49'
|
1407
|
+
body:
|
1408
|
+
encoding: UTF-8
|
1409
|
+
string: '{"message":"Project not found or access denied."}'
|
1410
|
+
http_version:
|
1411
|
+
recorded_at: Tue, 01 Nov 2016 00:00:00 GMT
|
1412
|
+
- request:
|
1413
|
+
method: get
|
1414
|
+
uri: https://api.github.com/repos/how-is/example-repository/commits?author=me@duckie.co&until=2016-08-01
|
1415
|
+
body:
|
1416
|
+
encoding: US-ASCII
|
1417
|
+
string: ''
|
1418
|
+
headers:
|
1419
|
+
Accept:
|
1420
|
+
- application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1
|
1421
|
+
Accept-Charset:
|
1422
|
+
- utf-8
|
1423
|
+
User-Agent:
|
1424
|
+
- Github API Ruby Gem 0.18.2
|
1425
|
+
Authorization:
|
1426
|
+
- Basic ZHVja2luYXRvcjo5MTgyNzc3ZmYzYzAwNjc5NTE5M2E1NzBjZGFjMzI2YjY0NDU5ZGM5
|
1427
|
+
Accept-Encoding:
|
1428
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
1429
|
+
response:
|
1430
|
+
status:
|
1431
|
+
code: 200
|
1432
|
+
message: OK
|
1433
|
+
headers:
|
1434
|
+
Server:
|
1435
|
+
- GitHub.com
|
1436
|
+
Date:
|
1437
|
+
- Fri, 15 Mar 2019 21:54:09 GMT
|
1438
|
+
Content-Type:
|
1439
|
+
- application/json; charset=utf-8
|
1440
|
+
Content-Length:
|
1441
|
+
- '2'
|
1442
|
+
Status:
|
1443
|
+
- 200 OK
|
1444
|
+
X-Ratelimit-Limit:
|
1445
|
+
- '5000'
|
1446
|
+
X-Ratelimit-Remaining:
|
1447
|
+
- '4301'
|
1448
|
+
X-Ratelimit-Reset:
|
1449
|
+
- '1552689075'
|
1450
|
+
Cache-Control:
|
1451
|
+
- private, max-age=60, s-maxage=60
|
1452
|
+
Vary:
|
1453
|
+
- Accept, Authorization, Cookie, X-GitHub-OTP
|
1454
|
+
Etag:
|
1455
|
+
- '"74b5718094ce8869d8149d99338cb4f8"'
|
1456
|
+
X-Oauth-Scopes:
|
1457
|
+
- ''
|
1458
|
+
X-Accepted-Oauth-Scopes:
|
1459
|
+
- ''
|
1460
|
+
X-Github-Media-Type:
|
1461
|
+
- github.v3; format=json
|
1462
|
+
Access-Control-Expose-Headers:
|
1463
|
+
- ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining,
|
1464
|
+
X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval,
|
1465
|
+
X-GitHub-Media-Type
|
1466
|
+
Access-Control-Allow-Origin:
|
1467
|
+
- "*"
|
1468
|
+
Strict-Transport-Security:
|
1469
|
+
- max-age=31536000; includeSubdomains; preload
|
1470
|
+
X-Frame-Options:
|
1471
|
+
- deny
|
1472
|
+
X-Content-Type-Options:
|
1473
|
+
- nosniff
|
1474
|
+
X-Xss-Protection:
|
1475
|
+
- 1; mode=block
|
1476
|
+
Referrer-Policy:
|
1477
|
+
- origin-when-cross-origin, strict-origin-when-cross-origin
|
1478
|
+
Content-Security-Policy:
|
1479
|
+
- default-src 'none'
|
1480
|
+
X-Github-Request-Id:
|
1481
|
+
- 87EF:64A4:11E9D23:22562CD:5C8C1F01
|
1482
|
+
body:
|
1483
|
+
encoding: UTF-8
|
1484
|
+
string: "[]"
|
1485
|
+
http_version:
|
1486
|
+
recorded_at: Tue, 01 Nov 2016 00:00:00 GMT
|
1487
|
+
recorded_with: VCR 4.0.0
|