stickler 2.3.0 → 2.4.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 +15 -0
- data/CONTRIBUTING.md +5 -4
- data/HISTORY.md +16 -9
- data/LICENSE +1 -1
- data/Manifest.txt +34 -20
- data/README.md +128 -0
- data/Rakefile +10 -9
- data/bin/stickler +9 -6
- data/bin/stickler-passenger-config +8 -8
- data/bin/stickler-server +12 -12
- data/examples/as_middleware.ru +14 -0
- data/examples/auth_repo.ru +1 -1
- data/examples/gemcutter_repo.ru +1 -1
- data/examples/local_repo.ru +1 -1
- data/lib/stickler.rb +3 -1
- data/lib/stickler/client.rb +2 -1
- data/lib/stickler/client/delete.rb +1 -1
- data/lib/stickler/client/latest-version.rb +40 -0
- data/lib/stickler/client/mirror.rb +47 -15
- data/lib/stickler/client/push.rb +1 -1
- data/lib/stickler/client/unyank.rb +1 -1
- data/lib/stickler/client/yank.rb +1 -1
- data/lib/stickler/gem_container.rb +40 -0
- data/lib/stickler/gemfile_lock_parser.rb +47 -0
- data/lib/stickler/middleware.rb +1 -0
- data/lib/stickler/middleware/server.rb +37 -0
- data/lib/stickler/repository/api.rb +16 -0
- data/lib/stickler/repository/index.rb +0 -3
- data/lib/stickler/repository/local.rb +6 -8
- data/lib/stickler/repository/remote.rb +29 -7
- data/lib/stickler/server.rb +2 -6
- data/man/stickler-passenger-config.1 +2 -22
- data/man/stickler-server.1 +9 -99
- data/man/stickler.1 +15 -173
- data/man/stickler.1.ronn +6 -0
- data/tasks/default.rake +16 -18
- data/tasks/man.rake +7 -0
- data/tasks/this.rb +5 -5
- data/test/data/Gemfile.lock.example +56 -0
- data/{spec → test}/data/gemcutter/gems/foo-1.0.0.gem +0 -0
- data/{spec → test}/data/gems/bar-1.0.0.gem +0 -0
- data/{spec → test}/data/gems/baz-3.1.4-java.gem +0 -0
- data/{spec → test}/data/gems/baz-3.1.4.gem +0 -0
- data/{spec → test}/data/gems/foo-1.0.0.gem +0 -0
- data/{spec → test}/data/gems/foo-2.0.0a.gem +0 -0
- data/test/data/specifications/bar-1.0.0.gemspec +31 -0
- data/test/data/specifications/baz-3.1.4-java.gemspec +32 -0
- data/test/data/specifications/baz-3.1.4.gemspec +31 -0
- data/test/data/specifications/foo-1.0.0.gemspec +31 -0
- data/test/data/specifications/foo-2.0.0a.gemspec +32 -0
- data/test/index_test_helpers.rb +75 -0
- data/test/middleware/test_local.rb +75 -0
- data/test/middleware/test_not_found.rb +26 -0
- data/test/repository/test_api.rb +49 -0
- data/test/repository/test_api_behavior.rb +208 -0
- data/test/repository/test_index.rb +48 -0
- data/test/repository/test_local.rb +59 -0
- data/test/repository/test_null.rb +15 -0
- data/test/repository/test_remote.rb +26 -0
- data/test/repository/test_remote_authenticated.rb +39 -0
- data/test/stickler_test_server.rb +35 -0
- data/test/test_gemfile_lock_parser.rb +28 -0
- data/test/test_paths.rb +22 -0
- data/test/test_spec_lite.rb +90 -0
- data/test/test_stickler.rb +49 -0
- metadata +58 -85
- data/README.rdoc +0 -156
- data/spec/index_spec_helpers.rb +0 -73
- data/spec/middleware/local_spec.rb +0 -72
- data/spec/middleware/not_found_spec.rb +0 -25
- data/spec/paths_spec.rb +0 -11
- data/spec/repository/api_behavior.rb +0 -192
- data/spec/repository/api_spec.rb +0 -37
- data/spec/repository/index_spec.rb +0 -46
- data/spec/repository/local_spec.rb +0 -49
- data/spec/repository/null_spec.rb +0 -14
- data/spec/repository/remote_spec.rb +0 -86
- data/spec/spec.opts +0 -2
- data/spec/spec_helper.rb +0 -24
- data/spec/spec_lite_spec.rb +0 -96
@@ -48,6 +48,13 @@ module ::Stickler::Repository
|
|
48
48
|
Marshal.load( download_specs_list )
|
49
49
|
end
|
50
50
|
|
51
|
+
#
|
52
|
+
# The array of latests specs from usptream
|
53
|
+
#
|
54
|
+
def latest_specs_list
|
55
|
+
Marshal.load( download_latest_specs_list )
|
56
|
+
end
|
57
|
+
|
51
58
|
#
|
52
59
|
# See Api#search_for
|
53
60
|
#
|
@@ -95,12 +102,15 @@ module ::Stickler::Repository
|
|
95
102
|
|
96
103
|
#
|
97
104
|
# See Api#unyank
|
98
|
-
|
105
|
+
#
|
99
106
|
def unyank( spec )
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
107
|
+
if remote_gem_file_exist?( spec ) && search_for( spec ).empty? then
|
108
|
+
query = { :spec_name => spec.name, :version => spec.version.to_s }
|
109
|
+
resource_request( unyank_resource, :query => query )
|
110
|
+
return true
|
111
|
+
else
|
112
|
+
return nil
|
113
|
+
end
|
104
114
|
rescue Excon::Errors::Error => e
|
105
115
|
raise Stickler::Repository::Error, "Failure unyanking: #{e.inspect}"
|
106
116
|
end
|
@@ -173,6 +183,14 @@ module ::Stickler::Repository
|
|
173
183
|
@specs_list_resource ||= Excon.new( specs_list_uri.to_s, :method => :get, :expects => [200] )
|
174
184
|
end
|
175
185
|
|
186
|
+
def latest_specs_list_uri
|
187
|
+
Addressable::URI.join( uri, "latest_specs.#{Gem.marshal_version}.gz" )
|
188
|
+
end
|
189
|
+
|
190
|
+
def latest_specs_list_resource
|
191
|
+
@latest_specs_list_resource ||= Excon.new( latest_specs_list_uri.to_s, :method => :get, :expects => [200] )
|
192
|
+
end
|
193
|
+
|
176
194
|
def push_uri
|
177
195
|
Addressable::URI.join( uri, "api/v1/gems" )
|
178
196
|
end
|
@@ -214,6 +232,10 @@ module ::Stickler::Repository
|
|
214
232
|
Excon.new( full_uri_to_gem( spec ), :method => :get, :expects => [200] )
|
215
233
|
end
|
216
234
|
|
235
|
+
def download_latest_specs_list
|
236
|
+
download_gzipped_resource( latest_specs_list_resource )
|
237
|
+
end
|
238
|
+
|
217
239
|
def download_specs_list
|
218
240
|
download_gzipped_resource( specs_list_resource )
|
219
241
|
end
|
@@ -254,8 +276,8 @@ module ::Stickler::Repository
|
|
254
276
|
end
|
255
277
|
|
256
278
|
def specification_from_gem_file( path )
|
257
|
-
|
258
|
-
return
|
279
|
+
container = Stickler::GemContainer.new( path )
|
280
|
+
return container.spec
|
259
281
|
end
|
260
282
|
|
261
283
|
def speclite_from_specification( spec )
|
data/lib/stickler/server.rb
CHANGED
@@ -12,14 +12,10 @@ module Stickler
|
|
12
12
|
|
13
13
|
def app
|
14
14
|
root = self.stickler_root
|
15
|
-
Rack::Builder.app do
|
15
|
+
Rack::Builder.app( Sinatra::Base.new ) do
|
16
16
|
use Rack::CommonLogger
|
17
|
-
use Stickler::Middleware::
|
18
|
-
use Stickler::Middleware::Gemcutter, :serve_indexes => false, :repo_root => File.join( root, "gemcutter" )
|
19
|
-
use Stickler::Middleware::Mirror, :serve_indexes => false, :repo_root => File.join( root, "mirror" )
|
20
|
-
use Stickler::Middleware::Index, :serve_indexes => true
|
17
|
+
use Stickler::Middleware::Server, :stickler_root => root
|
21
18
|
use Stickler::Middleware::NotFound
|
22
|
-
run Sinatra::Base
|
23
19
|
end
|
24
20
|
end
|
25
21
|
end
|
@@ -19,30 +19,10 @@ stickler\-passenger\-config \- output a Phusion Passenger config for stickler
|
|
19
19
|
\fInginx\fR: Output an Nginx config\.
|
20
20
|
.
|
21
21
|
.SH "OPTIONS"
|
22
|
-
\fI\-h, \-\-help\fR:
|
23
|
-
.
|
24
|
-
.IP "" 4
|
25
|
-
.
|
26
|
-
.nf
|
27
|
-
|
28
|
-
Show the help message
|
29
|
-
.
|
30
|
-
.fi
|
31
|
-
.
|
32
|
-
.IP "" 0
|
22
|
+
\fI\-h, \-\-help\fR: Show the help message
|
33
23
|
.
|
34
24
|
.P
|
35
|
-
\fI\-v, \-\-version\fR:
|
36
|
-
.
|
37
|
-
.IP "" 4
|
38
|
-
.
|
39
|
-
.nf
|
40
|
-
|
41
|
-
Output the version\.
|
42
|
-
.
|
43
|
-
.fi
|
44
|
-
.
|
45
|
-
.IP "" 0
|
25
|
+
\fI\-v, \-\-version\fR: Output the version\.
|
46
26
|
.
|
47
27
|
.SH "EXAMPLES"
|
48
28
|
Output a passenger config for use with apache\.
|
data/man/stickler-server.1
CHANGED
@@ -13,121 +13,31 @@ stickler\-server \- start and stop the stickler server process
|
|
13
13
|
stickler\-server is the daemon process that houses the repositories of proprietary gems and/or mirrors of third party gems\.
|
14
14
|
.
|
15
15
|
.SH "COMMANDS"
|
16
|
-
\fIstart\fR:
|
17
|
-
.
|
18
|
-
.IP "" 4
|
19
|
-
.
|
20
|
-
.nf
|
21
|
-
|
22
|
-
Start the stickler server process
|
23
|
-
.
|
24
|
-
.fi
|
25
|
-
.
|
26
|
-
.IP "" 0
|
16
|
+
\fIstart\fR: Start the stickler server process
|
27
17
|
.
|
28
18
|
.P
|
29
|
-
\fIstop\fR:
|
30
|
-
.
|
31
|
-
.IP "" 4
|
32
|
-
.
|
33
|
-
.nf
|
34
|
-
|
35
|
-
Stop the stickler server process
|
36
|
-
.
|
37
|
-
.fi
|
38
|
-
.
|
39
|
-
.IP "" 0
|
19
|
+
\fIstop\fR: Stop the stickler server process
|
40
20
|
.
|
41
21
|
.SH "OPTIONS"
|
42
|
-
\fI\-d, \-\-daemonize\fR:
|
43
|
-
.
|
44
|
-
.IP "" 4
|
45
|
-
.
|
46
|
-
.nf
|
47
|
-
|
48
|
-
Daemonize the server
|
49
|
-
.
|
50
|
-
.fi
|
51
|
-
.
|
52
|
-
.IP "" 0
|
22
|
+
\fI\-d, \-\-daemonize\fR: Daemonize the server
|
53
23
|
.
|
54
24
|
.P
|
55
|
-
\fI\-\-help\fR:
|
56
|
-
.
|
57
|
-
.IP "" 4
|
58
|
-
.
|
59
|
-
.nf
|
60
|
-
|
61
|
-
Show the help message
|
62
|
-
.
|
63
|
-
.fi
|
64
|
-
.
|
65
|
-
.IP "" 0
|
25
|
+
\fI\-\-help\fR: Show the help message
|
66
26
|
.
|
67
27
|
.P
|
68
|
-
\fI\-h, \-\-host\fR=\'HOST\':
|
69
|
-
.
|
70
|
-
.IP "" 4
|
71
|
-
.
|
72
|
-
.nf
|
73
|
-
|
74
|
-
The host address to bind to (default: 0\.0\.0\.0)
|
75
|
-
.
|
76
|
-
.fi
|
77
|
-
.
|
78
|
-
.IP "" 0
|
28
|
+
\fI\-h, \-\-host\fR=\'HOST\': The host address to bind to (default: 0\.0\.0\.0)
|
79
29
|
.
|
80
30
|
.P
|
81
|
-
\fI\-o, \-\-port\fR=\'PORT\':
|
82
|
-
.
|
83
|
-
.IP "" 4
|
84
|
-
.
|
85
|
-
.nf
|
86
|
-
|
87
|
-
The port to bind to (default: 6789)
|
88
|
-
.
|
89
|
-
.fi
|
90
|
-
.
|
91
|
-
.IP "" 0
|
31
|
+
\fI\-o, \-\-port\fR=\'PORT\': The port to bind to (default: 6789)
|
92
32
|
.
|
93
33
|
.P
|
94
|
-
\fI\-p, \-\-pid\fR=\'PID_FILE\':
|
95
|
-
.
|
96
|
-
.IP "" 4
|
97
|
-
.
|
98
|
-
.nf
|
99
|
-
|
100
|
-
Path to wriate a pid file to after daemonizing
|
101
|
-
.
|
102
|
-
.fi
|
103
|
-
.
|
104
|
-
.IP "" 0
|
34
|
+
\fI\-p, \-\-pid\fR=\'PID_FILE\': Path to wriate a pid file to after daemonizing
|
105
35
|
.
|
106
36
|
.P
|
107
|
-
\fI\-s, \-\-server\fR=\'SERVER\':
|
108
|
-
.
|
109
|
-
.IP "" 4
|
110
|
-
.
|
111
|
-
.nf
|
112
|
-
|
113
|
-
The rack handler to use: thin, mongrel, webrick, etc\.
|
114
|
-
.
|
115
|
-
.fi
|
116
|
-
.
|
117
|
-
.IP "" 0
|
37
|
+
\fI\-s, \-\-server\fR=\'SERVER\': The rack handler to use: thin, mongrel, webrick, etc\.
|
118
38
|
.
|
119
39
|
.P
|
120
|
-
\fI\-v, \-\-version\fR:
|
121
|
-
.
|
122
|
-
.IP "" 4
|
123
|
-
.
|
124
|
-
.nf
|
125
|
-
|
126
|
-
Output the version\.
|
127
|
-
.
|
128
|
-
.fi
|
129
|
-
.
|
130
|
-
.IP "" 0
|
40
|
+
\fI\-v, \-\-version\fR: Output the version\.
|
131
41
|
.
|
132
42
|
.SH "EXAMPLES"
|
133
43
|
Start the server, daemonized, using /var/lib/stickler as the root directory of all the repositories\.
|
data/man/stickler.1
CHANGED
@@ -16,210 +16,52 @@ Stickler is a tool to organize and maintain an internal gem repository of propri
|
|
16
16
|
The stickler(1) command interacts with an instance of stickler\-server(1) to control the publishing and mirroring of ruby gems\.
|
17
17
|
.
|
18
18
|
.SH "COMMANDS"
|
19
|
-
\fIpush\fR:
|
20
|
-
.
|
21
|
-
.IP "" 4
|
22
|
-
.
|
23
|
-
.nf
|
24
|
-
|
25
|
-
Push one or more gems to a gemserver\. This works the same as `gem push`
|
26
|
-
although there is no authorization mechanism\.
|
27
|
-
.
|
28
|
-
.fi
|
29
|
-
.
|
30
|
-
.IP "" 0
|
19
|
+
\fIpush\fR: Push one or more gems to a gemserver\. This works the same as \fBgem push\fR although there is no authorization mechanism\.
|
31
20
|
.
|
32
21
|
.P
|
33
|
-
\fIyank\fR:
|
34
|
-
.
|
35
|
-
.IP "" 4
|
36
|
-
.
|
37
|
-
.nf
|
38
|
-
|
39
|
-
Remove a gem from the gemserver\'s index\. It will still be available from
|
40
|
-
direct download\. This works the same as `gem yank`\.
|
41
|
-
.
|
42
|
-
.fi
|
43
|
-
.
|
44
|
-
.IP "" 0
|
22
|
+
\fIyank\fR: Remove a gem from the gemserver\'s index\. It will still be available from direct download\. This works the same as \fBgem yank\fR\.
|
45
23
|
.
|
46
24
|
.P
|
47
|
-
\fImirror\fR:
|
48
|
-
.
|
49
|
-
.IP "" 4
|
50
|
-
.
|
51
|
-
.nf
|
52
|
-
|
53
|
-
Pull a specific version of a gem from an upstream gem server and
|
54
|
-
store it in a stickler\-server(1)\.
|
55
|
-
.
|
56
|
-
.fi
|
57
|
-
.
|
58
|
-
.IP "" 0
|
25
|
+
\fImirror\fR: Pull a specific version of a gem from an upstream gem server and store it in a stickler\-server(1)\.
|
59
26
|
.
|
60
27
|
.P
|
61
|
-
\fIconfig\fR:
|
62
|
-
.
|
63
|
-
.IP "" 4
|
64
|
-
.
|
65
|
-
.nf
|
66
|
-
|
67
|
-
Access or update the stickler client configuration\.
|
68
|
-
.
|
69
|
-
.fi
|
70
|
-
.
|
71
|
-
.IP "" 0
|
28
|
+
\fIconfig\fR: Access or update the stickler client configuration\.
|
72
29
|
.
|
73
30
|
.P
|
74
|
-
\fIlist\fR:
|
75
|
-
.
|
76
|
-
.IP "" 4
|
77
|
-
.
|
78
|
-
.nf
|
79
|
-
|
80
|
-
List all the gems in the remote repository\.
|
81
|
-
.
|
82
|
-
.fi
|
83
|
-
.
|
84
|
-
.IP "" 0
|
31
|
+
\fIlist\fR: List all the gems in the remote repository\.
|
85
32
|
.
|
86
33
|
.P
|
87
|
-
\fIunyank\fR:
|
88
|
-
.
|
89
|
-
.IP "" 4
|
90
|
-
.
|
91
|
-
.nf
|
92
|
-
|
93
|
-
Put a gem that was _yanked_ back into the gemserver index\. This reverses a
|
94
|
-
`yank`\.
|
95
|
-
.
|
96
|
-
.fi
|
97
|
-
.
|
98
|
-
.IP "" 0
|
34
|
+
\fIunyank\fR: Put a gem that was \fIyanked\fR back into the gemserver index\. This reverses a \fByank\fR\.
|
99
35
|
.
|
100
36
|
.SH "OPTIONS"
|
101
37
|
These are the options for all commands\. Not all options apply to all commands\.
|
102
38
|
.
|
103
39
|
.P
|
104
|
-
\fI\-a, \-\-add\fR:
|
105
|
-
.
|
106
|
-
.IP "" 4
|
107
|
-
.
|
108
|
-
.nf
|
109
|
-
|
110
|
-
Add the `\-\-server` or `\-\-upstream` items to the config file when using the
|
111
|
-
`config` command\.
|
112
|
-
.
|
113
|
-
.fi
|
114
|
-
.
|
115
|
-
.IP "" 0
|
40
|
+
\fI\-a, \-\-add\fR: Add the \fB\-\-server\fR or \fB\-\-upstream\fR items to the config file when using the \fBconfig\fR command\.
|
116
41
|
.
|
117
42
|
.P
|
118
|
-
\fI\-d, \-\-debug\fR:
|
119
|
-
.
|
120
|
-
.IP "" 4
|
121
|
-
.
|
122
|
-
.nf
|
123
|
-
|
124
|
-
Output debug information
|
125
|
-
.
|
126
|
-
.fi
|
127
|
-
.
|
128
|
-
.IP "" 0
|
43
|
+
\fI\-d, \-\-debug\fR: Output debug information
|
129
44
|
.
|
130
45
|
.P
|
131
|
-
\fI\-g, \-\-gem\-version\fR=\'VERSION\':
|
132
|
-
.
|
133
|
-
.IP "" 4
|
134
|
-
.
|
135
|
-
.nf
|
136
|
-
|
137
|
-
The version of the gem to yank from `\-\-server` or to mirror from
|
138
|
-
`\-\-upstream`\.
|
139
|
-
.
|
140
|
-
.fi
|
141
|
-
.
|
142
|
-
.IP "" 0
|
46
|
+
\fI\-g, \-\-gem\-version\fR=\'VERSION\': The version of the gem to yank from \fB\-\-server\fR or to mirror from \fB\-\-upstream\fR\.
|
143
47
|
.
|
144
48
|
.P
|
145
|
-
\fI\-h, \-\-help\fR:
|
146
|
-
.
|
147
|
-
.IP "" 4
|
148
|
-
.
|
149
|
-
.nf
|
150
|
-
|
151
|
-
Show the help message
|
152
|
-
.
|
153
|
-
.fi
|
154
|
-
.
|
155
|
-
.IP "" 0
|
49
|
+
\fI\-h, \-\-help\fR: Show the help message
|
156
50
|
.
|
157
51
|
.P
|
158
|
-
\fI\-l, \-\-list\fR:
|
159
|
-
.
|
160
|
-
.IP "" 4
|
161
|
-
.
|
162
|
-
.nf
|
163
|
-
|
164
|
-
Display the current configuration when using the `config` command\.
|
165
|
-
.
|
166
|
-
.fi
|
167
|
-
.
|
168
|
-
.IP "" 0
|
52
|
+
\fI\-l, \-\-list\fR: Display the current configuration when using the \fBconfig\fR command\.
|
169
53
|
.
|
170
54
|
.P
|
171
|
-
\fI\-p, \-\-platform\fR=\'PLATFORM\':
|
172
|
-
.
|
173
|
-
.IP "" 4
|
174
|
-
.
|
175
|
-
.nf
|
176
|
-
|
177
|
-
The platform of the gem to yank from `\-\-server` or to mirror from
|
178
|
-
`\-\-upstream` (e\.g\. ruby, java, mswin32)
|
179
|
-
.
|
180
|
-
.fi
|
181
|
-
.
|
182
|
-
.IP "" 0
|
55
|
+
\fI\-p, \-\-platform\fR=\'PLATFORM\': The platform of the gem to yank from \fB\-\-server\fR or to mirror from \fB\-\-upstream\fR (e\.g\. ruby, java, mswin32)
|
183
56
|
.
|
184
57
|
.P
|
185
|
-
\fI\-s, \-\-server\fR=\'SERVER\':
|
186
|
-
.
|
187
|
-
.IP "" 4
|
188
|
-
.
|
189
|
-
.nf
|
190
|
-
|
191
|
-
The gem server or stickler\-server(1) URL\. This is used by all the commands\.
|
192
|
-
.
|
193
|
-
.fi
|
194
|
-
.
|
195
|
-
.IP "" 0
|
58
|
+
\fI\-s, \-\-server\fR=\'SERVER\': The gem server or stickler\-server(1) URL\. This is used by all the commands\.
|
196
59
|
.
|
197
60
|
.P
|
198
|
-
\fI\-u, \-\-upstream\fR=\'SERVER\':
|
199
|
-
.
|
200
|
-
.IP "" 4
|
201
|
-
.
|
202
|
-
.nf
|
203
|
-
|
204
|
-
The upstream server from which to mirror a gem when using the `mirror`
|
205
|
-
command\.
|
206
|
-
.
|
207
|
-
.fi
|
208
|
-
.
|
209
|
-
.IP "" 0
|
61
|
+
\fI\-u, \-\-upstream\fR=\'SERVER\': The upstream server from which to mirror a gem when using the \fBmirror\fR command\.
|
210
62
|
.
|
211
63
|
.P
|
212
|
-
\fI\-v, \-\-version\fR:
|
213
|
-
.
|
214
|
-
.IP "" 4
|
215
|
-
.
|
216
|
-
.nf
|
217
|
-
|
218
|
-
Output the version\.
|
219
|
-
.
|
220
|
-
.fi
|
221
|
-
.
|
222
|
-
.IP "" 0
|
64
|
+
\fI\-v, \-\-version\fR: Output the version\.
|
223
65
|
.
|
224
66
|
.SH "CONFIGURATION"
|
225
67
|
Stickler uses the \fB\.gem/stickler\fR file to hold its configuration\. It is a yaml file and Currently there are two options\. These are altered using the \fBstickler config\fR command\.
|