github-safegem 0.2.2 → 0.2.3

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.
Files changed (3) hide show
  1. data/VERSION.yml +1 -1
  2. data/bin/safegem +89 -85
  3. metadata +1 -1
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 2
4
- :patch: 2
4
+ :patch: 3
data/bin/safegem CHANGED
@@ -21,109 +21,113 @@ end
21
21
 
22
22
  post '/' do
23
23
  puts "-> #{params.merge('data' => params[:data].size).inspect}"
24
- r, w = IO.pipe
24
+ op = proc do
25
+ r, w = IO.pipe
25
26
 
26
- pid = nil
27
- begin
28
- repo = params[:repo]
29
- data = params[:data]
30
- callback = params[:callback]
31
- token = params[:token]
32
- tmpdir = "tmp/#{repo}"
33
- spec = nil
27
+ pid = nil
28
+ begin
29
+ repo = params[:repo]
30
+ data = params[:data]
31
+ callback = params[:callback]
32
+ token = params[:token]
33
+ tmpdir = "tmp/#{repo}"
34
+ spec = nil
34
35
 
35
- Timeout::timeout(300) do
36
- t = time { `git clone --depth 1 git://github.com/#{repo} #{tmpdir}` }
37
- puts "-- cloned #{repo} in #{t}s"
36
+ Timeout::timeout(300) do
37
+ t = time { `git clone --depth 1 git://github.com/#{repo} #{tmpdir}` }
38
+ puts "-- cloned #{repo} in #{t}s"
38
39
 
39
- t1 = Time.now
40
- pid = fork do
41
- begin
42
- r.close
40
+ t1 = Time.now
41
+ pid = fork do
42
+ begin
43
+ r.close
43
44
 
44
- require 'safegem/security'
45
- require 'safegem/lazy_dir'
46
- Dir.chdir(tmpdir) do
47
- thread = Thread.new do
48
- eval <<-EOE
49
- BEGIN { # First in first out. Get this one exec'ed before the code below.
50
- Object.class_eval do
51
- remove_const :OrigDir rescue nil
52
- OrigDir = Dir
53
- remove_const :Dir
54
- Dir = LazyDir
55
- end
56
- $SAFE = 3
57
- OrigDir.set_safe_level
58
- }
59
- BEGIN { # This forces Ruby to ignore nested END {} blocks
60
- begin
61
- params = tmpdir = data = spec = repo = nil
62
- # Pass data out using TLS
63
- Thread.current[:spec] = (#{data})
64
- ensure
45
+ require 'safegem/security'
46
+ require 'safegem/lazy_dir'
47
+ Dir.chdir(tmpdir) do
48
+ thread = Thread.new do
49
+ eval <<-EOE
50
+ BEGIN { # First in first out. Get this one exec'ed before the code below.
65
51
  Object.class_eval do
52
+ remove_const :OrigDir rescue nil
53
+ OrigDir = Dir
66
54
  remove_const :Dir
67
- Dir = OrigDir
55
+ Dir = LazyDir
68
56
  end
69
- end
70
- }
71
- EOE
72
- end.join
73
- Dir.set_safe_level
74
- spec = thread[:spec]
75
- spec.rubygems_version = Gem::RubyGemsVersion # make sure validation passes
76
- spec.validate
77
- end
57
+ $SAFE = 3
58
+ OrigDir.set_safe_level
59
+ }
60
+ BEGIN { # This forces Ruby to ignore nested END {} blocks
61
+ begin
62
+ params = tmpdir = data = spec = repo = nil
63
+ # Pass data out using TLS
64
+ Thread.current[:spec] = (#{data})
65
+ ensure
66
+ Object.class_eval do
67
+ remove_const :Dir
68
+ Dir = OrigDir
69
+ end
70
+ end
71
+ }
72
+ EOE
73
+ end.join
74
+ Dir.set_safe_level
75
+ spec = thread[:spec]
76
+ spec.rubygems_version = Gem::RubyGemsVersion # make sure validation passes
77
+ spec.validate
78
+ end
78
79
 
79
- payload = Base64.encode64(Zlib::Deflate.deflate(YAML.dump(spec)))
80
- w.write payload
81
- w.close
82
- rescue Object
83
- puts $!, $@
80
+ payload = Base64.encode64(Zlib::Deflate.deflate(YAML.dump(spec)))
81
+ w.write payload
82
+ w.close
83
+ rescue Object
84
+ puts $!, $@
84
85
 
85
- w.write "ERROR: #$!"
86
- w.close
86
+ w.write "ERROR: #$!"
87
+ w.close
88
+ end
87
89
  end
88
- end
89
90
 
90
- w.close
91
- Process.wait(pid)
92
- yaml = r.read
93
- r.close
94
- puts "-- converted to yaml in #{Time.now - t1}s"
91
+ w.close
92
+ Process.wait(pid)
93
+ yaml = r.read
94
+ r.close
95
+ puts "-- converted to yaml in #{Time.now - t1}s"
95
96
 
96
- res = nil
97
- t = time do
98
- payload = {'token' => token, 'yaml' => yaml}
99
- puts "<- [#{callback}] #{payload.merge('yaml' => payload['yaml'].size).inspect}"
100
- res = Net::HTTP.post_form(URI.parse(callback), payload)
101
- end
102
- puts "-> #{res.body.inspect} in #{t}s"
97
+ res = nil
98
+ t = time do
99
+ payload = {'token' => token, 'yaml' => yaml}
100
+ puts "<- [#{callback}] #{payload.merge('yaml' => payload['yaml'].size).inspect}"
101
+ res = Net::HTTP.post_form(URI.parse(callback), payload)
102
+ end
103
+ puts "-> #{res.body.inspect} in #{t}s"
103
104
 
104
- # uri = URI.parse(callback)
105
- # http = Net::HTTP.new(uri.host)
106
- # http.set_debug_output $stdout
107
- # http.start do |http|
108
- # req = Net::HTTP::Post.new(uri.path)
109
- # payload = {'token' => token, 'yaml' => yaml}
110
- # req.set_form_data(payload)
111
- # res = http.request(req)
112
- # p res.value
113
- # end
105
+ # uri = URI.parse(callback)
106
+ # http = Net::HTTP.new(uri.host)
107
+ # http.set_debug_output $stdout
108
+ # http.start do |http|
109
+ # req = Net::HTTP::Post.new(uri.path)
110
+ # payload = {'token' => token, 'yaml' => yaml}
111
+ # req.set_form_data(payload)
112
+ # res = http.request(req)
113
+ # p res.value
114
+ # end
114
115
 
115
- packet = {'result' => "Successfully converted #{repo} gemspec to YAML.", 'error' => nil}
116
+ packet = {'result' => "Successfully converted #{repo} gemspec to YAML.", 'error' => nil}
117
+ puts "<- #{packet.inspect}"
118
+ packet.to_json
119
+ end
120
+ rescue Exception => e
121
+ Process.kill(9, pid) rescue nil
122
+ packet = {'error' => e.to_hash}
116
123
  puts "<- #{packet.inspect}"
117
124
  packet.to_json
125
+ ensure
126
+ `rm -rf #{tmpdir}` if tmpdir
118
127
  end
119
- rescue Exception => e
120
- Process.kill(9, pid) rescue nil
121
- packet = {'error' => e.to_hash}
122
- puts "<- #{packet.inspect}"
123
- packet.to_json
124
- ensure
125
- `rm -rf #{tmpdir}` if tmpdir
126
128
  end
129
+ EM.defer(op, proc { })
130
+ {'result' => 'Success', 'error' => nil}.to_json
127
131
  end
128
132
 
129
133
  if $0 != __FILE__
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-safegem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - PJ Hyett