compact_index 0.9.3 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop-bundler.yml +96 -0
- data/.rubocop.yml +4 -0
- data/.rubocop_todo.yml +389 -0
- data/.travis.yml +2 -1
- data/.yardopts +2 -0
- data/CHANGELOG.md +18 -0
- data/Gemfile +3 -0
- data/compact_index.gemspec +1 -1
- data/lib/compact_index/ext/date.rb +8 -0
- data/lib/compact_index/gem_version.rb +2 -1
- data/lib/compact_index/version.rb +1 -1
- data/lib/compact_index/versions_file.rb +64 -52
- data/lib/compact_index.rb +78 -20
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad1dc1768a2c3699451729892496cc84c87b47fa
|
4
|
+
data.tar.gz: bc2a2568b268897a9292262754183cd959bbb1e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37ac28ed2d9c66a90e905dabb7fb7f21b6c74272bca4a03d894cdfad2c5f96618ac032c7eae406a52912eda9c34f936a1f87cdd4abc953646a9565acc83fb9be
|
7
|
+
data.tar.gz: 56316d3972c1cac287f3bf02d16d5f39f01a4891bb9a6ca089781abdd852a2f4a83a06ff482985b0f5e439a877192cabce411af08ea7de722f7091064d067ff3
|
@@ -0,0 +1,96 @@
|
|
1
|
+
inherit_from:
|
2
|
+
- .rubocop_todo.yml
|
3
|
+
|
4
|
+
AllCops:
|
5
|
+
Exclude:
|
6
|
+
- tmp/**/*
|
7
|
+
- lib/bundler/vendor/**/*
|
8
|
+
DisplayCopNames: true
|
9
|
+
|
10
|
+
# Lint
|
11
|
+
|
12
|
+
# They are idiomatic
|
13
|
+
Lint/AssignmentInCondition:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
Lint/EndAlignment:
|
17
|
+
AlignWith: variable
|
18
|
+
|
19
|
+
Lint/UnusedMethodArgument:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
# Style
|
23
|
+
|
24
|
+
Style/AccessModifierIndentation:
|
25
|
+
EnforcedStyle: outdent
|
26
|
+
|
27
|
+
Style/AlignParameters:
|
28
|
+
EnforcedStyle: with_fixed_indentation
|
29
|
+
|
30
|
+
Style/MultilineOperationIndentation:
|
31
|
+
EnforcedStyle: indented
|
32
|
+
|
33
|
+
Style/SpaceInsideBlockBraces:
|
34
|
+
SpaceBeforeBlockParameters: false
|
35
|
+
|
36
|
+
Style/TrivialAccessors:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
# We adopted raise instead of fail.
|
40
|
+
Style/SignalException:
|
41
|
+
EnforcedStyle: only_raise
|
42
|
+
|
43
|
+
Style/StringLiterals:
|
44
|
+
EnforcedStyle: double_quotes
|
45
|
+
|
46
|
+
Style/StringLiteralsInInterpolation:
|
47
|
+
EnforcedStyle: double_quotes
|
48
|
+
|
49
|
+
# Having these make it easier to *not* forget to add one when adding a new
|
50
|
+
# value and you can simply copy the previous line.
|
51
|
+
Style/TrailingComma:
|
52
|
+
EnforcedStyleForMultiline: comma
|
53
|
+
|
54
|
+
# 1.8.7 support
|
55
|
+
|
56
|
+
Style/HashSyntax:
|
57
|
+
EnforcedStyle: hash_rockets
|
58
|
+
|
59
|
+
Style/Lambda:
|
60
|
+
Enabled: false
|
61
|
+
|
62
|
+
Style/DotPosition:
|
63
|
+
EnforcedStyle: trailing
|
64
|
+
|
65
|
+
Style/EachWithObject:
|
66
|
+
Enabled: false
|
67
|
+
|
68
|
+
Style/SpecialGlobalVars:
|
69
|
+
Enabled: false
|
70
|
+
|
71
|
+
Style/TrailingComma:
|
72
|
+
Enabled: false
|
73
|
+
|
74
|
+
# Metrics
|
75
|
+
|
76
|
+
# We've chosen to use Rubocop only for style, and not for complexity or quality checks.
|
77
|
+
Metrics/ClassLength:
|
78
|
+
Enabled: false
|
79
|
+
|
80
|
+
Metrics/ModuleLength:
|
81
|
+
Enabled: false
|
82
|
+
|
83
|
+
Metrics/MethodLength:
|
84
|
+
Enabled: false
|
85
|
+
|
86
|
+
Metrics/BlockNesting:
|
87
|
+
Enabled: false
|
88
|
+
|
89
|
+
Metrics/AbcSize:
|
90
|
+
Enabled: false
|
91
|
+
|
92
|
+
Metrics/CyclomaticComplexity:
|
93
|
+
Enabled: false
|
94
|
+
|
95
|
+
Metrics/PerceivedComplexity:
|
96
|
+
Enabled: false
|
data/.rubocop.yml
ADDED
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,389 @@
|
|
1
|
+
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
+
# on 2015-07-20 19:11:40 -0300 using RuboCop version 0.32.1.
|
3
|
+
# The point is for the user to remove these configuration records
|
4
|
+
# one by one as the offenses are removed from the code base.
|
5
|
+
# Note that changes in the inspected code, or installation of new
|
6
|
+
# versions of RuboCop, may require this file to be generated again.
|
7
|
+
|
8
|
+
# Offense count: 1
|
9
|
+
Lint/AmbiguousOperator:
|
10
|
+
Enabled: false
|
11
|
+
|
12
|
+
# Offense count: 1
|
13
|
+
# Configuration parameters: AllowSafeAssignment.
|
14
|
+
Lint/AssignmentInCondition:
|
15
|
+
Enabled: false
|
16
|
+
|
17
|
+
# Offense count: 1
|
18
|
+
# Cop supports --auto-correct.
|
19
|
+
Lint/DeprecatedClassMethods:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
# Offense count: 2
|
23
|
+
Lint/Eval:
|
24
|
+
Enabled: false
|
25
|
+
|
26
|
+
# Offense count: 1
|
27
|
+
Lint/HandleExceptions:
|
28
|
+
Enabled: false
|
29
|
+
|
30
|
+
# Offense count: 1
|
31
|
+
Lint/LiteralInCondition:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
# Offense count: 2
|
35
|
+
Lint/NestedMethodDefinition:
|
36
|
+
Enabled: false
|
37
|
+
|
38
|
+
# Offense count: 1
|
39
|
+
Lint/ShadowingOuterLocalVariable:
|
40
|
+
Enabled: false
|
41
|
+
|
42
|
+
# Offense count: 5
|
43
|
+
# Cop supports --auto-correct.
|
44
|
+
Lint/UnusedBlockArgument:
|
45
|
+
Enabled: false
|
46
|
+
|
47
|
+
# Offense count: 3
|
48
|
+
# Cop supports --auto-correct.
|
49
|
+
Lint/UnusedMethodArgument:
|
50
|
+
Enabled: false
|
51
|
+
|
52
|
+
# Offense count: 10
|
53
|
+
Lint/UselessAssignment:
|
54
|
+
Enabled: false
|
55
|
+
|
56
|
+
# Offense count: 11
|
57
|
+
Metrics/AbcSize:
|
58
|
+
Max: 43
|
59
|
+
|
60
|
+
# Offense count: 2
|
61
|
+
# Configuration parameters: CountComments.
|
62
|
+
Metrics/ClassLength:
|
63
|
+
Max: 143
|
64
|
+
|
65
|
+
# Offense count: 1
|
66
|
+
Metrics/CyclomaticComplexity:
|
67
|
+
Max: 7
|
68
|
+
|
69
|
+
# Offense count: 65
|
70
|
+
# Configuration parameters: AllowURI, URISchemes.
|
71
|
+
Metrics/LineLength:
|
72
|
+
Max: 122
|
73
|
+
|
74
|
+
# Offense count: 21
|
75
|
+
# Configuration parameters: CountComments.
|
76
|
+
Metrics/MethodLength:
|
77
|
+
Max: 34
|
78
|
+
|
79
|
+
# Offense count: 2
|
80
|
+
# Cop supports --auto-correct.
|
81
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
82
|
+
Style/AccessModifierIndentation:
|
83
|
+
Enabled: false
|
84
|
+
|
85
|
+
# Offense count: 3
|
86
|
+
Style/AccessorMethodName:
|
87
|
+
Enabled: false
|
88
|
+
|
89
|
+
# Offense count: 5
|
90
|
+
# Cop supports --auto-correct.
|
91
|
+
Style/AlignArray:
|
92
|
+
Enabled: false
|
93
|
+
|
94
|
+
# Offense count: 3
|
95
|
+
# Cop supports --auto-correct.
|
96
|
+
# Configuration parameters: EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle, SupportedLastArgumentHashStyles.
|
97
|
+
Style/AlignHash:
|
98
|
+
Enabled: false
|
99
|
+
|
100
|
+
# Offense count: 3
|
101
|
+
# Cop supports --auto-correct.
|
102
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
103
|
+
Style/AlignParameters:
|
104
|
+
Enabled: false
|
105
|
+
|
106
|
+
# Offense count: 1
|
107
|
+
# Cop supports --auto-correct.
|
108
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
109
|
+
Style/AndOr:
|
110
|
+
Enabled: false
|
111
|
+
|
112
|
+
# Offense count: 9
|
113
|
+
# Cop supports --auto-correct.
|
114
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles, ProceduralMethods, FunctionalMethods, IgnoredMethods.
|
115
|
+
Style/BlockDelimiters:
|
116
|
+
Enabled: false
|
117
|
+
|
118
|
+
# Offense count: 2
|
119
|
+
# Cop supports --auto-correct.
|
120
|
+
Style/BlockEndNewline:
|
121
|
+
Enabled: false
|
122
|
+
|
123
|
+
# Offense count: 3
|
124
|
+
# Cop supports --auto-correct.
|
125
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
126
|
+
Style/BracesAroundHashParameters:
|
127
|
+
Enabled: false
|
128
|
+
|
129
|
+
# Offense count: 12
|
130
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
131
|
+
Style/ClassAndModuleChildren:
|
132
|
+
Enabled: false
|
133
|
+
|
134
|
+
# Offense count: 9
|
135
|
+
Style/ClassVars:
|
136
|
+
Enabled: false
|
137
|
+
|
138
|
+
# Offense count: 31
|
139
|
+
Style/Documentation:
|
140
|
+
Enabled: false
|
141
|
+
|
142
|
+
# Offense count: 9
|
143
|
+
# Cop supports --auto-correct.
|
144
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
145
|
+
Style/DotPosition:
|
146
|
+
Enabled: false
|
147
|
+
|
148
|
+
# Offense count: 2
|
149
|
+
# Cop supports --auto-correct.
|
150
|
+
# Configuration parameters: AllowAdjacentOneLineDefs.
|
151
|
+
Style/EmptyLineBetweenDefs:
|
152
|
+
Enabled: false
|
153
|
+
|
154
|
+
# Offense count: 1
|
155
|
+
# Cop supports --auto-correct.
|
156
|
+
Style/EmptyLines:
|
157
|
+
Enabled: false
|
158
|
+
|
159
|
+
# Offense count: 6
|
160
|
+
# Cop supports --auto-correct.
|
161
|
+
Style/EmptyLinesAroundAccessModifier:
|
162
|
+
Enabled: false
|
163
|
+
|
164
|
+
# Offense count: 1
|
165
|
+
# Cop supports --auto-correct.
|
166
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
167
|
+
Style/EmptyLinesAroundBlockBody:
|
168
|
+
Enabled: false
|
169
|
+
|
170
|
+
# Offense count: 2
|
171
|
+
# Cop supports --auto-correct.
|
172
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
173
|
+
Style/EmptyLinesAroundClassBody:
|
174
|
+
Enabled: false
|
175
|
+
|
176
|
+
# Offense count: 12
|
177
|
+
# Configuration parameters: AllowedVariables.
|
178
|
+
Style/GlobalVars:
|
179
|
+
Enabled: false
|
180
|
+
|
181
|
+
# Offense count: 2
|
182
|
+
# Configuration parameters: MinBodyLength.
|
183
|
+
Style/GuardClause:
|
184
|
+
Enabled: false
|
185
|
+
|
186
|
+
# Offense count: 85
|
187
|
+
# Cop supports --auto-correct.
|
188
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles, UseHashRocketsWithSymbolValues.
|
189
|
+
Style/HashSyntax:
|
190
|
+
Enabled: false
|
191
|
+
|
192
|
+
# Offense count: 1
|
193
|
+
# Cop supports --auto-correct.
|
194
|
+
# Configuration parameters: MaxLineLength.
|
195
|
+
Style/IfUnlessModifier:
|
196
|
+
Enabled: false
|
197
|
+
|
198
|
+
# Offense count: 1
|
199
|
+
# Cop supports --auto-correct.
|
200
|
+
Style/IndentArray:
|
201
|
+
Enabled: false
|
202
|
+
|
203
|
+
# Offense count: 1
|
204
|
+
# Cop supports --auto-correct.
|
205
|
+
# Configuration parameters: Width.
|
206
|
+
Style/IndentationWidth:
|
207
|
+
Enabled: false
|
208
|
+
|
209
|
+
# Offense count: 1
|
210
|
+
# Cop supports --auto-correct.
|
211
|
+
Style/InfiniteLoop:
|
212
|
+
Enabled: false
|
213
|
+
|
214
|
+
# Offense count: 1
|
215
|
+
# Cop supports --auto-correct.
|
216
|
+
Style/Lambda:
|
217
|
+
Enabled: false
|
218
|
+
|
219
|
+
# Offense count: 1
|
220
|
+
# Cop supports --auto-correct.
|
221
|
+
Style/LeadingCommentSpace:
|
222
|
+
Enabled: false
|
223
|
+
|
224
|
+
# Offense count: 1
|
225
|
+
# Cop supports --auto-correct.
|
226
|
+
Style/LineEndConcatenation:
|
227
|
+
Enabled: false
|
228
|
+
|
229
|
+
# Offense count: 3
|
230
|
+
# Cop supports --auto-correct.
|
231
|
+
Style/MethodCallParentheses:
|
232
|
+
Enabled: false
|
233
|
+
|
234
|
+
# Offense count: 1
|
235
|
+
Style/MultilineBlockChain:
|
236
|
+
Enabled: false
|
237
|
+
|
238
|
+
# Offense count: 2
|
239
|
+
# Cop supports --auto-correct.
|
240
|
+
Style/MultilineBlockLayout:
|
241
|
+
Enabled: false
|
242
|
+
|
243
|
+
# Offense count: 1
|
244
|
+
# Cop supports --auto-correct.
|
245
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
246
|
+
Style/MultilineOperationIndentation:
|
247
|
+
Enabled: false
|
248
|
+
|
249
|
+
# Offense count: 1
|
250
|
+
# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
|
251
|
+
Style/Next:
|
252
|
+
Enabled: false
|
253
|
+
|
254
|
+
# Offense count: 1
|
255
|
+
# Cop supports --auto-correct.
|
256
|
+
Style/NumericLiterals:
|
257
|
+
MinDigits: 9
|
258
|
+
|
259
|
+
# Offense count: 4
|
260
|
+
# Cop supports --auto-correct.
|
261
|
+
# Configuration parameters: PreferredDelimiters.
|
262
|
+
Style/PercentLiteralDelimiters:
|
263
|
+
Enabled: false
|
264
|
+
|
265
|
+
# Offense count: 1
|
266
|
+
# Cop supports --auto-correct.
|
267
|
+
# Configuration parameters: AllowAsExpressionSeparator.
|
268
|
+
Style/Semicolon:
|
269
|
+
Enabled: false
|
270
|
+
|
271
|
+
# Offense count: 4
|
272
|
+
# Cop supports --auto-correct.
|
273
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
274
|
+
Style/SignalException:
|
275
|
+
Enabled: false
|
276
|
+
|
277
|
+
# Offense count: 1
|
278
|
+
# Configuration parameters: Methods.
|
279
|
+
Style/SingleLineBlockParams:
|
280
|
+
Enabled: false
|
281
|
+
|
282
|
+
# Offense count: 2
|
283
|
+
# Cop supports --auto-correct.
|
284
|
+
# Configuration parameters: AllowIfMethodIsEmpty.
|
285
|
+
Style/SingleLineMethods:
|
286
|
+
Enabled: false
|
287
|
+
|
288
|
+
# Offense count: 1
|
289
|
+
# Cop supports --auto-correct.
|
290
|
+
Style/SingleSpaceBeforeFirstArg:
|
291
|
+
Enabled: false
|
292
|
+
|
293
|
+
# Offense count: 1
|
294
|
+
# Cop supports --auto-correct.
|
295
|
+
Style/SpaceAfterComma:
|
296
|
+
Enabled: false
|
297
|
+
|
298
|
+
# Offense count: 61
|
299
|
+
# Cop supports --auto-correct.
|
300
|
+
# Configuration parameters: MultiSpaceAllowedForOperators.
|
301
|
+
Style/SpaceAroundOperators:
|
302
|
+
Enabled: false
|
303
|
+
|
304
|
+
# Offense count: 2
|
305
|
+
# Cop supports --auto-correct.
|
306
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
307
|
+
Style/SpaceBeforeBlockBraces:
|
308
|
+
Enabled: false
|
309
|
+
|
310
|
+
# Offense count: 7
|
311
|
+
# Cop supports --auto-correct.
|
312
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
|
313
|
+
Style/SpaceInsideBlockBraces:
|
314
|
+
Enabled: false
|
315
|
+
|
316
|
+
# Offense count: 5
|
317
|
+
# Cop supports --auto-correct.
|
318
|
+
Style/SpaceInsideBrackets:
|
319
|
+
Enabled: false
|
320
|
+
|
321
|
+
# Offense count: 11
|
322
|
+
# Cop supports --auto-correct.
|
323
|
+
# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SupportedStyles.
|
324
|
+
Style/SpaceInsideHashLiteralBraces:
|
325
|
+
Enabled: false
|
326
|
+
|
327
|
+
# Offense count: 40
|
328
|
+
# Cop supports --auto-correct.
|
329
|
+
Style/SpaceInsideParens:
|
330
|
+
Enabled: false
|
331
|
+
|
332
|
+
# Offense count: 13
|
333
|
+
# Cop supports --auto-correct.
|
334
|
+
Style/SpaceInsideStringInterpolation:
|
335
|
+
Enabled: false
|
336
|
+
|
337
|
+
# Offense count: 1
|
338
|
+
# Cop supports --auto-correct.
|
339
|
+
Style/SpecialGlobalVars:
|
340
|
+
Enabled: false
|
341
|
+
|
342
|
+
# Offense count: 308
|
343
|
+
# Cop supports --auto-correct.
|
344
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
345
|
+
Style/StringLiterals:
|
346
|
+
Enabled: false
|
347
|
+
|
348
|
+
# Offense count: 1
|
349
|
+
# Cop supports --auto-correct.
|
350
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
351
|
+
Style/StringLiteralsInInterpolation:
|
352
|
+
Enabled: false
|
353
|
+
|
354
|
+
# Offense count: 1
|
355
|
+
Style/StructInheritance:
|
356
|
+
Enabled: false
|
357
|
+
|
358
|
+
# Offense count: 1
|
359
|
+
# Cop supports --auto-correct.
|
360
|
+
# Configuration parameters: IgnoredMethods.
|
361
|
+
Style/SymbolProc:
|
362
|
+
Enabled: false
|
363
|
+
|
364
|
+
# Offense count: 2
|
365
|
+
# Cop supports --auto-correct.
|
366
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
367
|
+
Style/TrailingBlankLines:
|
368
|
+
Enabled: false
|
369
|
+
|
370
|
+
# Offense count: 2
|
371
|
+
# Cop supports --auto-correct.
|
372
|
+
# Configuration parameters: EnforcedStyleForMultiline, SupportedStyles.
|
373
|
+
Style/TrailingComma:
|
374
|
+
Enabled: false
|
375
|
+
|
376
|
+
# Offense count: 3
|
377
|
+
# Cop supports --auto-correct.
|
378
|
+
Style/TrailingUnderscoreVariable:
|
379
|
+
Enabled: false
|
380
|
+
|
381
|
+
# Offense count: 8
|
382
|
+
# Cop supports --auto-correct.
|
383
|
+
Style/TrailingWhitespace:
|
384
|
+
Enabled: false
|
385
|
+
|
386
|
+
# Offense count: 1
|
387
|
+
# Cop supports --auto-correct.
|
388
|
+
Style/UnneededCapitalW:
|
389
|
+
Enabled: false
|
data/.travis.yml
CHANGED
data/.yardopts
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
## 0.9.4 (January 5, 2016)
|
2
|
+
|
3
|
+
Features:
|
4
|
+
|
5
|
+
- YARD documentation
|
6
|
+
|
7
|
+
Bugfixes:
|
8
|
+
|
9
|
+
- Use versions.list header time instead of mtime
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
## 0.9.3 (August 25, 2015)
|
14
|
+
|
15
|
+
Features:
|
16
|
+
|
17
|
+
- Support for ruby 1.8
|
18
|
+
|
1
19
|
## 0.9.3 (August 25, 2015)
|
2
20
|
|
3
21
|
Features:
|
data/Gemfile
CHANGED
data/compact_index.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["fotanus@gmail.com"]
|
10
10
|
spec.email = ["Felipe Tanus"]
|
11
11
|
|
12
|
-
spec.summary =
|
12
|
+
spec.summary = "Backend for compact index"
|
13
13
|
spec.homepage = "https://github.com/bundler/compact_index"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module CompactIndex
|
2
|
-
GemVersion = Struct.new(:number, :platform, :checksum, :info_checksum,
|
2
|
+
GemVersion = Struct.new(:number, :platform, :checksum, :info_checksum,
|
3
|
+
:dependencies, :ruby_version, :rubygems_version) do
|
3
4
|
def number_and_platform
|
4
5
|
if platform.nil? || platform == 'ruby'
|
5
6
|
number.dup
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'time'
|
2
2
|
require 'date'
|
3
|
+
require 'digest'
|
3
4
|
require 'compact_index'
|
4
5
|
|
5
6
|
class CompactIndex::VersionsFile
|
@@ -18,11 +19,7 @@ class CompactIndex::VersionsFile
|
|
18
19
|
end
|
19
20
|
|
20
21
|
def updated_at
|
21
|
-
|
22
|
-
DateTime.parse(File.mtime(@path).to_s)
|
23
|
-
else
|
24
|
-
Time.at(0)
|
25
|
-
end
|
22
|
+
created_at_header(@path) || Time.at(0).to_datetime
|
26
23
|
end
|
27
24
|
|
28
25
|
def update_with(gems)
|
@@ -37,68 +34,83 @@ class CompactIndex::VersionsFile
|
|
37
34
|
private
|
38
35
|
|
39
36
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
37
|
+
def create(gems)
|
38
|
+
content = "created_at: #{Time.now.iso8601}"
|
39
|
+
content << "\n---\n"
|
40
|
+
content << parse_gems_for_create(gems)
|
44
41
|
|
45
|
-
|
46
|
-
|
47
|
-
end
|
42
|
+
File.open(@path, 'w') do |io|
|
43
|
+
io.write content
|
48
44
|
end
|
45
|
+
end
|
49
46
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
end
|
47
|
+
def update(gems)
|
48
|
+
File.open(@path, 'a') do |io|
|
49
|
+
io.write parse_gems(gems)
|
54
50
|
end
|
51
|
+
end
|
55
52
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
53
|
+
def parse_gems_for_create(gems)
|
54
|
+
# Join all versions for each gem in one hash
|
55
|
+
gems_hash = {}
|
56
|
+
gems.each do |entry|
|
57
|
+
gems_hash[entry[:name]] ||= []
|
58
|
+
gems_hash[entry[:name]] += entry[:versions]
|
59
|
+
end
|
63
60
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
61
|
+
# Transform hash in a list of line informations to be printed
|
62
|
+
gems = gems_hash.map do |gem, versions|
|
63
|
+
{ :name => gem, :versions => versions, :checksum => versions.first[:checksum] }
|
64
|
+
end
|
68
65
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
end
|
66
|
+
# Sort gems by name and versions by number
|
67
|
+
gems.sort! { |a,b| a[:name] <=> b[:name] }
|
68
|
+
gems.each do |entry|
|
69
|
+
entry[:versions].sort! do |a,b|
|
70
|
+
Gem::Version.create(a[:number]) <=> Gem::Version.create(b[:number])
|
75
71
|
end
|
72
|
+
end
|
76
73
|
|
77
|
-
|
74
|
+
gem_lines(gems)
|
75
|
+
end
|
76
|
+
|
77
|
+
def parse_gems(gems)
|
78
|
+
gem_lines = gems.map do |entry|
|
79
|
+
{
|
80
|
+
:name => entry[:name],
|
81
|
+
:versions => entry[:versions],
|
82
|
+
:checksum => entry[:versions].first[:checksum]
|
83
|
+
}
|
78
84
|
end
|
85
|
+
gem_lines(gem_lines)
|
86
|
+
end
|
79
87
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
:versions => entry[:versions],
|
85
|
-
:checksum => entry[:versions].first[:checksum]
|
86
|
-
}
|
87
|
-
end
|
88
|
-
gem_lines(gem_lines)
|
88
|
+
def gem_lines(gems)
|
89
|
+
gems.reduce("") do |concat, entry|
|
90
|
+
versions = entry[:versions]
|
91
|
+
concat << "#{entry[:name]} #{versions.map(&:number_and_platform).join(',')} #{entry[:checksum]}\n"
|
89
92
|
end
|
93
|
+
end
|
90
94
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
end
|
95
|
+
def calculate_checksums(gems)
|
96
|
+
gems.each do |gem|
|
97
|
+
info_checksum = Digest::MD5.hexdigest(CompactIndex.info(gem[:versions]))
|
98
|
+
gem[:versions].first[:checksum] = info_checksum
|
96
99
|
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def created_at_header(path)
|
103
|
+
return unless File.exists? path
|
97
104
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
105
|
+
File.open(path) do |file|
|
106
|
+
file.each_line do |line|
|
107
|
+
line.match(/created_at: (.*)\n|---\n/) do |match|
|
108
|
+
return match[1] && DateTime.parse(match[1])
|
109
|
+
end
|
102
110
|
end
|
103
111
|
end
|
112
|
+
|
113
|
+
nil
|
114
|
+
end
|
115
|
+
|
104
116
|
end
|
data/lib/compact_index.rb
CHANGED
@@ -4,16 +4,71 @@ require "compact_index/dependency"
|
|
4
4
|
|
5
5
|
require "compact_index/version"
|
6
6
|
require "compact_index/versions_file"
|
7
|
+
require "compact_index/ext/date"
|
7
8
|
|
8
9
|
module CompactIndex
|
10
|
+
# Formats a list of gem names, to be used on the /names endpoint.
|
11
|
+
# @param gem_names [Array] array with gem names to be formated, in alphabetical order
|
12
|
+
# @return [String] names on the specified format for new index /names endpoint. Example:
|
13
|
+
# ```ruby
|
14
|
+
# ---
|
15
|
+
# rack
|
16
|
+
# rails
|
17
|
+
# other-gem
|
18
|
+
# ```
|
9
19
|
def self.names(gem_names)
|
10
20
|
"---\n" << gem_names.join("\n") << "\n"
|
11
21
|
end
|
12
22
|
|
23
|
+
# Returns the versions file content argumented with some extra gems
|
24
|
+
# @param versions_file [CompactIndex::VersionsFile] which will be used as a base response
|
25
|
+
# @param gems [Array] an optional list of [CompactIndex::Gem] to be appended on the end
|
26
|
+
# of the base file. Example:
|
27
|
+
# ```ruby
|
28
|
+
# [
|
29
|
+
# CompactIndex::Gem.new("gem1", [
|
30
|
+
# CompactIndex::GemVersion.new("0.9.8", "ruby", "abc123"),
|
31
|
+
# CompactIndex::GemVersion.new("0.9.9", "jruby", "abc123"),
|
32
|
+
# ]),
|
33
|
+
# CompactIndex::Gem.new("gem2", [
|
34
|
+
# CompactIndex::GemVersion.new("0.9.8", "ruby", "abc123"),
|
35
|
+
# CompactIndex::GemVersion.new("0.9.9", "jruby", "abc123"),
|
36
|
+
# ])
|
37
|
+
# ]
|
38
|
+
# ```
|
39
|
+
# @return [String] The formated output. Example:
|
40
|
+
# ```ruby
|
41
|
+
# created_at: 2001-01-01T01:01:01-01:01
|
42
|
+
# ---
|
43
|
+
# rack 0.1.0,0.1.1,0.1.2,0.2.0,0.2.1,0.3.0,0.4.0,0.4.1,0.5.0,0.5.1,0.5.2,0.5.3 c54e4b7e14861a5d8c225283b75075f4
|
44
|
+
# rails 0.0.1,0.1.0 00fd5c36764f4ec1e8adf1c9adaada55
|
45
|
+
# sinatra 0.1.1,0.1.2,0.1.3 46f0a24d291725736216b4b6e7412be6
|
46
|
+
# ```
|
13
47
|
def self.versions(versions_file, gems = nil, args = {})
|
14
48
|
versions_file.contents(gems, args)
|
15
49
|
end
|
16
50
|
|
51
|
+
|
52
|
+
# Formats the versions information of a gem, to be display in the `/info/gemname` endpoint.
|
53
|
+
#
|
54
|
+
# @param versions_file [CompactIndex::VersionsFile] which will be used as a base response
|
55
|
+
# @param gems [Array] an optional list of [CompactIndex::Gem] to be appended on the end
|
56
|
+
# of the base file. Example:
|
57
|
+
# ```ruby
|
58
|
+
# [
|
59
|
+
# CompactIndex::GemVersion.new("1.0.1", "ruby", "abc123", "info123", [
|
60
|
+
# CompactIndex::Dependency.new("foo", "=1.0.1", "abc123"),
|
61
|
+
# CompactIndex::Dependency.new("bar", ">1.0, <2.0", "abc123"),
|
62
|
+
# ])
|
63
|
+
# ]
|
64
|
+
# ```
|
65
|
+
#
|
66
|
+
# @return [String] The formated output. Example:
|
67
|
+
# ```ruby
|
68
|
+
# --
|
69
|
+
# 1.0.1 requirement:<2.0&>1.0|checksum:abc1
|
70
|
+
# 1.0.2 requirement:<2.0&>1.0,requirement2:=1.1|checksum:abc2,ruby:>1.0,rubygems:>2.0
|
71
|
+
# ```
|
17
72
|
def self.info(params)
|
18
73
|
output = "---\n"
|
19
74
|
params.each do |version|
|
@@ -22,29 +77,32 @@ module CompactIndex
|
|
22
77
|
output
|
23
78
|
end
|
24
79
|
|
80
|
+
|
25
81
|
private
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
deps = []
|
82
|
+
|
83
|
+
|
84
|
+
def self.version_line(version)
|
85
|
+
if version[:dependencies]
|
86
|
+
version[:dependencies]
|
87
|
+
deps = version[:dependencies].map do |d|
|
88
|
+
[
|
89
|
+
d[:gem],
|
90
|
+
d.version_and_platform.split(', ').sort.join("&")
|
91
|
+
].join(':')
|
37
92
|
end
|
93
|
+
else
|
94
|
+
deps = []
|
95
|
+
end
|
38
96
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
97
|
+
line = version.number_and_platform
|
98
|
+
line << " "
|
99
|
+
line << deps.join(",")
|
100
|
+
line << "|"
|
43
101
|
|
44
|
-
|
45
|
-
|
46
|
-
|
102
|
+
line << "checksum:#{version[:checksum]}"
|
103
|
+
line << ",ruby:#{version[:ruby_version]}" if version[:ruby_version]
|
104
|
+
line << ",rubygems:#{version[:rubygems_version]}" if version[:rubygems_version]
|
47
105
|
|
48
|
-
|
49
|
-
|
106
|
+
line
|
107
|
+
end
|
50
108
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compact_index
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fotanus@gmail.com
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -47,7 +47,11 @@ extra_rdoc_files: []
|
|
47
47
|
files:
|
48
48
|
- ".gitignore"
|
49
49
|
- ".rspec"
|
50
|
+
- ".rubocop-bundler.yml"
|
51
|
+
- ".rubocop.yml"
|
52
|
+
- ".rubocop_todo.yml"
|
50
53
|
- ".travis.yml"
|
54
|
+
- ".yardopts"
|
51
55
|
- CHANGELOG.md
|
52
56
|
- CODE_OF_CONDUCT.md
|
53
57
|
- Gemfile
|
@@ -66,6 +70,7 @@ files:
|
|
66
70
|
- db/migrations/07_add_checksum_to_versions.rb
|
67
71
|
- lib/compact_index.rb
|
68
72
|
- lib/compact_index/dependency.rb
|
73
|
+
- lib/compact_index/ext/date.rb
|
69
74
|
- lib/compact_index/gem.rb
|
70
75
|
- lib/compact_index/gem_version.rb
|
71
76
|
- lib/compact_index/version.rb
|