wunderbar 0.16.1 → 0.16.2

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.
data/README.md CHANGED
@@ -310,7 +310,9 @@ are sent individually and as they are produced.
310
310
  `_.system` will run an aritrary command. Lines of output are sent across the
311
311
  websocket as they are received as JSON encoded hashes with two values: `type`
312
312
  is one of `stdin`, `stdout` or `stderr`; and `line` which contains the line
313
- itself.
313
+ itself. If the command is an array, the elements of the array will be escaped
314
+ as Shell command arguments. Nested arrays may be used to hide elements from
315
+ the echoing of the command to stdin. Nil values are omitted.
314
316
 
315
317
  Options to `_websocket` are provided as a hash:
316
318
 
@@ -179,16 +179,22 @@ module Wunderbar
179
179
 
180
180
  # execute a system command, echoing stdin, stdout, and stderr
181
181
  def system(command, opts={})
182
- if command.respond_to? :join
182
+ if command.respond_to? :flatten
183
+ flat = command.flatten
184
+ secret = command - flat
183
185
  begin
184
186
  # if available, use escape as it does prettier quoting
185
187
  require 'escape'
186
- command = Escape.shell_command(command).untaint
188
+ echo = Escape.shell_command(command.compact - secret)
189
+ command = Escape.shell_command(flat.compact).untaint
187
190
  rescue LoadError
188
191
  # std-lib function that gets the job done
189
192
  require 'shellwords'
190
- command = Shellwords.join(command).untaint
193
+ echo = Shellwords.join(command.compact - secret)
194
+ command = Shellwords.join(flat.compact).untaint
191
195
  end
196
+ else
197
+ echo = command
192
198
  end
193
199
 
194
200
  require 'open3'
@@ -198,7 +204,7 @@ module Wunderbar
198
204
  stdout = output_class[:stdout] || '_stdout'
199
205
  stderr = output_class[:stderr] || '_stderr'
200
206
 
201
- @_builder.tag! tag, command, :class=>stdin unless opts[:echo] == false
207
+ @_builder.tag! tag, echo, :class=>stdin unless opts[:echo] == false
202
208
 
203
209
  require 'thread'
204
210
  semaphore = Mutex.new
@@ -2,7 +2,7 @@ module Wunderbar
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 16
5
- TINY = 1
5
+ TINY = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/wunderbar.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "wunderbar"
5
- s.version = "0.16.1"
5
+ s.version = "0.16.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Sam Ruby"]
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.files = ["wunderbar.gemspec", "README.md", "COPYING", "lib/wunderbar.rb", "lib/wunderbar", "lib/wunderbar/installation.rb", "lib/wunderbar/html-methods.rb", "lib/wunderbar/job-control.rb", "lib/wunderbar/server.rb", "lib/wunderbar/logger.rb", "lib/wunderbar/rack.rb", "lib/wunderbar/builder.rb", "lib/wunderbar/websocket.rb", "lib/wunderbar/sinatra.rb", "lib/wunderbar/environment.rb", "lib/wunderbar/rails.rb", "lib/wunderbar/cgi-methods.rb", "lib/wunderbar/cssproxy.rb", "lib/wunderbar/version.rb"]
13
13
  s.homepage = "http://github.com/rubys/wunderbar"
14
14
  s.require_paths = ["lib"]
15
- s.rubygems_version = "1.8.21"
15
+ s.rubygems_version = "1.8.15"
16
16
  s.summary = "HTML Generator and CGI application support"
17
17
 
18
18
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,60 +1,47 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: wunderbar
3
- version: !ruby/object:Gem::Version
4
- hash: 93
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.16.2
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 16
9
- - 1
10
- version: 0.16.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Sam Ruby
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-05-17 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-05-17 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: builder
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &5805260 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 7
29
- segments:
30
- - 3
31
- - 0
32
- version: "3.0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '3.0'
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: json
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *5805260
25
+ - !ruby/object:Gem::Dependency
26
+ name: json
27
+ requirement: &5804520 !ruby/object:Gem::Requirement
39
28
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
47
33
  type: :runtime
48
- version_requirements: *id002
49
- description: " Wunderbar makes it easy to produce valid HTML5, wellformed XHTML, Unicode\n (utf-8), consistently indented, readable applications. This includes\n output that conforms to the Polyglot specification and the emerging\n results from the XML Error Recovery Community Group.\n"
34
+ prerelease: false
35
+ version_requirements: *5804520
36
+ description: ! " Wunderbar makes it easy to produce valid HTML5, wellformed XHTML,
37
+ Unicode\n (utf-8), consistently indented, readable applications. This includes\n
38
+ \ output that conforms to the Polyglot specification and the emerging\n results
39
+ from the XML Error Recovery Community Group.\n"
50
40
  email: rubys@intertwingly.net
51
41
  executables: []
52
-
53
42
  extensions: []
54
-
55
43
  extra_rdoc_files: []
56
-
57
- files:
44
+ files:
58
45
  - wunderbar.gemspec
59
46
  - README.md
60
47
  - COPYING
@@ -75,36 +62,26 @@ files:
75
62
  - lib/wunderbar/version.rb
76
63
  homepage: http://github.com/rubys/wunderbar
77
64
  licenses: []
78
-
79
65
  post_install_message:
80
66
  rdoc_options: []
81
-
82
- require_paths:
67
+ require_paths:
83
68
  - lib
84
- required_ruby_version: !ruby/object:Gem::Requirement
69
+ required_ruby_version: !ruby/object:Gem::Requirement
85
70
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- hash: 3
90
- segments:
91
- - 0
92
- version: "0"
93
- required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
76
  none: false
95
- requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- hash: 3
99
- segments:
100
- - 0
101
- version: "0"
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
102
81
  requirements: []
103
-
104
82
  rubyforge_project:
105
- rubygems_version: 1.8.21
83
+ rubygems_version: 1.8.15
106
84
  signing_key:
107
85
  specification_version: 3
108
86
  summary: HTML Generator and CGI application support
109
87
  test_files: []
110
-