still_active 0.5.0 → 1.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.
data/Gemfile.lock CHANGED
@@ -1,190 +1,159 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- still_active (0.5.0)
5
- activesupport
4
+ still_active (1.0.0)
6
5
  async
7
- async-http
8
6
  bundler (>= 2.0)
7
+ faraday-retry
9
8
  gems
10
- github_api
9
+ octokit
11
10
 
12
11
  GEM
13
12
  remote: https://rubygems.org/
14
13
  specs:
15
- activesupport (7.0.4.3)
16
- concurrent-ruby (~> 1.0, >= 1.0.2)
17
- i18n (>= 1.6, < 2)
18
- minitest (>= 5.1)
19
- tzinfo (~> 2.0)
20
- addressable (2.8.4)
21
- public_suffix (>= 2.0.2, < 6.0)
22
- ast (2.4.2)
23
- async (2.5.1)
24
- console (~> 1.10)
25
- io-event (~> 1.1)
26
- timers (~> 4.1)
27
- async-http (0.60.1)
28
- async (>= 1.25)
29
- async-io (>= 1.28)
30
- async-pool (>= 0.2)
31
- protocol-http (~> 0.24.0)
32
- protocol-http1 (~> 0.15.0)
33
- protocol-http2 (~> 0.15.0)
34
- traces (>= 0.8.0)
35
- async-io (1.34.3)
36
- async
37
- async-pool (0.4.0)
38
- async (>= 1.25)
14
+ addressable (2.8.8)
15
+ public_suffix (>= 2.0.2, < 8.0)
16
+ ast (2.4.3)
17
+ async (2.36.0)
18
+ console (~> 1.29)
19
+ fiber-annotation
20
+ io-event (~> 1.11)
21
+ metrics (~> 0.12)
22
+ traces (~> 0.18)
23
+ bigdecimal (4.0.1)
39
24
  code-scanning-rubocop (0.6.1)
40
25
  rubocop (~> 1.0)
41
- concurrent-ruby (1.2.2)
42
- console (1.16.2)
43
- fiber-local
44
- crack (0.4.5)
26
+ concurrent-ruby (1.3.6)
27
+ console (1.34.3)
28
+ fiber-annotation
29
+ fiber-local (~> 1.1)
30
+ json
31
+ crack (1.0.1)
32
+ bigdecimal
45
33
  rexml
46
- dead_end (4.0.0)
47
- debug (1.8.0)
48
- irb (>= 1.5.0)
49
- reline (>= 0.3.1)
50
- descendants_tracker (0.0.4)
51
- thread_safe (~> 0.3, >= 0.3.1)
52
- diff-lcs (1.5.0)
53
- faker (3.2.0)
34
+ date (3.5.1)
35
+ debug (1.11.1)
36
+ irb (~> 1.10)
37
+ reline (>= 0.3.8)
38
+ diff-lcs (1.6.2)
39
+ erb (6.0.1)
40
+ faker (3.6.0)
54
41
  i18n (>= 1.8.11, < 2)
55
- faraday (1.10.3)
56
- faraday-em_http (~> 1.0)
57
- faraday-em_synchrony (~> 1.0)
58
- faraday-excon (~> 1.1)
59
- faraday-httpclient (~> 1.0)
60
- faraday-multipart (~> 1.0)
61
- faraday-net_http (~> 1.0)
62
- faraday-net_http_persistent (~> 1.0)
63
- faraday-patron (~> 1.0)
64
- faraday-rack (~> 1.0)
65
- faraday-retry (~> 1.0)
66
- ruby2_keywords (>= 0.0.4)
67
- faraday-em_http (1.0.0)
68
- faraday-em_synchrony (1.0.0)
69
- faraday-excon (1.1.0)
70
- faraday-httpclient (1.0.1)
71
- faraday-multipart (1.0.4)
72
- multipart-post (~> 2)
73
- faraday-net_http (1.0.1)
74
- faraday-net_http_persistent (1.2.0)
75
- faraday-patron (1.0.0)
76
- faraday-rack (1.0.0)
77
- faraday-retry (1.0.3)
78
- fiber-local (1.0.0)
79
- gems (1.2.0)
80
- github_api (0.19.0)
81
- addressable (~> 2.4)
82
- descendants_tracker (~> 0.0.4)
83
- faraday (>= 0.8, < 2)
84
- hashie (~> 3.5, >= 3.5.2)
85
- oauth2 (~> 1.0)
86
- hashdiff (1.0.1)
87
- hashie (3.6.0)
88
- i18n (1.13.0)
42
+ faraday (2.14.1)
43
+ faraday-net_http (>= 2.0, < 3.5)
44
+ json
45
+ logger
46
+ faraday-net_http (3.4.2)
47
+ net-http (~> 0.5)
48
+ faraday-retry (2.4.0)
49
+ faraday (~> 2.0)
50
+ fiber-annotation (0.2.0)
51
+ fiber-local (1.1.0)
52
+ fiber-storage
53
+ fiber-storage (1.0.1)
54
+ gems (1.3.0)
55
+ hashdiff (1.2.1)
56
+ i18n (1.14.8)
89
57
  concurrent-ruby (~> 1.0)
90
- io-console (0.6.0)
91
- io-console (0.6.0-java)
92
- io-event (1.2.2)
93
- irb (1.6.4)
94
- reline (>= 0.3.0)
95
- json (2.6.3)
96
- json (2.6.3-java)
97
- jwt (2.7.0)
98
- minitest (5.18.0)
99
- multi_json (1.15.0)
100
- multi_xml (0.6.0)
101
- multipart-post (2.3.0)
102
- oauth2 (1.4.11)
103
- faraday (>= 0.17.3, < 3.0)
104
- jwt (>= 1.0, < 3.0)
105
- multi_json (~> 1.3)
106
- multi_xml (~> 0.5)
107
- rack (>= 1.2, < 4)
108
- parallel (1.23.0)
109
- parser (3.2.2.1)
58
+ io-console (0.8.2)
59
+ io-event (1.14.2)
60
+ irb (1.17.0)
61
+ pp (>= 0.6.0)
62
+ prism (>= 1.3.0)
63
+ rdoc (>= 4.0.0)
64
+ reline (>= 0.4.2)
65
+ json (2.18.1)
66
+ language_server-protocol (3.17.0.5)
67
+ lint_roller (1.1.0)
68
+ logger (1.7.0)
69
+ metrics (0.15.0)
70
+ net-http (0.9.1)
71
+ uri (>= 0.11.1)
72
+ octokit (10.0.0)
73
+ faraday (>= 1, < 3)
74
+ sawyer (~> 0.9)
75
+ parallel (1.27.0)
76
+ parser (3.3.10.2)
110
77
  ast (~> 2.4.1)
111
- protocol-hpack (1.4.2)
112
- protocol-http (0.24.1)
113
- protocol-http1 (0.15.0)
114
- protocol-http (~> 0.22)
115
- protocol-http2 (0.15.1)
116
- protocol-hpack (~> 1.4)
117
- protocol-http (~> 0.18)
118
- public_suffix (5.0.1)
119
- rack (3.0.7)
78
+ racc
79
+ pp (0.6.3)
80
+ prettyprint
81
+ prettyprint (0.2.0)
82
+ prism (1.9.0)
83
+ psych (5.3.1)
84
+ date
85
+ stringio
86
+ public_suffix (7.0.2)
87
+ racc (1.8.1)
120
88
  rainbow (3.1.1)
121
- rake (13.0.6)
122
- regexp_parser (2.8.0)
123
- reline (0.3.4)
89
+ rake (13.3.1)
90
+ rdoc (7.2.0)
91
+ erb
92
+ psych (>= 4.0.0)
93
+ tsort
94
+ regexp_parser (2.11.3)
95
+ reline (0.6.3)
124
96
  io-console (~> 0.5)
125
- rexml (3.2.5)
126
- rspec (3.12.0)
127
- rspec-core (~> 3.12.0)
128
- rspec-expectations (~> 3.12.0)
129
- rspec-mocks (~> 3.12.0)
130
- rspec-core (3.12.2)
131
- rspec-support (~> 3.12.0)
132
- rspec-expectations (3.12.3)
97
+ rexml (3.4.4)
98
+ rspec (3.13.2)
99
+ rspec-core (~> 3.13.0)
100
+ rspec-expectations (~> 3.13.0)
101
+ rspec-mocks (~> 3.13.0)
102
+ rspec-core (3.13.6)
103
+ rspec-support (~> 3.13.0)
104
+ rspec-expectations (3.13.5)
133
105
  diff-lcs (>= 1.2.0, < 2.0)
134
- rspec-support (~> 3.12.0)
135
- rspec-mocks (3.12.5)
106
+ rspec-support (~> 3.13.0)
107
+ rspec-mocks (3.13.7)
136
108
  diff-lcs (>= 1.2.0, < 2.0)
137
- rspec-support (~> 3.12.0)
138
- rspec-support (3.12.0)
139
- rubocop (1.51.0)
109
+ rspec-support (~> 3.13.0)
110
+ rspec-support (3.13.7)
111
+ rubocop (1.84.2)
140
112
  json (~> 2.3)
113
+ language_server-protocol (~> 3.17.0.2)
114
+ lint_roller (~> 1.1.0)
141
115
  parallel (~> 1.10)
142
- parser (>= 3.2.0.0)
116
+ parser (>= 3.3.0.2)
143
117
  rainbow (>= 2.2.2, < 4.0)
144
- regexp_parser (>= 1.8, < 3.0)
145
- rexml (>= 3.2.5, < 4.0)
146
- rubocop-ast (>= 1.28.0, < 2.0)
118
+ regexp_parser (>= 2.9.3, < 3.0)
119
+ rubocop-ast (>= 1.49.0, < 2.0)
147
120
  ruby-progressbar (~> 1.7)
148
- unicode-display_width (>= 2.4.0, < 3.0)
149
- rubocop-ast (1.28.1)
150
- parser (>= 3.2.1.0)
151
- rubocop-capybara (2.18.0)
152
- rubocop (~> 1.41)
153
- rubocop-factory_bot (2.23.1)
154
- rubocop (~> 1.33)
155
- rubocop-performance (1.18.0)
156
- rubocop (>= 1.7.0, < 2.0)
157
- rubocop-ast (>= 0.4.0)
158
- rubocop-rspec (2.22.0)
159
- rubocop (~> 1.33)
160
- rubocop-capybara (~> 2.17)
161
- rubocop-factory_bot (~> 2.22)
162
- rubocop-shopify (2.13.0)
163
- rubocop (~> 1.50)
121
+ unicode-display_width (>= 2.4.0, < 4.0)
122
+ rubocop-ast (1.49.0)
123
+ parser (>= 3.3.7.2)
124
+ prism (~> 1.7)
125
+ rubocop-performance (1.26.1)
126
+ lint_roller (~> 1.1)
127
+ rubocop (>= 1.75.0, < 2.0)
128
+ rubocop-ast (>= 1.47.1, < 2.0)
129
+ rubocop-rspec (3.9.0)
130
+ lint_roller (~> 1.1)
131
+ rubocop (~> 1.81)
132
+ rubocop-shopify (2.18.0)
133
+ rubocop (~> 1.62)
164
134
  ruby-progressbar (1.13.0)
165
- ruby2_keywords (0.0.5)
166
- thread_safe (0.3.6)
167
- thread_safe (0.3.6-java)
168
- timers (4.3.5)
169
- traces (0.9.1)
170
- tzinfo (2.0.6)
171
- concurrent-ruby (~> 1.0)
172
- unicode-display_width (2.4.2)
173
- vcr (6.1.0)
174
- webmock (3.18.1)
135
+ sawyer (0.9.3)
136
+ addressable (>= 2.3.5)
137
+ faraday (>= 0.17.3, < 3)
138
+ stringio (3.2.0)
139
+ traces (0.18.2)
140
+ tsort (0.2.0)
141
+ unicode-display_width (3.2.0)
142
+ unicode-emoji (~> 4.1)
143
+ unicode-emoji (4.2.0)
144
+ uri (1.1.1)
145
+ vcr (6.4.0)
146
+ webmock (3.26.1)
175
147
  addressable (>= 2.8.0)
176
148
  crack (>= 0.3.2)
177
149
  hashdiff (>= 0.4.0, < 2.0.0)
178
150
 
179
151
  PLATFORMS
152
+ arm64-darwin-25
180
153
  ruby
181
- universal-java-11
182
- x86_64-darwin-21
183
- x86_64-linux
184
154
 
185
155
  DEPENDENCIES
186
156
  code-scanning-rubocop
187
- dead_end
188
157
  debug
189
158
  faker
190
159
  rake (>= 13.0)
@@ -197,5 +166,74 @@ DEPENDENCIES
197
166
  vcr
198
167
  webmock
199
168
 
169
+ CHECKSUMS
170
+ addressable (2.8.8) sha256=7c13b8f9536cf6364c03b9d417c19986019e28f7c00ac8132da4eb0fe393b057
171
+ ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
172
+ async (2.36.0) sha256=090623f4c65706664355c9efa6c7bfb86771a513e65cd681c51cb27747530550
173
+ bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7
174
+ code-scanning-rubocop (0.6.1) sha256=f6036d4541307ab982b46b424b7577be3a78982a770a4d92307029a9f668cb2f
175
+ concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
176
+ console (1.34.3) sha256=869fbd74697efc4c606f102d2812b0b008e4e7fd738a91c591e8577140ec0dcc
177
+ crack (1.0.1) sha256=ff4a10390cd31d66440b7524eb1841874db86201d5b70032028553130b6d4c7e
178
+ date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
179
+ debug (1.11.1) sha256=2e0b0ac6119f2207a6f8ac7d4a73ca8eb4e440f64da0a3136c30343146e952b6
180
+ diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
181
+ erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5
182
+ faker (3.6.0) sha256=4ce80bf91c8d09bbfff4c5596690bf862d60eac420f86737ca8ce12a54dc464a
183
+ faraday (2.14.1) sha256=a43cceedc1e39d188f4d2cdd360a8aaa6a11da0c407052e426ba8d3fb42ef61c
184
+ faraday-net_http (3.4.2) sha256=f147758260d3526939bf57ecf911682f94926a3666502e24c69992765875906c
185
+ faraday-retry (2.4.0) sha256=7b79c48fb7e56526faf247b12d94a680071ff40c9fda7cf1ec1549439ad11ebe
186
+ fiber-annotation (0.2.0) sha256=7abfadf1d119f508867d4103bf231c0354d019cc39a5738945dec2edadaf6c03
187
+ fiber-local (1.1.0) sha256=c885f94f210fb9b05737de65d511136ea602e00c5105953748aa0f8793489f06
188
+ fiber-storage (1.0.1) sha256=f48e5b6d8b0be96dac486332b55cee82240057065dc761c1ea692b2e719240e1
189
+ gems (1.3.0) sha256=37e7fb834365f39d3c2c649f0a7017288b0fe9ca69d3056b6760b53468b585ae
190
+ hashdiff (1.2.1) sha256=9c079dbc513dfc8833ab59c0c2d8f230fa28499cc5efb4b8dd276cf931457cd1
191
+ i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
192
+ io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
193
+ io-event (1.14.2) sha256=b0a069190eafe86005c22f7464f744971b5bd82f153740d34e6ab49548d4f613
194
+ irb (1.17.0) sha256=168c4ddb93d8a361a045c41d92b2952c7a118fa73f23fe14e55609eb7a863aae
195
+ json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
196
+ language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
197
+ lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
198
+ logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
199
+ metrics (0.15.0) sha256=61ded5bac95118e995b1bc9ed4a5f19bc9814928a312a85b200abbdac9039072
200
+ net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996
201
+ octokit (10.0.0) sha256=82e99a539b7637b7e905e6d277bb0c1a4bed56735935cc33db6da7eae49a24e8
202
+ parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
203
+ parser (3.3.10.2) sha256=6f60c84aa4bdcedb6d1a2434b738fe8a8136807b6adc8f7f53b97da9bc4e9357
204
+ pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6
205
+ prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
206
+ prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
207
+ psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974
208
+ public_suffix (7.0.2) sha256=9114090c8e4e7135c1fd0e7acfea33afaab38101884320c65aaa0ffb8e26a857
209
+ racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
210
+ rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
211
+ rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
212
+ rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192
213
+ regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
214
+ reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835
215
+ rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142
216
+ rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
217
+ rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
218
+ rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
219
+ rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c
220
+ rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
221
+ rubocop (1.84.2) sha256=5692cea54168f3dc8cb79a6fe95c5424b7ea893c707ad7a4307b0585e88dbf5f
222
+ rubocop-ast (1.49.0) sha256=49c3676d3123a0923d333e20c6c2dbaaae2d2287b475273fddee0c61da9f71fd
223
+ rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
224
+ rubocop-rspec (3.9.0) sha256=8fa70a3619408237d789aeecfb9beef40576acc855173e60939d63332fdb55e2
225
+ rubocop-shopify (2.18.0) sha256=dafa25e5617ce4600ff86b1de3d5b78e43ab3d58cc5729df38e492b8e10294eb
226
+ ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
227
+ sawyer (0.9.3) sha256=0d0f19298408047037638639fe62f4794483fb04320269169bd41af2bdcf5e41
228
+ still_active (1.0.0)
229
+ stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1
230
+ traces (0.18.2) sha256=80f1649cb4daace1d7174b81f3b3b7427af0b93047759ba349960cb8f315e214
231
+ tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
232
+ unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
233
+ unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
234
+ uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
235
+ vcr (6.4.0) sha256=077ac92cc16efc5904eb90492a18153b5e6ca5398046d8a249a7c96a9ea24ae6
236
+ webmock (3.26.1) sha256=4f696fb57c90a827c20aadb2d4f9058bbff10f7f043bd0d4c3f58791143b1cd7
237
+
200
238
  BUNDLED WITH
201
- 2.4.12
239
+ 4.0.3
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # `still_active`
2
2
 
3
- Identify which of your dependencies are no longer under active development.
3
+ Analyses your Gemfile dependencies for staleness: latest releases, last commit dates (GitHub and GitLab), OpenSSF Scorecard scores, and known vulnerabilities via deps.dev. Outputs coloured terminal tables, markdown, or JSON with CI gating support.
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/still_active.svg)](https://badge.fury.io/rb/still_active)
6
6
 
@@ -16,7 +16,7 @@ gem install still_active
16
16
 
17
17
  ## Usage
18
18
 
19
- The most important flag is the GitHub OAuth token, without which you will most certainly get rate limited.
19
+ Tokens are read from `GITHUB_TOKEN` and `GITLAB_TOKEN` environment variables by default. Without a GitHub token you will most certainly get rate limited. The GitLab token is optional for public repos but required for private ones. CLI flags override the env vars.
20
20
 
21
21
  ```text
22
22
  Usage: still_active [options]
@@ -25,12 +25,16 @@ Usage: still_active [options]
25
25
 
26
26
  --gemfile=GEMFILE path to gemfile
27
27
  --gems=GEM,GEM2,... Gem(s)
28
- --markdown Prints output in markdown format
29
- --json Prints output in JSON format
28
+ --terminal Coloured terminal output (default in TTY)
29
+ --markdown Markdown table output
30
+ --json JSON output (default when piped)
30
31
  --github-oauth-token=TOKEN GitHub OAuth token to make API calls
32
+ --gitlab-token=TOKEN GitLab personal access token for API calls
31
33
  --simultaneous-requests=QTY Number of simultaneous requests made
32
- --no-warning-range-end=YEARS maximum number of years since last activity until which you do not want to be warned about
33
- --warning-range-end=YEARS maximum number of years since last activity that you want to be warned about
34
+ --safe-range-end=YEARS maximum years since last activity considered safe (no warning)
35
+ --warning-range-end=YEARS maximum years since last activity that triggers a warning (beyond this is critical)
36
+ --fail-if-critical Exit 1 if any gem has critical activity warning
37
+ --fail-if-warning Exit 1 if any gem has warning or critical activity warning
34
38
  --critical-warning-emoji=EMOJI
35
39
  --futurist-emoji=EMOJI
36
40
  --success-emoji=EMOJI
@@ -49,49 +53,84 @@ still_active --json --gems=rails,nokogiri
49
53
  Will output:
50
54
 
51
55
  ```json
52
- {"rails":{"latest_version":"6.1.4.1","latest_version_release_date":"2021-08-19 16:27:05 UTC","latest_pre_release_version":"7.0.0.alpha2","latest_pre_release_version_release_date":"2021-09-15 23:16:26 UTC","repository_url":"https://github.com/rails/rails","last_commit_date":"2021-11-06 09:16:40 UTC","ruby_gems_url":"https://rubygems.org/gems/rails"},"nokogiri":{"latest_version":"1.12.5","latest_version_release_date":"2021-09-27 19:03:57 UTC","latest_pre_release_version":"1.12.0.rc1","latest_pre_release_version_release_date":"2021-07-09 20:00:11 UTC","repository_url":"https://github.com/sparklemotion/nokogiri","last_commit_date":"2021-11-06 16:44:55 UTC","ruby_gems_url":"https://rubygems.org/gems/nokogiri"}}
56
+ {
57
+ "rails": {
58
+ "latest_version": "8.1.2",
59
+ "latest_version_release_date": "2026-01-08 20:18:51 UTC",
60
+ "latest_pre_release_version": "8.1.0.rc1",
61
+ "latest_pre_release_version_release_date": "2025-10-15 00:52:14 UTC",
62
+ "repository_url": "https://github.com/rails/rails",
63
+ "last_commit_date": "2026-02-19 09:39:03 UTC",
64
+ "scorecard_score": 5.7,
65
+ "vulnerability_count": 0,
66
+ "ruby_gems_url": "https://rubygems.org/gems/rails"
67
+ },
68
+ "nokogiri": {
69
+ "latest_version": "1.19.1",
70
+ "latest_version_release_date": "2026-02-16 23:31:21 UTC",
71
+ "latest_pre_release_version": "1.18.0.rc1",
72
+ "latest_pre_release_version_release_date": "2024-12-16 17:48:44 UTC",
73
+ "repository_url": "https://github.com/sparklemotion/nokogiri",
74
+ "last_commit_date": "2026-02-17 19:13:22 UTC",
75
+ "scorecard_score": 6.5,
76
+ "vulnerability_count": 0,
77
+ "ruby_gems_url": "https://rubygems.org/gems/nokogiri"
78
+ }
79
+ }
53
80
  ```
54
81
 
55
82
  ```bash
56
- # for this gem
57
- still_active --github-oauth-token=my-token-here
83
+ # run against this gem's own Gemfile
84
+ still_active --markdown
58
85
  ```
59
86
 
60
87
  Outputs:
61
88
 
62
- | gem activity old? | up to date? | name | version used | release date | latest version | release date | latest pre-release version | release date | last commit date |
63
- | ----------------- | ----------- | ---- | ------------ | ------------ | -------------- | ------------ | --------------------------- | ------------ | ---------------- |
64
- | ⚠️ | ✅ | [code-scanning-rubocop](https://github.com/arthurnn/code-scanning-rubocop) | [0.6.1](https://rubygems.org/gems/code-scanning-rubocop/versions/0.6.1) | 2022/02 | [0.6.1](https://rubygems.org/gems/code-scanning-rubocop/versions/0.6.1) | 2022/02 | ❓ | ❓ | [2022/02](https://github.com/arthurnn/code-scanning-rubocop) |
65
- | | ✅ | [dead_end](https://github.com/zombocom/dead_end) | [4.0.0](https://rubygems.org/gems/dead_end/versions/4.0.0) | 2022/06 | [4.0.0](https://rubygems.org/gems/dead_end/versions/4.0.0) | 2022/06 | ❓ | ❓ | [2023/05](https://github.com/zombocom/dead_end) |
66
- | | ✅ | [debug](https://github.com/ruby/debug) | [1.8.0](https://rubygems.org/gems/debug/versions/1.8.0) | 2023/05 | [1.8.0](https://rubygems.org/gems/debug/versions/1.8.0) | 2023/05 | [1.0.0.rc2](https://rubygems.org/gems/debug/versions/1.0.0.rc2) | 2021/09 | [2023/05](https://github.com/ruby/debug) |
67
- | | ✅ | [faker](https://github.com/faker-ruby/faker) | [3.2.0](https://rubygems.org/gems/faker/versions/3.2.0) | 2023/04 | [3.2.0](https://rubygems.org/gems/faker/versions/3.2.0) | 2023/04 | ❓ | ❓ | [2023/05](https://github.com/faker-ruby/faker) |
68
- | | ✅ | [rake](https://github.com/ruby/rake) | [13.0.6](https://rubygems.org/gems/rake/versions/13.0.6) | 2021/07 | [13.0.6](https://rubygems.org/gems/rake/versions/13.0.6) | 2021/07 | [13.0.0.pre.1](https://rubygems.org/gems/rake/versions/13.0.0.pre.1) | 2019/09 | [2023/05](https://github.com/ruby/rake) |
69
- | | ✅ | [rspec](https://github.com/rspec/rspec-metagem) | [3.12.0](https://rubygems.org/gems/rspec/versions/3.12.0) | 2022/10 | [3.12.0](https://rubygems.org/gems/rspec/versions/3.12.0) | 2022/10 | [3.6.0.beta2](https://rubygems.org/gems/rspec/versions/3.6.0.beta2) | 2016/12 | [2022/10](https://github.com/rspec/rspec-metagem) |
70
- | | ✅ | [rubocop](https://github.com/rubocop/rubocop) | [1.51.0](https://rubygems.org/gems/rubocop/versions/1.51.0) | 2023/05 | [1.51.0](https://rubygems.org/gems/rubocop/versions/1.51.0) | 2023/05 | ❓ | ❓ | [2023/05](https://github.com/rubocop/rubocop) |
71
- | | ✅ | [rubocop-performance](https://github.com/rubocop/rubocop-performance) | [1.18.0](https://rubygems.org/gems/rubocop-performance/versions/1.18.0) | 2023/05 | [1.18.0](https://rubygems.org/gems/rubocop-performance/versions/1.18.0) | 2023/05 | ❓ | ❓ | [2023/05](https://github.com/rubocop/rubocop-performance) |
72
- | | ✅ | [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) | [2.22.0](https://rubygems.org/gems/rubocop-rspec/versions/2.22.0) | 2023/05 | [2.22.0](https://rubygems.org/gems/rubocop-rspec/versions/2.22.0) | 2023/05 | [2.0.0.pre](https://rubygems.org/gems/rubocop-rspec/versions/2.0.0.pre) | 2020/10 | [2023/05](https://github.com/rubocop/rubocop-rspec) |
73
- | | ✅ | [rubocop-shopify](https://github.com/Shopify/ruby-style-guide) | [2.13.0](https://rubygems.org/gems/rubocop-shopify/versions/2.13.0) | 2023/04 | [2.13.0](https://rubygems.org/gems/rubocop-shopify/versions/2.13.0) | 2023/04 | ❓ | ❓ | [2023/05](https://github.com/Shopify/ruby-style-guide) |
74
- | | ⚠️ | [still_active](https://github.com/SeanLF/still_active) | [0.5.0](https://rubygems.org/gems/still_active/versions/0.5.0) | | [0.4.1](https://rubygems.org/gems/still_active/versions/0.4.1) | 2022/02 | ❓ | ❓ | [2023/05](https://github.com/SeanLF/still_active) |
75
- | | ✅ | [vcr](https://github.com/vcr/vcr) | [6.1.0](https://rubygems.org/gems/vcr/versions/6.1.0) | 2022/03 | [6.1.0](https://rubygems.org/gems/vcr/versions/6.1.0) | 2022/03 | [2.0.0.rc2](https://rubygems.org/gems/vcr/versions/2.0.0.rc2) | 2012/02 | [2023/01](https://github.com/vcr/vcr) |
76
- | | | [webmock](https://github.com/bblimke/webmock) | [3.18.1](https://rubygems.org/gems/webmock/versions/3.18.1) | 2022/08 | [3.18.1](https://rubygems.org/gems/webmock/versions/3.18.1) | 2022/08 | [2.0.0.beta2](https://rubygems.org/gems/webmock/versions/2.0.0.beta2) | 2016/04 | [2022/08](https://github.com/bblimke/webmock) |
89
+ | activity | up to date? | OpenSSF | vulns | name | version used | latest version | latest pre-release | last commit |
90
+ | -------- | ----------- | ------- | ----- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------ |
91
+ | ⚠️ | ✅ | 3.1/10 | ✅ | [code-scanning-rubocop](https://github.com/arthurnn/code-scanning-rubocop) | [0.6.1](https://rubygems.org/gems/code-scanning-rubocop/versions/0.6.1) (2022/02) | [0.6.1](https://rubygems.org/gems/code-scanning-rubocop/versions/0.6.1) (2022/02) | ❓ | [2024/06](https://github.com/arthurnn/code-scanning-rubocop) |
92
+ | | ✅ | 5.2/10 | ✅ | [debug](https://github.com/ruby/debug) | [1.11.1](https://rubygems.org/gems/debug/versions/1.11.1) (2025/12) | [1.11.1](https://rubygems.org/gems/debug/versions/1.11.1) (2025/12) | [1.0.0.rc2](https://rubygems.org/gems/debug/versions/1.0.0.rc2) (2021/09) | [2025/12](https://github.com/ruby/debug) |
93
+ | | ✅ | 7.4/10 | ✅ | [faker](https://github.com/faker-ruby/faker) | [3.6.0](https://rubygems.org/gems/faker/versions/3.6.0) (2026/01) | [3.6.0](https://rubygems.org/gems/faker/versions/3.6.0) (2026/01) | | [2026/02](https://github.com/faker-ruby/faker) |
94
+ | | ✅ | 5.3/10 | ✅ | [rake](https://github.com/ruby/rake) | [13.3.1](https://rubygems.org/gems/rake/versions/13.3.1) (2025/10) | [13.3.1](https://rubygems.org/gems/rake/versions/13.3.1) (2025/10) | [13.0.0.pre.1](https://rubygems.org/gems/rake/versions/13.0.0.pre.1) (2019/09) | [2026/02](https://github.com/ruby/rake) |
95
+ | | ✅ | 6.9/10 | ✅ | [rspec](https://github.com/rspec/rspec) | [3.13.2](https://rubygems.org/gems/rspec/versions/3.13.2) (2025/10) | [3.13.2](https://rubygems.org/gems/rspec/versions/3.13.2) (2025/10) | [4.0.0.beta1](https://rubygems.org/gems/rspec/versions/4.0.0.beta1) (2026/02) | [2026/02](https://github.com/rspec/rspec) |
96
+ | | ✅ | 5.9/10 | ✅ | [rubocop](https://github.com/rubocop/rubocop) | [1.84.2](https://rubygems.org/gems/rubocop/versions/1.84.2) (2026/02) | [1.84.2](https://rubygems.org/gems/rubocop/versions/1.84.2) (2026/02) | | [2026/02](https://github.com/rubocop/rubocop) |
97
+ | | ✅ | | ✅ | [rubocop-performance](https://github.com/rubocop/rubocop-performance) | [1.26.1](https://rubygems.org/gems/rubocop-performance/versions/1.26.1) (2025/10) | [1.26.1](https://rubygems.org/gems/rubocop-performance/versions/1.26.1) (2025/10) | ❓ | [2026/01](https://github.com/rubocop/rubocop-performance) |
98
+ | | ✅ | | ✅ | [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) | [3.9.0](https://rubygems.org/gems/rubocop-rspec/versions/3.9.0) (2026/01) | [3.9.0](https://rubygems.org/gems/rubocop-rspec/versions/3.9.0) (2026/01) | [3.0.0.pre](https://rubygems.org/gems/rubocop-rspec/versions/3.0.0.pre) (2024/06) | [2026/02](https://github.com/rubocop/rubocop-rspec) |
99
+ | | ✅ | | ✅ | [rubocop-shopify](https://github.com/Shopify/ruby-style-guide) | [2.18.0](https://rubygems.org/gems/rubocop-shopify/versions/2.18.0) (2025/10) | [2.18.0](https://rubygems.org/gems/rubocop-shopify/versions/2.18.0) (2025/10) | | [2026/01](https://github.com/Shopify/ruby-style-guide) |
100
+ | | ✅ | | ✅ | [vcr](https://github.com/vcr/vcr) | [6.4.0](https://rubygems.org/gems/vcr/versions/6.4.0) (2025/12) | [6.4.0](https://rubygems.org/gems/vcr/versions/6.4.0) (2025/12) | [2.0.0.rc2](https://rubygems.org/gems/vcr/versions/2.0.0.rc2) (2012/02) | [2026/01](https://github.com/vcr/vcr) |
101
+ | | ✅ | 4.2/10 | ✅ | [webmock](https://github.com/bblimke/webmock) | [3.26.1](https://rubygems.org/gems/webmock/versions/3.26.1) (2025/10) | [3.26.1](https://rubygems.org/gems/webmock/versions/3.26.1) (2025/10) | [2.0.0.beta2](https://rubygems.org/gems/webmock/versions/2.0.0.beta2) (2016/04) | [2026/01](https://github.com/bblimke/webmock) |
102
+
103
+ ### CI quality gating
104
+
105
+ Use `--fail-if-critical` or `--fail-if-warning` to fail CI pipelines when dependencies exceed activity thresholds:
106
+
107
+ ```bash
108
+ still_active --gemfile=Gemfile --fail-if-warning --json
109
+ ```
110
+
111
+ ### Data sources
112
+
113
+ - **Versions and release dates** from [RubyGems.org](https://rubygems.org)
114
+ - **Last commit date** from the [GitHub](https://docs.github.com/en/rest) or [GitLab](https://docs.gitlab.com/ee/api/) API
115
+ - **OpenSSF Scorecard** and **vulnerability counts** from Google's [deps.dev](https://deps.dev) API
77
116
 
78
117
  ### Configuration options
79
118
 
80
119
  - `gemfile_path` uses bundler to detect the Gemfile in your working directory
81
- - `output_format` is markdown, can be configured to be JSON
120
+ - `output_format` auto-detects: coloured terminal on TTY, JSON when piped. Override with `--terminal`, `--markdown`, or `--json`
82
121
  - `critical_warning_emoji` 🚩
83
122
  - `futurist_emoji` 🔮
84
123
  - `success_emoji` ✅
85
124
  - `unsure_emoji` ❓
86
125
  - `warning_emoji` ⚠️
87
- - `no_warning_range_end` 1 (considered safe if last activity is at most 1 year ago)
88
- - `warning_range_end` 3 (warns if last activity is between 1 and 3 years ago)
126
+ - `safe_range_end` 1 (considered safe if last activity is at most 1 year ago)
127
+ - `warning_range_end` 3 (warns if last activity is between 1 and 3 years ago; beyond 3 is critical)
89
128
 
90
129
  ## Development
91
130
 
92
131
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
93
132
 
94
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
133
+ To install this gem onto your local machine, run `bundle exec rake install`. New versions are published automatically to [rubygems.org](https://rubygems.org) when a GitHub Release is created (via trusted publishing).
95
134
 
96
135
  ## Contributing
97
136
 
@@ -0,0 +1,38 @@
1
+ [
2
+ {
3
+ "number": "1.3.4",
4
+ "created_at": "2021-10-29T07:21:16.042Z",
5
+ "prerelease": false,
6
+ "metadata": { "source_code_uri": "https://github.com/ruby/debug" }
7
+ },
8
+ {
9
+ "number": "1.3.3",
10
+ "created_at": "2021-10-29T04:48:09.876Z",
11
+ "prerelease": false,
12
+ "metadata": { "source_code_uri": "https://github.com/ruby/debug" }
13
+ },
14
+ {
15
+ "number": "1.0.0",
16
+ "created_at": "2021-09-08T16:25:30.074Z",
17
+ "prerelease": false,
18
+ "metadata": { "source_code_uri": "https://github.com/ruby/debug" }
19
+ },
20
+ {
21
+ "number": "1.0.0.rc2",
22
+ "created_at": "2021-09-03T07:53:40.032Z",
23
+ "prerelease": true,
24
+ "metadata": { "source_code_uri": "https://github.com/ruby/debug" }
25
+ },
26
+ {
27
+ "number": "1.0.0.rc1",
28
+ "created_at": "2021-09-03T05:58:34.505Z",
29
+ "prerelease": true,
30
+ "metadata": { "source_code_uri": "https://github.com/ruby/debug" }
31
+ },
32
+ {
33
+ "number": "0.2.0",
34
+ "created_at": "2021-03-17T04:23:11.571Z",
35
+ "prerelease": false,
36
+ "metadata": { "source_code_uri": "https://github.com/ruby/debug" }
37
+ }
38
+ ]
@@ -0,0 +1,9 @@
1
+ {
2
+ "number": "0.1.0",
3
+ "created_at": "2021-11-07T13:07:51.346Z",
4
+ "prerelease": false,
5
+ "metadata": {
6
+ "homepage_uri": "https://github.com/SeanLF/still_active.",
7
+ "source_code_uri": "https://github.com/SeanLF/still_active."
8
+ }
9
+ }