ruby_ex 0.1.2 → 0.2.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.
- data/ChangeLog +693 -0
- data/NEWS +74 -0
- data/SPEC.dyn.yml +6 -6
- data/SPEC.gemspec +14 -0
- data/SPEC.yml +4 -4
- data/lib/abstract.rb +2 -4
- data/lib/abstract_node.rb +1 -2
- data/lib/algorithms/simulated_annealing.rb +50 -29
- data/lib/attributed_class.rb +50 -21
- data/lib/auto_object.rb +102 -0
- data/lib/blank_slate.rb +102 -0
- data/lib/cache.rb +1 -2
- data/lib/choose.rb +165 -163
- data/lib/commands.rb +2 -3
- data/lib/commands/command.rb +47 -20
- data/lib/commands/datas.rb +1 -1
- data/lib/commands/datas/composite.rb +5 -1
- data/lib/commands/datas/data.rb +102 -5
- data/lib/commands/datas/factory.rb +13 -6
- data/lib/commands/datas/temp.rb +3 -5
- data/lib/commands/factory.rb +1 -1
- data/lib/commands/helpers.rb +1 -1
- data/lib/commands/pipe.rb +10 -1
- data/lib/commands/runners.rb +1 -1
- data/lib/commands/runners/exec.rb +1 -1
- data/lib/commands/runners/fork.rb +3 -16
- data/lib/commands/runners/mock.rb +67 -0
- data/lib/commands/runners/runner.rb +5 -3
- data/lib/commands/runners/system.rb +1 -1
- data/lib/commands/seq.rb +2 -1
- data/lib/config_file.rb +10 -2
- data/lib/const_regexp.rb +1 -2
- data/lib/{dlogger.rb → d_logger.rb} +1 -2
- data/lib/daemon.rb +1 -2
- data/lib/diff.rb +1 -2
- data/lib/drb/drb_observable.rb +1 -2
- data/lib/drb/drb_observable_pool.rb +2 -2
- data/lib/drb/drb_service.rb +1 -2
- data/lib/drb/drb_undumped_attributes.rb +1 -2
- data/lib/drb/drb_undumped_indexed_object.rb +1 -2
- data/lib/drb/insecure_protected_methods.rb +1 -2
- data/lib/drb_ex.rb +2 -2
- data/lib/file_type.rb +466 -0
- data/lib/generate_id.rb +12 -6
- data/lib/genpasswd.rb +22 -0
- data/lib/hash_eval.rb +83 -0
- data/lib/histogram.rb +1 -2
- data/lib/hookable.rb +3 -4
- data/lib/hooker.rb +1 -3
- data/lib/html_encode.rb +191 -0
- data/lib/indexed_node.rb +0 -1
- data/lib/io_marshal.rb +4 -2
- data/lib/ioo.rb +3 -2
- data/lib/kill_all.rb +46 -0
- data/lib/labeled_node.rb +0 -1
- data/lib/logger_observer.rb +8 -4
- data/lib/md5sum.rb +3 -3
- data/lib/meta_factory.rb +99 -0
- data/lib/method_call.rb +87 -0
- data/lib/mocks.rb +12 -0
- data/lib/mocks/assertions.rb +50 -0
- data/lib/mocks/method_logger.rb +40 -0
- data/lib/mocks/mock.rb +64 -0
- data/lib/mocks/object.rb +47 -0
- data/lib/mocks/observer.rb +38 -0
- data/lib/module/autoload_tree.rb +30 -29
- data/lib/module/hierarchy.rb +176 -171
- data/lib/module/instance_method_visibility.rb +39 -38
- data/lib/node.rb +0 -1
- data/lib/object_monitor.rb +1 -2
- data/lib/object_monitor_activity.rb +1 -2
- data/lib/observable.rb +1 -2
- data/lib/observable_pool.rb +1 -2
- data/lib/{orderedhash.rb → ordered_hash.rb} +41 -5
- data/lib/pp_hierarchy.rb +7 -2
- data/lib/r_path.rb +307 -0
- data/lib/random_generators.rb +7 -20
- data/lib/random_generators/random_generator.rb +2 -4
- data/lib/random_generators/ruby.rb +4 -2
- data/lib/regex_path.rb +124 -0
- data/lib/ruby_ex.rb +28 -98
- data/lib/safe_eval.rb +1 -2
- data/lib/sendmail.rb +14 -17
- data/lib/service_manager.rb +1 -2
- data/lib/shuffle.rb +6 -2
- data/lib/spring.rb +1 -2
- data/lib/spring_set.rb +1 -2
- data/lib/{symtbl.rb → sym_tbl.rb} +90 -5
- data/lib/sym_tbl_gsub.rb +227 -0
- data/lib/{synflow.rb → syn_flow.rb} +1 -2
- data/lib/text.rb +218 -0
- data/lib/timeout_ex.rb +1 -2
- data/lib/trace.rb +9 -8
- data/lib/uri/druby.rb +1 -2
- data/lib/uri/file.rb +1 -1
- data/lib/uri/ftp_ex.rb +1 -1
- data/lib/uri/http_ex.rb +1 -1
- data/lib/uri/mysql.rb +121 -0
- data/lib/uri/pgsql.rb +19 -38
- data/lib/uri/svn.rb +1 -2
- data/lib/uri_ex.rb +45 -3
- data/lib/verbose_object.rb +181 -38
- data/lib/yaml/chop_header.rb +19 -11
- data/lib/yaml/transform.rb +17 -11
- data/lib/yaml/yregexpath.rb +11 -5
- data/test/algorithms/simulated_annealing_test.rb +2 -2
- data/test/resources/foo.tar.gz +0 -0
- data/test/resources/tar.gz.log +49 -0
- data/test/sanity-suite.yml +5 -7
- data/test/sanity/multiple-requires.yml +17 -7
- data/test/sanity/single-requires.yml +38 -20
- data/test/stress-tests/threads_and_exceptions.yml +13 -0
- data/test/test-unit-setup.rb +3 -1
- data/test/unit-suite.yml +7 -8
- metadata +42 -31
- data/lib/algorithms.rb +0 -12
- data/lib/ask.rb +0 -100
- data/lib/checkout.rb +0 -12
- data/lib/dumpable_proc.rb +0 -57
- data/lib/filetype.rb +0 -229
- data/lib/thread_mutex.rb +0 -11
- data/lib/yaml/basenode_ext.rb +0 -63
data/lib/commands.rb
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
2
2
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
|
3
3
|
# License:: GNU General Public License (GPL).
|
|
4
|
-
# Revision:: $Id: commands.rb
|
|
4
|
+
# Revision:: $Id: commands.rb 343 2005-09-08 01:32:57Z ertai $
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
require 'module/autoload_tree'
|
|
6
|
+
AutoloadTree.import!
|
|
8
7
|
require 'abstract'
|
|
9
8
|
require 'hookable'
|
|
10
9
|
require 'hooker'
|
data/lib/commands/command.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
2
2
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
|
3
3
|
# License:: GNU General Public License (GPL).
|
|
4
|
-
# Revision:: $Id: command.rb
|
|
4
|
+
# Revision:: $Id: command.rb 341 2005-09-07 00:01:43Z ertai $
|
|
5
5
|
|
|
6
6
|
require 'commands'
|
|
7
7
|
|
|
@@ -15,6 +15,7 @@ module Commands
|
|
|
15
15
|
attr_accessor :output
|
|
16
16
|
attr_accessor :error
|
|
17
17
|
attr_accessor :args
|
|
18
|
+
attr_accessor :open_mode
|
|
18
19
|
|
|
19
20
|
#
|
|
20
21
|
# Construction methods.
|
|
@@ -23,6 +24,8 @@ module Commands
|
|
|
23
24
|
def initialize ( command_name, *args )
|
|
24
25
|
@command = command_name
|
|
25
26
|
@args = args.dup
|
|
27
|
+
@open_mode = :w
|
|
28
|
+
@input, @output, @error = nil, nil, nil
|
|
26
29
|
end
|
|
27
30
|
|
|
28
31
|
#
|
|
@@ -66,18 +69,21 @@ module Commands
|
|
|
66
69
|
|
|
67
70
|
|
|
68
71
|
# Use Kernel#system() but with a string to have the shell expansion.
|
|
72
|
+
# FIXME make me a runner
|
|
69
73
|
def sh
|
|
70
74
|
Kernel.system(to_sh)
|
|
71
75
|
end
|
|
72
76
|
|
|
73
77
|
|
|
74
78
|
# Use Kernel#exec() but with a string to have the shell expansion.
|
|
79
|
+
# FIXME make me a runner
|
|
75
80
|
def sh!
|
|
76
81
|
Kernel.exec(to_sh)
|
|
77
82
|
end
|
|
78
83
|
|
|
79
84
|
|
|
80
85
|
# Use Kernel#` and return the resulting string.
|
|
86
|
+
# FIXME make me a runner
|
|
81
87
|
def expand
|
|
82
88
|
`#{to_sh}`
|
|
83
89
|
end
|
|
@@ -93,12 +99,16 @@ module Commands
|
|
|
93
99
|
|
|
94
100
|
|
|
95
101
|
# FIXME design me!
|
|
102
|
+
# FIXME make me a runner
|
|
96
103
|
def ruby
|
|
97
104
|
end
|
|
98
105
|
|
|
99
106
|
|
|
100
107
|
# Use a Commands::Runners::Runner and return a Commands::Datas::Data.
|
|
101
108
|
def run ( runner=@runner )
|
|
109
|
+
unless runner.respond_to? :run
|
|
110
|
+
raise ArgumentError, "need a runner not: #{runner.inspect}"
|
|
111
|
+
end
|
|
102
112
|
runner.run(self)
|
|
103
113
|
end
|
|
104
114
|
|
|
@@ -142,14 +152,10 @@ module Commands
|
|
|
142
152
|
end
|
|
143
153
|
|
|
144
154
|
|
|
145
|
-
def add_outputs ( out, err
|
|
155
|
+
def add_outputs ( out, err )
|
|
146
156
|
cmd = dup
|
|
147
|
-
cmd.output = out.dup
|
|
148
|
-
cmd.
|
|
149
|
-
if err
|
|
150
|
-
cmd.error = err.dup
|
|
151
|
-
cmd.error.open_mode = mode if cmd.error.is_a? Pathname
|
|
152
|
-
end
|
|
157
|
+
cmd.output = out.dup if out
|
|
158
|
+
cmd.error = err.dup if err
|
|
153
159
|
cmd
|
|
154
160
|
end
|
|
155
161
|
protected :add_outputs
|
|
@@ -158,14 +164,15 @@ module Commands
|
|
|
158
164
|
# Return a new command with the given command output.
|
|
159
165
|
def > ( arg )
|
|
160
166
|
out, err = (arg.is_a?(Array))? arg : [arg, nil]
|
|
161
|
-
add_outputs(out, err
|
|
167
|
+
add_outputs(out, err)
|
|
162
168
|
end
|
|
163
169
|
|
|
164
170
|
|
|
165
171
|
# Like > but open the output in append mode.
|
|
166
172
|
def >> ( arg )
|
|
167
173
|
out, err = (arg.is_a?(Array))? arg : [arg, nil]
|
|
168
|
-
|
|
174
|
+
@open_mode = :a
|
|
175
|
+
add_outputs(out, err)
|
|
169
176
|
end
|
|
170
177
|
|
|
171
178
|
|
|
@@ -206,9 +213,30 @@ module Commands
|
|
|
206
213
|
|
|
207
214
|
|
|
208
215
|
def to_sh
|
|
209
|
-
|
|
216
|
+
cmd = instanciate_args
|
|
217
|
+
"#{cmd.to_s}#{cmd.sh_args}"
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def instanciate_args!
|
|
221
|
+
if defined? @input and @input and @args.include? '%i'
|
|
222
|
+
@args.map! { |a| (a == '%i')? @input : a }
|
|
223
|
+
@input = nil
|
|
224
|
+
end
|
|
225
|
+
if defined? @output and @output and @args.include? '%o'
|
|
226
|
+
@args.map! { |a| (a == '%o')? @output : a }
|
|
227
|
+
@output = nil
|
|
228
|
+
end
|
|
229
|
+
if defined? @error and @error and @args.include? '%e'
|
|
230
|
+
@args.map! { |a| (a == '%e')? @error : a }
|
|
231
|
+
@error = nil
|
|
232
|
+
end
|
|
210
233
|
end
|
|
211
234
|
|
|
235
|
+
def instanciate_args
|
|
236
|
+
copy = dup
|
|
237
|
+
copy.instanciate_args!
|
|
238
|
+
copy
|
|
239
|
+
end
|
|
212
240
|
|
|
213
241
|
def sh_args
|
|
214
242
|
args = ''
|
|
@@ -262,6 +290,7 @@ module Commands
|
|
|
262
290
|
|
|
263
291
|
def test_system_dne
|
|
264
292
|
@dne.system
|
|
293
|
+
assert_equal(127, $?.exitstatus)
|
|
265
294
|
end
|
|
266
295
|
|
|
267
296
|
def test_system
|
|
@@ -410,7 +439,7 @@ module Commands
|
|
|
410
439
|
assert_equal('foo', @cat.input)
|
|
411
440
|
cmd = @cat < 'bar'
|
|
412
441
|
assert_equal('bar', cmd.input)
|
|
413
|
-
assert_not_equal(cmd.object_id, @
|
|
442
|
+
assert_not_equal(cmd.object_id, @cat.object_id)
|
|
414
443
|
end
|
|
415
444
|
|
|
416
445
|
def test_add_output # test_>
|
|
@@ -420,14 +449,13 @@ module Commands
|
|
|
420
449
|
assert_equal('bar', cmd.output)
|
|
421
450
|
cmd = @cat > @file
|
|
422
451
|
assert_equal(@file, cmd.output)
|
|
423
|
-
assert_equal(
|
|
424
|
-
assert_not_equal(cmd.object_id, @
|
|
452
|
+
assert_equal(:w, cmd.open_mode)
|
|
453
|
+
assert_not_equal(cmd.object_id, @cat.object_id)
|
|
425
454
|
cmd = @cat > [ 'outbar', 'errbar' ]
|
|
426
455
|
assert_equal('outbar', cmd.output)
|
|
427
456
|
assert_equal('errbar', cmd.error)
|
|
428
457
|
cmd = @cat > [ @file, @file ]
|
|
429
|
-
assert_equal(
|
|
430
|
-
assert_equal('w', cmd.error.open_mode)
|
|
458
|
+
assert_equal(:w, cmd.open_mode)
|
|
431
459
|
end
|
|
432
460
|
|
|
433
461
|
def test_append_output # test_>>
|
|
@@ -435,16 +463,15 @@ module Commands
|
|
|
435
463
|
assert_equal('foo', @cat.output)
|
|
436
464
|
cmd = @cat >> 'bar'
|
|
437
465
|
assert_equal('bar', cmd.output)
|
|
438
|
-
assert_not_equal(cmd.object_id, @
|
|
466
|
+
assert_not_equal(cmd.object_id, @cat.object_id)
|
|
439
467
|
cmd = @cat >> @file
|
|
440
468
|
assert_equal(@file, cmd.output)
|
|
441
|
-
assert_equal(
|
|
469
|
+
assert_equal(:a, cmd.open_mode)
|
|
442
470
|
cmd = @cat >> [ 'outbar', 'errbar' ]
|
|
443
471
|
assert_equal('outbar', cmd.output)
|
|
444
472
|
assert_equal('errbar', cmd.error)
|
|
445
473
|
cmd = @cat >> [ @file, @file ]
|
|
446
|
-
assert_equal(
|
|
447
|
-
assert_equal('a', cmd.error.open_mode)
|
|
474
|
+
assert_equal(:a, cmd.open_mode)
|
|
448
475
|
end
|
|
449
476
|
|
|
450
477
|
def test_args
|
data/lib/commands/datas.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
2
2
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
|
3
3
|
# License:: GNU General Public License (GPL).
|
|
4
|
-
# Revision:: $Id: datas.rb
|
|
4
|
+
# Revision:: $Id: datas.rb 255 2005-06-01 00:08:46Z ertai $
|
|
5
5
|
|
|
6
6
|
require 'commands'
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
2
2
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
|
3
3
|
# License:: GNU General Public License (GPL).
|
|
4
|
-
# Revision:: $Id: composite.rb
|
|
4
|
+
# Revision:: $Id: composite.rb 358 2005-09-16 09:54:04Z ertai $
|
|
5
5
|
|
|
6
6
|
require 'commands'
|
|
7
7
|
|
|
@@ -12,6 +12,7 @@ module Commands
|
|
|
12
12
|
class Composite < Data
|
|
13
13
|
|
|
14
14
|
def initialize ( *cmd )
|
|
15
|
+
super()
|
|
15
16
|
@commands = cmd.flatten
|
|
16
17
|
end
|
|
17
18
|
|
|
@@ -23,6 +24,9 @@ module Commands
|
|
|
23
24
|
each { |x| x.waitpid }
|
|
24
25
|
end
|
|
25
26
|
|
|
27
|
+
def kill ( *a, &b )
|
|
28
|
+
each { |x| x.kill(*a, &b) }
|
|
29
|
+
end
|
|
26
30
|
|
|
27
31
|
end # class Composite
|
|
28
32
|
|
data/lib/commands/datas/data.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
2
2
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
|
3
3
|
# License:: GNU General Public License (GPL).
|
|
4
|
-
# Revision:: $Id: data.rb
|
|
4
|
+
# Revision:: $Id: data.rb 360 2005-09-16 12:17:16Z ertai $
|
|
5
5
|
|
|
6
6
|
require 'commands'
|
|
7
7
|
|
|
@@ -23,22 +23,38 @@ module Commands
|
|
|
23
23
|
class Data
|
|
24
24
|
|
|
25
25
|
attr_accessor :pid
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
attr_reader :input
|
|
27
|
+
attr_reader :output
|
|
28
|
+
attr_reader :error
|
|
29
29
|
attr_accessor :status
|
|
30
|
+
attr_reader :open_mode
|
|
31
|
+
|
|
32
|
+
@@datas ||= Set.new
|
|
33
|
+
|
|
34
|
+
def initialize
|
|
35
|
+
@open_mode = :w
|
|
36
|
+
@status, @pid = nil, nil
|
|
37
|
+
@@datas << self
|
|
38
|
+
end
|
|
30
39
|
|
|
31
40
|
|
|
32
41
|
def waitpid
|
|
33
42
|
return @status unless @status.nil?
|
|
43
|
+
return if @pid.nil?
|
|
34
44
|
Process.waitpid(@pid)
|
|
35
45
|
@status = $?
|
|
46
|
+
@@datas.delete(self)
|
|
47
|
+
self
|
|
36
48
|
end
|
|
37
49
|
|
|
38
50
|
|
|
39
51
|
def | ( rhs ) # FIXME CHECK ME
|
|
40
52
|
raise unless rhs.is_a? Command
|
|
41
|
-
|
|
53
|
+
case output
|
|
54
|
+
when Pathname then rhs < output
|
|
55
|
+
when File then rhs < output.path.to_path
|
|
56
|
+
else raise "Unexpected class #{rhs.class}"
|
|
57
|
+
end
|
|
42
58
|
end
|
|
43
59
|
|
|
44
60
|
|
|
@@ -57,6 +73,87 @@ module Commands
|
|
|
57
73
|
err.print @error.read
|
|
58
74
|
end
|
|
59
75
|
|
|
76
|
+
def input= ( anObject )
|
|
77
|
+
if anObject.is_a? Pathname
|
|
78
|
+
anObject = anObject.dup
|
|
79
|
+
anObject.open_mode = :r
|
|
80
|
+
end
|
|
81
|
+
@input = anObject
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def output= ( anObject )
|
|
85
|
+
if anObject.is_a? Pathname
|
|
86
|
+
anObject = anObject.dup
|
|
87
|
+
anObject.open_mode = @open_mode
|
|
88
|
+
end
|
|
89
|
+
@output = anObject
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def error= ( anObject )
|
|
94
|
+
if anObject.is_a? Pathname
|
|
95
|
+
anObject = anObject.dup
|
|
96
|
+
anObject.open_mode = @open_mode
|
|
97
|
+
end
|
|
98
|
+
@error = anObject
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def open_mode= ( mode )
|
|
103
|
+
raise ArgumentError, "bad mode #{mode} need :w or :a" if mode == :r
|
|
104
|
+
@open_mode = mode
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
have YamlExtension, :'commands::data'
|
|
109
|
+
|
|
110
|
+
def to_yaml_string
|
|
111
|
+
out = output.read
|
|
112
|
+
err = error.read
|
|
113
|
+
out ||= ''
|
|
114
|
+
err ||= ''
|
|
115
|
+
|
|
116
|
+
msg = []
|
|
117
|
+
msg << "exit: #{status.exitstatus}" unless status.nil?
|
|
118
|
+
if out.empty?
|
|
119
|
+
msg << 'output: ""'
|
|
120
|
+
else
|
|
121
|
+
out.gsub!(/^/, ' ')
|
|
122
|
+
msg << "output: |\n #{out}"
|
|
123
|
+
end
|
|
124
|
+
if err.empty?
|
|
125
|
+
msg << 'error: ""'
|
|
126
|
+
else
|
|
127
|
+
err.gsub!(/^/, ' ')
|
|
128
|
+
msg << "error: |\n #{err}"
|
|
129
|
+
end
|
|
130
|
+
msg.join("\n")
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def kill ( sig='KILL' )
|
|
134
|
+
Process.kill sig, @pid if @status.nil? and not @pid.nil?
|
|
135
|
+
waitpid
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def clean
|
|
139
|
+
kill
|
|
140
|
+
[@input, @output, @error].each do |stream|
|
|
141
|
+
if stream.is_a? File
|
|
142
|
+
stream.close
|
|
143
|
+
stream = stream.path.to_path
|
|
144
|
+
end
|
|
145
|
+
unless stream.is_a? Pathname
|
|
146
|
+
raise ArgumentError, "need a pathname not #{stream}"
|
|
147
|
+
end
|
|
148
|
+
stream.unlink if stream.exist? and stream.temp?
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def self.clean_all
|
|
153
|
+
@@datas.dup.each { |data| data.kill }
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
at_exit { clean_all }
|
|
60
157
|
|
|
61
158
|
end # class Data
|
|
62
159
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
2
2
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
|
3
3
|
# License:: GNU General Public License (GPL).
|
|
4
|
-
# Revision:: $Id: factory.rb
|
|
4
|
+
# Revision:: $Id: factory.rb 344 2005-09-08 01:44:18Z ertai $
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
Commands.import!
|
|
7
7
|
|
|
8
8
|
module Commands
|
|
9
9
|
|
|
@@ -13,21 +13,28 @@ module Commands
|
|
|
13
13
|
|
|
14
14
|
attr_accessor :command_data_class
|
|
15
15
|
|
|
16
|
-
def initialize
|
|
17
|
-
|
|
16
|
+
def initialize ( values={}, *a, &b )
|
|
17
|
+
super(*a, &b)
|
|
18
|
+
values.each do |k, v|
|
|
19
|
+
send("#{k}=", v)
|
|
20
|
+
end
|
|
21
|
+
@command_data_class ||= Temp
|
|
18
22
|
end
|
|
19
23
|
|
|
20
24
|
def new_command_data ( *a, &b )
|
|
21
25
|
data = @command_data_class.new(*a, &b)
|
|
22
26
|
instance_variables.each do |var|
|
|
23
|
-
next if var
|
|
27
|
+
next if var == '@command_data_class'
|
|
28
|
+
next if var =~ /^@__/
|
|
24
29
|
val = instance_variable_get(var)
|
|
25
30
|
data.send(var[1..-1] + '=', val) unless val.nil?
|
|
26
31
|
end
|
|
27
32
|
data
|
|
28
33
|
end
|
|
29
34
|
|
|
30
|
-
|
|
35
|
+
def create ( *a, &b )
|
|
36
|
+
new_command_data(*a, &b)
|
|
37
|
+
end
|
|
31
38
|
|
|
32
39
|
end # class Factory
|
|
33
40
|
|
data/lib/commands/datas/temp.rb
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
2
2
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
|
3
3
|
# License:: GNU General Public License (GPL).
|
|
4
|
-
# Revision:: $Id: temp.rb
|
|
5
|
-
|
|
6
|
-
require 'commands'
|
|
4
|
+
# Revision:: $Id: temp.rb 343 2005-09-08 01:32:57Z ertai $
|
|
7
5
|
|
|
8
6
|
module Commands
|
|
9
7
|
|
|
@@ -14,9 +12,9 @@ module Commands
|
|
|
14
12
|
def initialize ( *a, &b )
|
|
15
13
|
super
|
|
16
14
|
@output = TempPath.new('cmd-output')
|
|
17
|
-
@output.open_mode =
|
|
15
|
+
@output.open_mode = :w
|
|
18
16
|
@error = TempPath.new('cmd-error')
|
|
19
|
-
@error.open_mode =
|
|
17
|
+
@error.open_mode = :w
|
|
20
18
|
end
|
|
21
19
|
|
|
22
20
|
end # class Temp
|
data/lib/commands/factory.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
2
2
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
|
3
3
|
# License:: GNU General Public License (GPL).
|
|
4
|
-
# Revision:: $Id: factory.rb
|
|
4
|
+
# Revision:: $Id: factory.rb 255 2005-06-01 00:08:46Z ertai $
|
|
5
5
|
|
|
6
6
|
require 'commands'
|
|
7
7
|
|