systemu 2.5.2 → 2.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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ M2Y5MTczYmJjMzYzNmQ2NzIxMDQ0NTY0MWU2NWFlMGQzYTI2MmQwNA==
5
+ data.tar.gz: !binary |-
6
+ ZjMyODk2OGRmNWEwMWUyZjE3MmNmNDExM2ZkZjY3OTFjNjllYmNiMw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ Mzk4ZjliMjIzNDQ5Y2JmNjE0ZDRkZmE2ZmU3ZDFmNGM1NmJiMGQyZTk1OTMy
10
+ MTBmOTZjZTM2MjRhMDdlMGQzNjY3Zjc4ZGI5NmUxMjcyODY3MzkxNTRjMmFj
11
+ OTc0YmU2ZWFiN2NkZWM2MTk5ZDIwNWRiYjAzNmVkOWY4NzE4MGY=
12
+ data.tar.gz: !binary |-
13
+ NTNjMzNjYzUwNTAwOGZkMjdmMzRjYjM3NzIwNTU2ZjMzYmJjYmZkZGMwOWUw
14
+ ODk5NTdkOTNhN2ZlNTRmNTdlYjgyZmFkYmI3ZmYzZTkyMzE3NDkyMDljNzI3
15
+ YzFmMDZkODg0ZjA0OTY3ZmFlYWY5NWZmYjc4MWQ2NzI3YjEwNmQ=
data/Rakefile CHANGED
@@ -118,6 +118,7 @@ task :gemspec do
118
118
  spec.platform = Gem::Platform::RUBY
119
119
  spec.summary = #{ lib.inspect }
120
120
  spec.description = #{ description.inspect }
121
+ spec.license = "same as ruby's"
121
122
 
122
123
  spec.files =\n#{ files.sort.pretty_inspect }
123
124
  spec.executables = #{ executables.inspect }
data/lib/systemu.rb CHANGED
@@ -14,7 +14,7 @@ class SystemUniversal
14
14
  #
15
15
  # constants
16
16
  #
17
- SystemUniversal::VERSION = '2.5.2' unless SystemUniversal.send(:const_defined?, :VERSION)
17
+ SystemUniversal::VERSION = '2.6.0' unless SystemUniversal.send(:const_defined?, :VERSION)
18
18
  def SystemUniversal.version() SystemUniversal::VERSION end
19
19
  def version() SystemUniversal::VERSION end
20
20
  #
@@ -73,7 +73,7 @@ class SystemUniversal
73
73
  thread = nil
74
74
 
75
75
  quietly{
76
- IO.popen "#{ quote(@ruby) } #{ quote(c['program']) }", 'r+' do |pipe|
76
+ IO.popen "#{ quote(@ruby) } #{ quote(c['program']) }", 'rb+' do |pipe|
77
77
  line = pipe.gets
78
78
  case line
79
79
  when %r/^pid: \d+$/
@@ -108,11 +108,11 @@ class SystemUniversal
108
108
  end
109
109
 
110
110
  if @stdout or @stderr
111
- open(c['stdout']){|f| relay f => @stdout} if @stdout
112
- open(c['stderr']){|f| relay f => @stderr} if @stderr
111
+ open(c['stdout'], 'rb'){|f| relay f => @stdout} if @stdout
112
+ open(c['stderr'], 'rb'){|f| relay f => @stderr} if @stderr
113
113
  status
114
114
  else
115
- [status, IO.read(c['stdout']), IO.read(c['stderr'])]
115
+ [status, open(c['stdout'], 'rb'){|f| f.read}, open(c['stderr'], 'rb'){|f| f.read}]
116
116
  end
117
117
  end
118
118
  end
@@ -140,7 +140,7 @@ class SystemUniversal
140
140
  config = File.expand_path(File.join(tmp, 'config'))
141
141
 
142
142
  if @stdin
143
- open(stdin, 'w'){|f| relay @stdin => f}
143
+ open(stdin, 'wb'){|f| relay @stdin => f}
144
144
  else
145
145
  FileUtils.touch stdin
146
146
  end
@@ -155,9 +155,9 @@ class SystemUniversal
155
155
  c['stdout'] = stdout
156
156
  c['stderr'] = stderr
157
157
  c['program'] = program
158
- open(config, 'w'){|f| Marshal.dump(c, f)}
158
+ open(config, 'wb'){|f| Marshal.dump(c, f)}
159
159
 
160
- open(program, 'w'){|f| f.write child_program(config)}
160
+ open(program, 'wb'){|f| f.write child_program(config)}
161
161
 
162
162
  c
163
163
  end
@@ -217,11 +217,21 @@ class SystemUniversal
217
217
  end
218
218
  end
219
219
 
220
+ def slug_for(*args)
221
+ options = args.last.is_a?(Hash) ? args.pop : {}
222
+ join = (options[:join] || options['join'] || '_').to_s
223
+ string = args.flatten.compact.join(join)
224
+ words = string.to_s.scan(%r|[/\w]+|)
225
+ words.map!{|word| word.gsub %r|[^/0-9a-zA-Z_-]|, ''}
226
+ words.delete_if{|word| word.nil? or word.strip.empty?}
227
+ words.join(join).downcase.gsub('/', (join * 2))
228
+ end
229
+
220
230
  def tmpdir d = Dir.tmpdir, max = 42, &b
221
231
  i = -1 and loop{
222
232
  i += 1
223
233
 
224
- tmp = File.join d, "systemu_#{ @host }_#{ @ppid }_#{ @pid }_#{ rand }_#{ i += 1 }"
234
+ tmp = File.join(d, slug_for("systemu_#{ @host }_#{ @ppid }_#{ @pid }_#{ rand }_#{ i += 1 }"))
225
235
 
226
236
  begin
227
237
  Dir.mkdir tmp
data/systemu.gemspec CHANGED
@@ -3,10 +3,11 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "systemu"
6
- spec.version = "2.5.2"
6
+ spec.version = "2.6.0"
7
7
  spec.platform = Gem::Platform::RUBY
8
8
  spec.summary = "systemu"
9
9
  spec.description = "description: systemu kicks the ass"
10
+ spec.license = "same as ruby's"
10
11
 
11
12
  spec.files =
12
13
  ["LICENSE",
data/test/systemu_test.rb CHANGED
@@ -17,6 +17,20 @@ Testing SystemU do
17
17
  assert{ stdout == stdin }
18
18
  end
19
19
 
20
+ testing 'silly hostnames' do
21
+ host = SystemU.instance_variable_get('@host')
22
+ silly_hostname = "silly's hostname with spaces"
23
+ begin
24
+ SystemU.instance_variable_set('@host', silly_hostname)
25
+ assert{ SystemU.instance_variable_get('@host') == silly_hostname }
26
+ stdin = '42'
27
+ status, stdout, stderr = assert{ systemu :bin/:cat, :stdin => stdin }
28
+ assert{ status == 0 }
29
+ ensure
30
+ assert{ SystemU.instance_variable_set('@host', host) }
31
+ end
32
+ end
33
+
20
34
  end
21
35
 
22
36
 
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: systemu
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.2
5
- prerelease:
4
+ version: 2.6.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ara T. Howard
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-07-13 00:00:00.000000000 Z
11
+ date: 2013-12-07 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: ! 'description: systemu kicks the ass'
15
14
  email: ara.t.howard@gmail.com
@@ -32,27 +31,27 @@ files:
32
31
  - test/systemu_test.rb
33
32
  - test/testing.rb
34
33
  homepage: https://github.com/ahoward/systemu
35
- licenses: []
34
+ licenses:
35
+ - same as ruby's
36
+ metadata: {}
36
37
  post_install_message:
37
38
  rdoc_options: []
38
39
  require_paths:
39
40
  - lib
40
41
  required_ruby_version: !ruby/object:Gem::Requirement
41
- none: false
42
42
  requirements:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
46
  required_rubygems_version: !ruby/object:Gem::Requirement
47
- none: false
48
47
  requirements:
49
48
  - - ! '>='
50
49
  - !ruby/object:Gem::Version
51
50
  version: '0'
52
51
  requirements: []
53
52
  rubyforge_project: codeforpeople
54
- rubygems_version: 1.8.24
53
+ rubygems_version: 2.0.3
55
54
  signing_key:
56
- specification_version: 3
55
+ specification_version: 4
57
56
  summary: systemu
58
57
  test_files: []