srscript 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/srscript.rb +25 -324
  4. data.tar.gz.sig +0 -0
  5. metadata +52 -35
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d0e739f5baffe7ec3174500b2098f3db5eb9838f
4
- data.tar.gz: 93e348cf0d5aff9bdefed17d6a32f0bed24227b4
2
+ SHA256:
3
+ metadata.gz: 0aaec929b472cc38c1c1ebbbd833312492376a1dddfe96f0dde1c241269c1dbf
4
+ data.tar.gz: 0dd51e76b3e8fb78ae987d28495c38adf89cc9bf535e7be4c4d9996a9b4bdd50
5
5
  SHA512:
6
- metadata.gz: 116ac9c38504211cd45d4621b4aae54a703c352ce02ef0d74aaacea09066e0de826e650a9ea3736b365901180fc6c6a84e18c7b9a90694dc557ba1d2242b1aba
7
- data.tar.gz: 4dcc7df3bd156374f5f8b68ec1625ec23127df42cd660ceb326a5a81743854fbdf2cc8aef52fe8cf3f2ba8a45fef20a3226163d5c8e09e402a936eaa07b1dacf
6
+ metadata.gz: 5e2ab8e3809c411c911c238c75d6670ee381b07eb091a36a54da536afeae55fd9d7fb441591fce32d4596ea6c4163db7d49ca0121cf032bfbc806cdcd49caa5f
7
+ data.tar.gz: cf4141b11dc97cc6815e9035cb25b80b843a7f2a5d0823ae0f55b707fc838af801d081ec84ee692497ff01213e420e9393cd6a945641d96e1cf282d373a5ab30
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/srscript.rb CHANGED
@@ -1,355 +1,56 @@
1
- #!/usr/bin/ruby
1
+ #!/usr/bin/env ruby
2
2
 
3
3
  # file: srscript.rb
4
4
 
5
5
 
6
- require 'sinatra/base'
6
+ require 'sinatra'
7
7
  require 'rscript'
8
8
 
9
- class SRScript < Sinatra::Base
10
-
11
-
12
- URL_BASE = 'http://rorbuilder.info/r/heroku/' #
13
-
14
- @@count = 0
15
- @@rscript = RScript.new()
16
- @@url_base = 'http://rorbuilder.info/r/heroku/' #
17
- @@get_routes = {}; @@post_routes = {}
18
- @@services = {}
19
- @@templates = {}
20
- @@app = nil
21
- @content_type = 'text/html'
22
-
23
- puts 'ready'
24
9
 
25
- def initialize()
26
- super
27
- puts 'initialized at ' + Time.now.to_s
28
- end
29
-
30
- get '/bootstrap' do
31
-
32
- doc = Document.new(File.open('server.xml','r').read)
33
- server_name, url_base = XPath.match(doc.root, 'summary/*/text()').map(&:to_s)
34
-
35
- url = URL_BASE + 'startup-level1.rsf'
36
- run_script(url, '//job:bootstrap', server_name, url_base)
37
- end
38
10
 
11
+ class SRScriptError < Exception
12
+ end
39
13
 
40
- get '/' do
41
- uri, @content_type = @@app.run_projectx('registry', 'get-key', :path => 'system/homepage/uri/text()')
42
- redirect(uri.to_s)
43
- end
44
-
45
-
46
- configure do
47
- puts 'bootstrapping ... '
48
- doc = Document.new(File.open('server.xml','r').read)
49
- localhost = XPath.first(doc.root, 'summary/localhost/text()').to_s
50
- Thread.new {sleep 8; open(localhost + 'bootstrap', 'UserAgent' => 'srscript')}
51
- end
52
-
53
- def run_rcscript(rsf_url, jobs, raw_args=[])
54
- @@rscript.read([rsf_url, jobs.split(/\s/), raw_args].flatten)
55
- end
56
-
57
- def run_script(url, jobs, *qargs)
58
- result, args = run_rcscript(url, jobs, qargs)
59
- eval(result)
60
- end
61
-
62
- def display_url_run(url, jobs, opts)
63
- h = {'.xml' => 'text/xml','.html' => 'text/html','.txt' => 'text/plain'}
64
- @content_type = h[opts[:extension]]
65
- out = run_script(url, jobs, opts[:args])
66
-
67
- content_type @content_type, :charset => 'utf-8' if defined? content_type
68
- out
69
- end
70
-
71
- def check_url(url)
72
- url = URI.parse(url)
73
- Net::HTTP.start(url.host, url.port) do |http|
74
- return http.head(url.request_uri).code
75
- end
76
- end
77
-
78
- def package_run(package_id, job, opts={})
79
- o = {
80
- :extension => '.html',
81
- :args => []
82
- }.merge(opts)
83
- jobs = "//job:" + job
84
-
85
- url, @content_type = @@app.run_projectx('registry', 'get-key', :path => "system/packages/*[name='#{package_id}']/url/text()").map(&:to_s)
14
+ class SRScript < Sinatra::Base
86
15
 
87
- url = @@url_base + url[1..-1] if url[/^\//]
16
+ def initialize(pkg_src: nil, home_pg: nil)
88
17
 
89
- if url then
90
- display_url_run(url.to_s.sub(/^#{@@url_base}/,'\0s/open/'),jobs, o)
91
- else
18
+ raise SRScriptError, 'pkg_src cannot be nil' unless pkg_src
92
19
 
93
- code = check_url(url)
20
+ super()
21
+ @home_pg = home_pg
22
+ @url_base = pkg_src + '/'
94
23
 
95
- if code == '200' then
96
- url = "%s%s.rsf" % [@@url_base, package_id]
97
- display_url_run(url,jobs, o)
98
- else
99
- # 404
100
- url = url_base + 'open-uri-error.rsf'
101
- run_script(url, '//job:with-code', code)
102
- end
103
- end
24
+ @rscript = RScriptRW.new pkg_src: pkg_src
104
25
 
105
26
  end
106
27
 
107
28
  get '/' do
108
- uri, @content_type = @@app.run_projectx('registry', 'get-key', :path => 'system/homepage/uri/text()')
109
- redirect(uri.to_s)
110
- end
111
-
112
- get %r{^\/([a-zA-Z0-9\-]+)$} do
113
- raw_url, @content_type = @@app.run_projectx('registry', 'get-key', :path => 'system/uri_aliases/url/text()')
114
- url = raw_url.to_s.clone
115
-
116
- #url.sub!('http://rscript.rorbuilder.info/','\0s/open/')
117
- doc = Document.new(open(url, "UserAgent" => "Sinatra-Rscript").read)
118
-
119
- #url = @@url_base + "alias.xml?passthru=1"
120
- #doc = Document.new(open(url, "UserAgent" => "Sinatra-Rscript").read)
121
- node = XPath.first(doc.root, "records/alias[name='#{params[:captures][0]}' and type='r']")
122
-
123
- if node.nil? and not @@get_routes.has_key? params[:captures][0] then
124
- url = "%s%s/index.xml" % [@@url_base, params[:captures][0]]
125
- status = check_url url
126
-
127
- redirect params[:captures][0] + '/' if status == '200'
128
- # url = ...
129
- # redirect url if check_url ""params[:alias] == '200'
130
- pass
131
- else
132
- pass
133
- end
134
- uri = node.text('uri').to_s
135
-
136
- redirect uri
137
- end
138
-
139
- get '/:directory/' do
140
- open("%s%s/index.xml" % [@@url_base, params[:directory]] , 'UserAgent' => 'S-Rscript').read
141
- end
142
-
143
- get '/css/:css' do
144
-
145
- css = params[:css]
146
- key = 'css/' + css
147
-
148
- if @@get_routes.has_key? key then
149
- out, @content_type = @@get_routes[key].call(params)
150
- @content_type ||= 'text/css'
151
- content_type @content_type, :charset => 'utf-8'
152
- out
153
- else
154
- rsf_job, @content_type = @@app.run_projectx('registry', 'get-key', :path => "system/css/*[name='css/#{css}']/rsf_job/text()")
155
- if rsf_job then
156
- redirect rsf_job.to_s
157
- else
158
- # 404
159
- end
160
- end
161
- end
162
-
163
- get '/:form/form' do
164
-
165
- form = params[:form]
166
- key = form + '/form'
167
-
168
- if @@get_routes.has_key? key then
169
- out, @content_type = @@get_routes[key].call(params)
170
- @content_type ||= 'text/html'
171
- content_type @content_type, :charset => 'utf-8'
172
- out
173
- else
174
- rsf_job, @content_type = @@app.run_projectx('registry', 'get-key', :path => "system/forms/*[name='#{form}/form']/rsf_job/text()")
175
- if rsf_job then
176
- puts 'job found'
177
- redirect rsf_job.to_s
178
- else
179
- # 404
180
- end
181
- end
29
+ package, job = @home_pg.split('#',2)
30
+ run_job("%s%s.rsf" % [@url_base, package], job, params)
182
31
  end
183
32
 
184
- get '/:form/form/*' do
185
-
186
- form = params[:form]
187
- key = form + '/form'
188
- args = params[:splat]
189
-
190
- if @@get_routes.has_key? key then
191
- out, @content_type = @@get_routes[key].call(params, args)
192
- @content_type ||= 'text/html'
193
- content_type @content_type, :charset => 'utf-8'
194
- out
195
- else
196
- rsf_job, @content_type = @@app.run_projectx('registry', 'get-key', :path => "system/forms/*[name='#{form}/form']/rsf_job/text()")
197
- if rsf_job then
198
- file_path = args.length > 0 ? '/' + args.join('/') : ''
199
- puts 'form file_path : ' + file_path.to_s
200
- redirect rsf_job.to_s + file_path
201
- else
202
- # 404
203
- end
204
- end
205
- end
206
-
207
- get '/do/:package_id/:job' do
208
- package_id = params[:package_id] #
209
- job, extension = params[:job][/\.\w{3}$/] ? [$`, $&] : [params[:job], '.html']
210
- package_run(package_id, job, {:extension => extension})
211
- end
33
+ get '/do/:package/:job/*' do
212
34
 
213
- get '/view-source/:package_id/:job' do
214
- package_id = params[:package_id] #
215
- *jobs = params[:job]
216
-
217
- #url = "%s%s.rsf" % [url_base, package_id]
218
- url, @content_type = @@app.run_projectx('registry', 'get-key', :path => "system/packages/*[name='#{package_id}']/url/text()")
219
- if url then
220
-
221
- #redirect rsf_job.to_s
222
- buffer = open(url.to_s.sub(/^http:\/\/rscript.rorbuilder.info\//,'\0s/open/'), "UserAgent" => 'Sinatra-Rscript').read
223
- content_type 'text/plain', :charset => 'utf-8'
224
- doc = Document.new(buffer)
225
-
226
- jobs.map!{|x| "@id='%s'" % x}
227
- doc.root.elements.to_a("//job[#{jobs.join(' or ')}]").map do |job|
228
- job.to_s
229
- end
230
- end
231
-
232
-
233
- end
234
-
235
- get '/do/:package_id/:job/*' do
236
- h = {'.xml' => 'text/xml','.html' => 'text/html','.txt' => 'text/plain'}
237
- package_id = params[:package_id] #
238
- job, extension = params[:job][/\.\w{3}$/] ? [$`, $&] : [params[:job], '.html']
239
- jobs = "//job:" + job
240
- raw_args = params[:splat]
35
+ raw_args = params['splat']
241
36
  args = raw_args.join.split('/')
242
-
243
- package_run(package_id, job, {:extension => extension, :args => args})
37
+ run_job("%s%s.rsf" % [@url_base, params['package']], params['job'],
38
+ params, :get, args)
244
39
 
245
40
  end
246
41
 
247
- get '/view-source/:package_id' do
248
- package_id = params[:package_id] #
249
- #url = "%s%s.rsf" % [url_base, package_id]
250
- url, @content_type = @@app.run_projectx('registry', 'get-key', :path => "system/packages/*[name='#{package_id}']/url/text()")
251
- if url then
252
- buffer = open(url.to_s.sub(/^http:\/\/rscript.rorbuilder.info\//,'\0s/open/'), "UserAgent" => 'Sinatra-Rscript').read
253
- content_type 'text/plain', :charset => 'utf-8'
254
- buffer
255
- end
42
+ get '/do/:package/:job' do |package,job|
43
+ run_job("%s%s.rsf" % [@url_base, package], job, params)
256
44
  end
257
45
 
258
- get '/do/:package_id/' do
259
- redirect "/do/r/p/" + params[:package_id]
260
- end
46
+ private
261
47
 
48
+ def run_job(url, job, params={}, type=:get, *qargs)
262
49
 
263
- # projectx request
264
- get '/p/:project_name/:method_name' do
265
- project_name = params[:project_name]
266
- method_name = params[:method_name]
267
- r, @content_type = @@app.run_projectx(project_name, method_name, request.params)
268
-
269
- @content_type ||= 'text/html'
270
- content_type @content_type, :charset => 'utf-8'
271
- # todo: implement a filter to check for rexml objects to be converted to a string
272
- r
273
- end
274
-
275
-
276
- # projectx request
277
- get '/p/projectx' do
278
- xml_project = request.params.to_a[0][1]
279
- projectx_handler(xml_project)
280
- end
281
-
282
- get '/load/:package_id/:job' do
283
-
284
- package_id = params[:package_id] #
285
- job, extension = params[:job][/\.\w{3}$/] ? [$`, $&] : [params[:job], '.html']
286
- load_rsf_job2(package_id, job, route=package_id + '/' + job, extension)
287
- end
288
-
289
-
290
-
291
- def follow_route(routes, key)
292
- if routes.has_key? key then
293
- routes[key].call(params)
294
-
295
- else
296
- route = routes.detect {|k,v| key[/#{k}/]}
297
-
298
- if route then
299
- remaining = $'
300
- if remaining then
301
- args = remaining.split('/')
302
- args.shift
303
- else
304
- args = []
305
- end
306
-
307
- route[1].call( params, args)
308
-
309
- else
310
- puts '@@app is ' + @@app.inspect
311
- out, @content_type = @@app.run_projectx('dir', 'view', {:file_path => key, :passthru => params[:passthru]})
312
- [out, @content_type]
313
- #puts "no match"
314
- end
315
- end
316
- end
317
-
318
- # custom routes
319
- get '/*' do
320
- key = params[:splat].join
321
-
322
- if params.has_key? 'edit' and params[:edit] = '1' then
323
- # fetch the editor
324
- # we first need to know the file type
325
- # open the xml file
326
- url = @@url_base + key
327
- buffer = open(url.to_s.sub(/^http:\/\/rscript.rorbuilder.info\//,'\0s/open/'), "UserAgent" => 'Sinatra-Rscript').read
328
- doc = Document.new(buffer)
329
- recordx_type = XPath.first(doc.root, 'summary/recordx_type/text()').to_s
330
- uri, @content_type = @@app.run_projectx('registry', 'get-key', :path => "system/recordx_editor/#{recordx_type}/uri/text()")
331
- editor_url = @@url_base + uri.to_s + '/' + key
332
-
333
- redirect editor_url
334
- else
335
-
336
- out, content_type = follow_route(@@get_routes, key)
337
- #puts out
338
- puts 'Content type : ' + content_type unless content_type.nil?
339
- content_type ||= 'text/html'
340
- content_type content_type, :charset => 'utf-8'
341
- out
342
- end
343
- end
50
+ @rscript.type = type
51
+ result, args = @rscript.read([url, '//job:' + job, qargs].flatten)
52
+ r = eval result
344
53
 
345
- post '/*' do
346
- key = params[:splat].join
347
- out, content_type = follow_route(@@post_routes, key)
348
- #puts 'sss' + out.to_s
349
- #out = follow_route(@@post_routes, key)
350
- content_type ||= 'text/html'
351
- content_type content_type, :charset => 'utf-8'
352
- out
353
54
  end
354
55
 
355
- end
56
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: srscript
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,57 +10,75 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDRDCCAiygAwIBAgIBADANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTEzMDIwNjIxMDYyN1oXDTE0MDIwNjIxMDYyN1owSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBANd9dfY4pYA20eSePArM2mbotk15L2F7Qg9TWAsCfWWqltZwoMg9UX19LjGR
19
- P9k3znGXZsZufo91Xosx67st2E1iwL3OlTfdxok7NaJ7QYU6668qY2C4K/f0RtMs
20
- guNM+dJly8r8KdLJ66HJ5bXvf+MQ+RvRSxqIYt0LsA81JZEy2rQXcOx2F6q+S2OJ
21
- qKqaqEGyq7PicShXzJocyGtQvf538dfF/edCLD79iEIUbHokYJALFsuCknOiXffR
22
- qCzMqPZke40T4gjK0qXjjtQQQNvi+rKgv27+k02181117BPZLLj/pHM9B9/Owx/M
23
- DhFWYPvCuUyDy+VfzlaXXgT0u30CAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4E
24
- FgQUKHg/9vNIaGCbbkTNigc/OfnNHzYwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEB
25
- BQUAA4IBAQC2aHH+cBVLQf8MKW+vz4/15qXV/qRfVo+uL3QQEZjtX13XrgGfjrLL
26
- ZQYJ9Qx7rWRJNtQbxG1OEJFViX7QH5r+ElnhyteWa0LenYpsLXf2Rdqny9Pd2Zhh
27
- CQOwDCDXKt12rvh95eWKdtavk5jobVLGWZlX1pPbKXBjr3Ua1BmddIKMDM0sijzv
28
- aPkBMJTgV6D0ToN5DojyPWGys7xUAnC2drd57ztKK9mZPlVUVUP7ZmTIpTncgMJQ
29
- ZDjUblT6kOoS2GYI+2MxVyMsWc4tKtCX7Zbzv5h7uX57FgL0AdKxpXfDbMKMk+Tv
30
- iFh4gBdpaP47qEQUk0iiURIX2/vjlEBl
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMzA5MjIzNjE1WhcN
15
+ MjMwMzA5MjIzNjE1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDHKxjh
17
+ ZpGjjKRT4iIosaCoTSoqIfZ39SUU0V2nY5aTCY6WA1/GYDr2rcobxxSNa9P6cA6B
18
+ xKdKWUBKoU1A8Zfrv2fKJU5r5TKnFZod7KaGJQLSCcZA5hDOV0tt6qPKhZaAmlKm
19
+ XLp4yQXtDDGsTPtD1zCMCBH6B3PrWSaP6wwevRg5rG5mLcM/I+PBN9W2uocpTZN1
20
+ DUPjVXlo0vUzFErzf1YqowbgL70gZNYaIXbh94eSAJqIl32VfNNM+0rESNd9yYty
21
+ 3dRiYvLnYh1dA5RmDdNQaajU8+uHMfidfgqgEpvuAvC+c017lriTP/LRAewZRg1J
22
+ aAvgXTgCjRdqF3SKX1ErWgdc+hivGkque0huAUk4QQ1vTJytvyuH7og6lSORg29F
23
+ sQVzHHAihLu4N3UTjhm0B+I7R/ROhK1G8W453HBhXZDQjWohLJSsmsNvkyl1DDu2
24
+ P11hNYay3zYr5L9t6v7Pq1vmCTF/3o921ACb0vKb9IiqhO1gDy6rprSZAckCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU5Xn66R4k
26
+ A1lOu07s8nG0Q3O8hRcwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAU+mpOg2I7sm+9fKRedWEfF+luyt+hNwymZ7uwAMF
29
+ 8nPytLkvc0QWFxGPjThQ0hyqgqWCLd7FjGFKwA+w4uPg2II0Gnc3ma57MCEroYtr
30
+ cJxRA6F12HNY8zctS8rqEn6qYy9ah0ZVIgJDHN3wrnyR9L9of0k8J1FJbrcseyvl
31
+ IoWLe0QeSnvGaWQDCLU11dYcTy5ZvGOEpMPISsQ5gtCEoXdT2EIX8pQ0aogOE6/8
32
+ qsPY+HWMhVeiCoUGT4gBWV27Pm1tkh0nSdoIMJiSiVfhfWyKRLqTdzsGpS6G1XAh
33
+ U12gY1Lt1MrgDDcgmCLu4N7CxVJx/eVkS9V7cu65Q2D5YMe9IL9C7jgUZmB4oZkA
34
+ W60Ynnyc+GlLuzw+mI84MWVK/tf749G1XsaMvx2nnp86qdGfLf7xrGWawbKWJxi3
35
+ 2z1HlZv8zwgUdcV5iOVRfftvVqIXZESN34zxHHSgp9A0zmsLDe0wbOSybmRVGNhj
36
+ tWWpys05YhRty+oDHm6vgumf
31
37
  -----END CERTIFICATE-----
32
- date: 2013-07-27 00:00:00.000000000 Z
38
+ date: 2022-03-09 00:00:00.000000000 Z
33
39
  dependencies:
34
40
  - !ruby/object:Gem::Dependency
35
41
  name: sinatra
36
42
  requirement: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - '>='
44
+ - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: '0'
46
+ version: '2.2'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 2.2.0
41
50
  type: :runtime
42
51
  prerelease: false
43
52
  version_requirements: !ruby/object:Gem::Requirement
44
53
  requirements:
45
- - - '>='
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '2.2'
57
+ - - ">="
46
58
  - !ruby/object:Gem::Version
47
- version: '0'
59
+ version: 2.2.0
48
60
  - !ruby/object:Gem::Dependency
49
61
  name: rscript
50
62
  requirement: !ruby/object:Gem::Requirement
51
63
  requirements:
52
- - - '>='
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '0.9'
67
+ - - ">="
53
68
  - !ruby/object:Gem::Version
54
- version: '0'
69
+ version: 0.9.0
55
70
  type: :runtime
56
71
  prerelease: false
57
72
  version_requirements: !ruby/object:Gem::Requirement
58
73
  requirements:
59
- - - '>='
74
+ - - "~>"
60
75
  - !ruby/object:Gem::Version
61
- version: '0'
76
+ version: '0.9'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 0.9.0
62
80
  description:
63
- email: james@r0bertson.co.uk
81
+ email: digital.robertson@gmail.com
64
82
  executables: []
65
83
  extensions: []
66
84
  extra_rdoc_files: []
@@ -76,18 +94,17 @@ require_paths:
76
94
  - lib
77
95
  required_ruby_version: !ruby/object:Gem::Requirement
78
96
  requirements:
79
- - - '>='
97
+ - - ">="
80
98
  - !ruby/object:Gem::Version
81
- version: '0'
99
+ version: 2.1.2
82
100
  required_rubygems_version: !ruby/object:Gem::Requirement
83
101
  requirements:
84
- - - '>='
102
+ - - ">="
85
103
  - !ruby/object:Gem::Version
86
104
  version: '0'
87
105
  requirements: []
88
- rubyforge_project:
89
- rubygems_version: 2.0.0.rc.2
106
+ rubygems_version: 3.2.22
90
107
  signing_key:
91
108
  specification_version: 4
92
- summary: srscript
109
+ summary: A Sinatra based web server used as a rscript proxy.
93
110
  test_files: []
metadata.gz.sig CHANGED
Binary file