gemirro 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +29 -0
- data/.rubocop.yml +6 -3
- data/Gemfile +9 -0
- data/Gemfile.lock +126 -0
- data/MANIFEST +6 -10
- data/README.md +1 -1
- data/bin/gemirro +7 -1
- data/gemirro.gemspec +9 -9
- data/lib/gemirro/cli/index.rb +12 -3
- data/lib/gemirro/cli/init.rb +6 -1
- data/lib/gemirro/cli/server.rb +2 -4
- data/lib/gemirro/cli/update.rb +6 -0
- data/lib/gemirro/configuration.rb +1 -1
- data/lib/gemirro/gems_fetcher.rb +5 -10
- data/lib/gemirro/http.rb +6 -6
- data/lib/gemirro/indexer.rb +397 -90
- data/lib/gemirro/mirror_file.rb +1 -0
- data/lib/gemirro/server.rb +73 -160
- data/lib/gemirro/source.rb +2 -2
- data/lib/gemirro/utils.rb +123 -68
- data/lib/gemirro/version.rb +1 -1
- data/lib/gemirro/versions_fetcher.rb +6 -2
- data/lib/gemirro.rb +1 -1
- data/spec/gemirro/http_spec.rb +83 -24
- data/spec/gemirro/indexer_spec.rb +3 -0
- data/spec/gemirro/server_spec.rb +76 -47
- data/template/config.rb +6 -0
- data/template/public/dist/css/gemirro.css +25 -1
- data/template/public/latest_specs.4.8 +0 -0
- data/template/public/prerelease_specs.4.8 +0 -0
- data/template/public/specs.4.8 +0 -0
- data/views/gem.erb +46 -37
- data/views/index.erb +41 -33
- data/views/layout.erb +5 -25
- data/views/not_found.erb +4 -4
- metadata +72 -89
- data/lib/gemirro/cache.rb +0 -115
- data/spec/gemirro/cache_spec.rb +0 -32
- data/template/public/dist/css/bootstrap.min.css +0 -7
- data/template/public/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/template/public/dist/fonts/glyphicons-halflings-regular.svg +0 -288
- data/template/public/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/template/public/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/template/public/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/template/public/dist/js/bootstrap.min.js +0 -7
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemirro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pierre Rambaud
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -39,207 +39,193 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: compact_index
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0.15'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0.15'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: confstruct
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '1.1'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '1.1'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: erubis
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '2.
|
75
|
+
version: '2.7'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '2.
|
82
|
+
version: '2.7'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: httpclient
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '2.8'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '2.8'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: logger
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '2.1'
|
104
|
-
- - "<"
|
101
|
+
- - ">"
|
105
102
|
- !ruby/object:Gem::Version
|
106
|
-
version: '
|
103
|
+
version: '0'
|
107
104
|
type: :runtime
|
108
105
|
prerelease: false
|
109
106
|
version_requirements: !ruby/object:Gem::Requirement
|
110
107
|
requirements:
|
111
|
-
- - "
|
108
|
+
- - ">"
|
112
109
|
- !ruby/object:Gem::Version
|
113
|
-
version: '
|
114
|
-
- - "<"
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: '4.0'
|
110
|
+
version: '0'
|
117
111
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
112
|
+
name: mutex_m
|
119
113
|
requirement: !ruby/object:Gem::Requirement
|
120
114
|
requirements:
|
121
|
-
- - "
|
115
|
+
- - ">"
|
122
116
|
- !ruby/object:Gem::Version
|
123
|
-
version: '
|
117
|
+
version: '0'
|
124
118
|
type: :runtime
|
125
119
|
prerelease: false
|
126
120
|
version_requirements: !ruby/object:Gem::Requirement
|
127
121
|
requirements:
|
128
|
-
- - "
|
122
|
+
- - ">"
|
129
123
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
124
|
+
version: '0'
|
131
125
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
126
|
+
name: ostruct
|
133
127
|
requirement: !ruby/object:Gem::Requirement
|
134
128
|
requirements:
|
135
|
-
- - "
|
129
|
+
- - ">"
|
136
130
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
131
|
+
version: '0'
|
138
132
|
type: :runtime
|
139
133
|
prerelease: false
|
140
134
|
version_requirements: !ruby/object:Gem::Requirement
|
141
135
|
requirements:
|
142
|
-
- - "
|
136
|
+
- - ">"
|
143
137
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
138
|
+
version: '0'
|
145
139
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
140
|
+
name: parallel
|
147
141
|
requirement: !ruby/object:Gem::Requirement
|
148
142
|
requirements:
|
149
143
|
- - "~>"
|
150
144
|
- !ruby/object:Gem::Version
|
151
|
-
version: '1.
|
145
|
+
version: '1.21'
|
152
146
|
type: :runtime
|
153
147
|
prerelease: false
|
154
148
|
version_requirements: !ruby/object:Gem::Requirement
|
155
149
|
requirements:
|
156
150
|
- - "~>"
|
157
151
|
- !ruby/object:Gem::Version
|
158
|
-
version: '1.
|
152
|
+
version: '1.21'
|
159
153
|
- !ruby/object:Gem::Dependency
|
160
|
-
name:
|
154
|
+
name: rubygems-generate_index
|
161
155
|
requirement: !ruby/object:Gem::Requirement
|
162
156
|
requirements:
|
163
|
-
- - "
|
157
|
+
- - ">"
|
164
158
|
- !ruby/object:Gem::Version
|
165
|
-
version: '
|
166
|
-
type: :
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
167
161
|
prerelease: false
|
168
162
|
version_requirements: !ruby/object:Gem::Requirement
|
169
163
|
requirements:
|
170
|
-
- - "
|
164
|
+
- - ">"
|
171
165
|
- !ruby/object:Gem::Version
|
172
|
-
version: '
|
166
|
+
version: '0'
|
173
167
|
- !ruby/object:Gem::Dependency
|
174
|
-
name:
|
168
|
+
name: sinatra
|
175
169
|
requirement: !ruby/object:Gem::Requirement
|
176
170
|
requirements:
|
177
|
-
- - "
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
version: '1.1'
|
180
|
-
type: :development
|
181
|
-
prerelease: false
|
182
|
-
version_requirements: !ruby/object:Gem::Requirement
|
183
|
-
requirements:
|
184
|
-
- - "~>"
|
171
|
+
- - ">="
|
185
172
|
- !ruby/object:Gem::Version
|
186
|
-
version: '
|
187
|
-
-
|
188
|
-
name: rake
|
189
|
-
requirement: !ruby/object:Gem::Requirement
|
190
|
-
requirements:
|
191
|
-
- - "~>"
|
173
|
+
version: '3.1'
|
174
|
+
- - "<"
|
192
175
|
- !ruby/object:Gem::Version
|
193
|
-
version: '
|
194
|
-
type: :
|
176
|
+
version: '4.0'
|
177
|
+
type: :runtime
|
195
178
|
prerelease: false
|
196
179
|
version_requirements: !ruby/object:Gem::Requirement
|
197
180
|
requirements:
|
198
|
-
- - "
|
181
|
+
- - ">="
|
199
182
|
- !ruby/object:Gem::Version
|
200
|
-
version: '
|
183
|
+
version: '3.1'
|
184
|
+
- - "<"
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '4.0'
|
201
187
|
- !ruby/object:Gem::Dependency
|
202
|
-
name:
|
188
|
+
name: slop
|
203
189
|
requirement: !ruby/object:Gem::Requirement
|
204
190
|
requirements:
|
205
191
|
- - "~>"
|
206
192
|
- !ruby/object:Gem::Version
|
207
|
-
version: '3.
|
208
|
-
type: :
|
193
|
+
version: '3.6'
|
194
|
+
type: :runtime
|
209
195
|
prerelease: false
|
210
196
|
version_requirements: !ruby/object:Gem::Requirement
|
211
197
|
requirements:
|
212
198
|
- - "~>"
|
213
199
|
- !ruby/object:Gem::Version
|
214
|
-
version: '3.
|
200
|
+
version: '3.6'
|
215
201
|
- !ruby/object:Gem::Dependency
|
216
|
-
name:
|
202
|
+
name: stringio
|
217
203
|
requirement: !ruby/object:Gem::Requirement
|
218
204
|
requirements:
|
219
|
-
- - "
|
205
|
+
- - ">"
|
220
206
|
- !ruby/object:Gem::Version
|
221
|
-
version: '
|
222
|
-
type: :
|
207
|
+
version: '0'
|
208
|
+
type: :runtime
|
223
209
|
prerelease: false
|
224
210
|
version_requirements: !ruby/object:Gem::Requirement
|
225
211
|
requirements:
|
226
|
-
- - "
|
212
|
+
- - ">"
|
227
213
|
- !ruby/object:Gem::Version
|
228
|
-
version: '
|
214
|
+
version: '0'
|
229
215
|
- !ruby/object:Gem::Dependency
|
230
|
-
name:
|
216
|
+
name: thin
|
231
217
|
requirement: !ruby/object:Gem::Requirement
|
232
218
|
requirements:
|
233
219
|
- - "~>"
|
234
220
|
- !ruby/object:Gem::Version
|
235
|
-
version: '
|
236
|
-
type: :
|
221
|
+
version: '1.8'
|
222
|
+
type: :runtime
|
237
223
|
prerelease: false
|
238
224
|
version_requirements: !ruby/object:Gem::Requirement
|
239
225
|
requirements:
|
240
226
|
- - "~>"
|
241
227
|
- !ruby/object:Gem::Version
|
242
|
-
version: '
|
228
|
+
version: '1.8'
|
243
229
|
description: Create your own gems mirror.
|
244
230
|
email: pierre.rambaud86@gmail.com
|
245
231
|
executables:
|
@@ -247,9 +233,11 @@ executables:
|
|
247
233
|
extensions: []
|
248
234
|
extra_rdoc_files: []
|
249
235
|
files:
|
236
|
+
- ".github/workflows/ruby.yml"
|
250
237
|
- ".gitignore"
|
251
238
|
- ".rubocop.yml"
|
252
239
|
- Gemfile
|
240
|
+
- Gemfile.lock
|
253
241
|
- LICENSE
|
254
242
|
- MANIFEST
|
255
243
|
- README.md
|
@@ -257,7 +245,6 @@ files:
|
|
257
245
|
- bin/gemirro
|
258
246
|
- gemirro.gemspec
|
259
247
|
- lib/gemirro.rb
|
260
|
-
- lib/gemirro/cache.rb
|
261
248
|
- lib/gemirro/cli.rb
|
262
249
|
- lib/gemirro/cli/index.rb
|
263
250
|
- lib/gemirro/cli/init.rb
|
@@ -281,7 +268,6 @@ files:
|
|
281
268
|
- lib/gemirro/versions_file.rb
|
282
269
|
- spec/fixtures/gems/gemirro-0.0.1.gem
|
283
270
|
- spec/fixtures/quick/gemirro-0.0.1.gemspec.rz
|
284
|
-
- spec/gemirro/cache_spec.rb
|
285
271
|
- spec/gemirro/cli_spec.rb
|
286
272
|
- spec/gemirro/configuration_spec.rb
|
287
273
|
- spec/gemirro/gem_spec.rb
|
@@ -302,15 +288,11 @@ files:
|
|
302
288
|
- task/rubocop.rake
|
303
289
|
- template/config.rb
|
304
290
|
- template/logs/.gitkeep
|
305
|
-
- template/public/dist/css/bootstrap.min.css
|
306
291
|
- template/public/dist/css/gemirro.css
|
307
|
-
- template/public/dist/fonts/glyphicons-halflings-regular.eot
|
308
|
-
- template/public/dist/fonts/glyphicons-halflings-regular.svg
|
309
|
-
- template/public/dist/fonts/glyphicons-halflings-regular.ttf
|
310
|
-
- template/public/dist/fonts/glyphicons-halflings-regular.woff
|
311
|
-
- template/public/dist/fonts/glyphicons-halflings-regular.woff2
|
312
|
-
- template/public/dist/js/bootstrap.min.js
|
313
292
|
- template/public/gems/.gitkeep
|
293
|
+
- template/public/latest_specs.4.8
|
294
|
+
- template/public/prerelease_specs.4.8
|
295
|
+
- template/public/specs.4.8
|
314
296
|
- views/gem.erb
|
315
297
|
- views/index.erb
|
316
298
|
- views/layout.erb
|
@@ -318,7 +300,8 @@ files:
|
|
318
300
|
homepage: https://github.com/PierreRambaud/gemirro
|
319
301
|
licenses:
|
320
302
|
- GPL-3.0
|
321
|
-
metadata:
|
303
|
+
metadata:
|
304
|
+
rubygems_mfa_required: 'true'
|
322
305
|
post_install_message:
|
323
306
|
rdoc_options: []
|
324
307
|
require_paths:
|
@@ -327,14 +310,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
327
310
|
requirements:
|
328
311
|
- - ">="
|
329
312
|
- !ruby/object:Gem::Version
|
330
|
-
version: '
|
313
|
+
version: '3.0'
|
331
314
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
332
315
|
requirements:
|
333
316
|
- - ">="
|
334
317
|
- !ruby/object:Gem::Version
|
335
318
|
version: '0'
|
336
319
|
requirements: []
|
337
|
-
rubygems_version: 3.
|
320
|
+
rubygems_version: 3.4.19
|
338
321
|
signing_key:
|
339
322
|
specification_version: 4
|
340
323
|
summary: Gem for easily creating your own gems mirror.
|
data/lib/gemirro/cache.rb
DELETED
@@ -1,115 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Gemirro
|
4
|
-
##
|
5
|
-
# The Cache class contains all method to store marshal informations
|
6
|
-
# into files.
|
7
|
-
#
|
8
|
-
# @!attribute [r] root_path
|
9
|
-
# @return [String]
|
10
|
-
#
|
11
|
-
class Cache
|
12
|
-
attr_reader :root_path
|
13
|
-
|
14
|
-
##
|
15
|
-
# Initialize cache root path
|
16
|
-
#
|
17
|
-
# @param [String] path
|
18
|
-
#
|
19
|
-
def initialize(path)
|
20
|
-
@root_path = path
|
21
|
-
create_root_path
|
22
|
-
end
|
23
|
-
|
24
|
-
##
|
25
|
-
# Create root path
|
26
|
-
#
|
27
|
-
def create_root_path
|
28
|
-
FileUtils.mkdir_p(@root_path)
|
29
|
-
end
|
30
|
-
|
31
|
-
##
|
32
|
-
# Flush cache directory
|
33
|
-
#
|
34
|
-
def flush
|
35
|
-
FileUtils.rm_rf(@root_path)
|
36
|
-
create_root_path
|
37
|
-
end
|
38
|
-
|
39
|
-
##
|
40
|
-
# Flush key
|
41
|
-
#
|
42
|
-
# @param [String] key
|
43
|
-
#
|
44
|
-
def flush_key(key)
|
45
|
-
path = key_path(key2hash(key))
|
46
|
-
FileUtils.rm_f(path)
|
47
|
-
end
|
48
|
-
|
49
|
-
##
|
50
|
-
# Cache data
|
51
|
-
#
|
52
|
-
# @param [String] key
|
53
|
-
#
|
54
|
-
# @return [Mixed]
|
55
|
-
#
|
56
|
-
def cache(key)
|
57
|
-
key_hash = key2hash(key)
|
58
|
-
read(key_hash) || (write(key_hash, yield) if block_given?)
|
59
|
-
end
|
60
|
-
|
61
|
-
private
|
62
|
-
|
63
|
-
##
|
64
|
-
# Convert key to hash
|
65
|
-
#
|
66
|
-
# @param [String] key
|
67
|
-
#
|
68
|
-
# @return [String]
|
69
|
-
#
|
70
|
-
def key2hash(key)
|
71
|
-
Digest::MD5.hexdigest(key)
|
72
|
-
end
|
73
|
-
|
74
|
-
##
|
75
|
-
# Path from key hash
|
76
|
-
#
|
77
|
-
# @param [String] key_hash
|
78
|
-
#
|
79
|
-
# @return [String]
|
80
|
-
#
|
81
|
-
def key_path(key_hash)
|
82
|
-
File.join(@root_path, key_hash)
|
83
|
-
end
|
84
|
-
|
85
|
-
##
|
86
|
-
# Read cache
|
87
|
-
#
|
88
|
-
# @param [String] key_hash
|
89
|
-
#
|
90
|
-
# @return [Mixed]
|
91
|
-
#
|
92
|
-
def read(key_hash)
|
93
|
-
path = key_path(key_hash)
|
94
|
-
Marshal.load(File.open(path)) if File.exist?(path)
|
95
|
-
end
|
96
|
-
|
97
|
-
##
|
98
|
-
# write cache
|
99
|
-
#
|
100
|
-
# @param [String] key_hash
|
101
|
-
# @param [Mixed] value
|
102
|
-
#
|
103
|
-
# @return [Mixed]
|
104
|
-
#
|
105
|
-
def write(key_hash, value)
|
106
|
-
return value if value.nil? || value.empty?
|
107
|
-
|
108
|
-
File.open(key_path(key_hash), 'wb') do |f|
|
109
|
-
Marshal.dump(value, f)
|
110
|
-
end
|
111
|
-
|
112
|
-
value
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
data/spec/gemirro/cache_spec.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'gemirro/mirror_directory'
|
3
|
-
require 'gemirro/cache'
|
4
|
-
|
5
|
-
# Gem tests
|
6
|
-
module Gemirro
|
7
|
-
describe 'Cache' do
|
8
|
-
include FakeFS::SpecHelpers
|
9
|
-
before(:each) do
|
10
|
-
MirrorDirectory.new('/tmp')
|
11
|
-
@cache = Cache.new('/tmp')
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'should play with flush key' do
|
15
|
-
@cache.cache('foo') do
|
16
|
-
'something'
|
17
|
-
end
|
18
|
-
expect(@cache.cache('foo')).to eq('something')
|
19
|
-
@cache.flush_key('foo')
|
20
|
-
expect(@cache.cache('foo')).to be_nil
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'should play with flush' do
|
24
|
-
@cache.cache('foo') do
|
25
|
-
'something'
|
26
|
-
end
|
27
|
-
expect(@cache.cache('foo')).to eq('something')
|
28
|
-
@cache.flush
|
29
|
-
expect(@cache.cache('foo')).to be_nil
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|