redcar 0.3.9 → 0.3.10.0dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. data/CHANGES +18 -2
  2. data/Rakefile +9 -1
  3. data/bin/redcar +1 -1
  4. data/lib/redcar.rb +26 -21
  5. data/lib/redcar/runner.rb +8 -4
  6. data/plugins/document_search/features/replace.feature +9 -0
  7. data/plugins/document_search/lib/document_search/search.rb +7 -5
  8. data/plugins/project/lib/project.rb +1 -1
  9. data/plugins/project/lib/project/adapters/remote.rb +0 -2
  10. data/plugins/project/lib/project/adapters/remote_protocols/ftp.rb +2 -2
  11. data/plugins/project/lib/project/adapters/remote_protocols/protocol.rb +0 -2
  12. data/plugins/project/lib/project/adapters/remote_protocols/sftp.rb +2 -2
  13. data/plugins/redcar/redcar.rb +4 -1
  14. data/plugins/runnables/lib/runnables.rb +27 -12
  15. data/plugins/runnables/lib/runnables/command_output_controller.rb +20 -3
  16. data/plugins/runnables/lib/runnables/output_processor.rb +63 -0
  17. data/plugins/runnables/spec/runnables/output_processor_spec.rb +57 -0
  18. data/plugins/runnables/spec/spec_helper.rb +5 -0
  19. data/plugins/runnables/vendor/session/LICENSE +3 -0
  20. data/plugins/runnables/vendor/{session-2.4.0/HISTORY → session/README} +96 -1
  21. data/plugins/runnables/vendor/session/Rakefile +233 -0
  22. data/plugins/runnables/vendor/session/gemspec.rb +62 -0
  23. data/plugins/runnables/vendor/{session-2.4.0 → session}/lib/session.rb +6 -103
  24. data/plugins/runnables/vendor/{session-2.4.0 → session}/sample/bash.rb +0 -0
  25. data/plugins/runnables/vendor/{session-2.4.0 → session}/sample/driver.rb +0 -0
  26. data/plugins/runnables/vendor/{session-2.4.0 → session}/sample/session_idl.rb +0 -0
  27. data/plugins/runnables/vendor/{session-2.4.0 → session}/sample/session_sh.rb +0 -0
  28. data/plugins/runnables/vendor/{session-2.4.0 → session}/sample/sh0.rb +0 -0
  29. data/plugins/runnables/vendor/{session-2.4.0 → session}/sample/stdin.rb +0 -0
  30. data/plugins/runnables/vendor/{session-2.4.0 → session}/sample/threadtest.rb +0 -0
  31. data/plugins/runnables/vendor/session/session.gemspec +27 -0
  32. data/plugins/runnables/vendor/{session-2.4.0 → session}/test/session.rb +3 -0
  33. data/plugins/runnables/views/basic_ansi.css +34 -0
  34. data/plugins/runnables/views/color_tester.html +50 -0
  35. data/plugins/runnables/views/command_output.html.erb +7 -1
  36. data/plugins/strip_trailing_spaces/CHANGELOG +12 -0
  37. data/plugins/strip_trailing_spaces/README.md +32 -0
  38. data/plugins/strip_trailing_spaces/lib/strip_trailing_spaces.rb +53 -0
  39. data/plugins/strip_trailing_spaces/plugin.rb +8 -0
  40. metadata +4225 -4200
  41. data/plugins/runnables/vendor/session-2.4.0/README +0 -89
  42. data/plugins/runnables/vendor/session-2.4.0/TODO +0 -3
  43. data/plugins/runnables/vendor/session-2.4.0/VERSION +0 -1
  44. data/plugins/runnables/vendor/session-2.4.0/gemspec.rb +0 -22
  45. data/plugins/runnables/vendor/session-2.4.0/install.rb +0 -143
  46. data/plugins/runnables/vendor/session-2.4.0/session-2.4.0.gem +0 -0
@@ -5,8 +5,8 @@ require 'yaml'
5
5
  require 'tempfile'
6
6
 
7
7
  module Session
8
- #--{{{
9
- VERSION = '2.4.0'
8
+ VERSION = '3.1.0'
9
+ def self.version() VERSION end
10
10
 
11
11
  @track_history = ENV['SESSION_HISTORY'] || ENV['SESSION_TRACK_HISTORY']
12
12
  @use_spawn = ENV['SESSION_USE_SPAWN']
@@ -15,44 +15,34 @@ module Session
15
15
  @debug = ENV['SESSION_DEBUG']
16
16
 
17
17
  class << self
18
- #--{{{
19
18
  attr :track_history, true
20
19
  attr :use_spawn, true
21
20
  attr :use_open3, true
22
21
  attr :use_open4, true
23
22
  attr :debug, true
24
23
  def new(*a, &b)
25
- #--{{{
26
24
  Sh::new(*a, &b)
27
- #--}}}
28
25
  end
29
26
  alias [] new
30
- #--}}}
31
27
  end
32
28
 
33
29
  class PipeError < StandardError; end
34
30
  class ExecutionError < StandardError; end
35
31
 
36
32
  class History
37
- #--{{{
38
33
  def initialize; @a = []; end
39
34
  def method_missing(m,*a,&b); @a.send(m,*a,&b); end
40
35
  def to_yaml(*a,&b); @a.to_yaml(*a,&b); end
41
36
  alias to_s to_yaml
42
37
  alias to_str to_yaml
43
- #--}}}
44
38
  end # class History
45
39
  class Command
46
- #--{{{
47
40
  class << self
48
- #--{{{
49
41
  def cmdno; @cmdno ||= 0; end
50
42
  def cmdno= n; @cmdno = n; end
51
- #--}}}
52
43
  end
53
44
 
54
45
  # attributes
55
- #--{{{
56
46
  attr :cmd
57
47
  attr :cmdno
58
48
  attr :out,true
@@ -66,10 +56,8 @@ module Session
66
56
  attr :end_err
67
57
  attr :begin_err_pat
68
58
  attr :end_err_pat
69
- #--}}}
70
59
 
71
60
  def initialize(command)
72
- #--{{{
73
61
  @cmd = command.to_s
74
62
  @cmdno = self.class.cmdno
75
63
  self.class.cmdno += 1
@@ -84,30 +72,21 @@ module Session
84
72
  @end_err = "__CMD_ERR_%s_END__" % cid
85
73
  @begin_err_pat = %r/#{ Regexp.escape(@begin_err) }/
86
74
  @end_err_pat = %r/#{ Regexp.escape(@end_err) }/
87
- #--}}}
88
75
  end
89
76
  def to_hash
90
- #--{{{
91
77
  %w(cmdno cmd out err cid).inject({}){|h,k| h.update k => send(k) }
92
- #--}}}
93
78
  end
94
79
  def to_yaml(*a,&b)
95
- #--{{{
96
80
  to_hash.to_yaml(*a,&b)
97
- #--}}}
98
81
  end
99
82
  alias to_s to_yaml
100
83
  alias to_str to_yaml
101
- #--}}}
102
84
  end # class Command
103
85
  class AbstractSession
104
- #--{{{
105
86
 
106
87
  # class methods
107
88
  class << self
108
- #--{{{
109
89
  def default_prog
110
- #--{{{
111
90
  return @default_prog if defined? @default_prog and @default_prog
112
91
  if defined? self::DEFAULT_PROG
113
92
  return @default_prog = self::DEFAULT_PROG
@@ -115,12 +94,9 @@ module Session
115
94
  @default_prog = ENV["SESSION_#{ self }_PROG"]
116
95
  end
117
96
  nil
118
- #--}}}
119
97
  end
120
98
  def default_prog= prog
121
- #--{{{
122
99
  @default_prog = prog
123
- #--}}}
124
100
  end
125
101
  attr :track_history, true
126
102
  attr :use_spawn, true
@@ -128,23 +104,19 @@ module Session
128
104
  attr :use_open4, true
129
105
  attr :debug, true
130
106
  def init
131
- #--{{{
132
107
  @track_history = nil
133
108
  @use_spawn = nil
134
109
  @use_open3 = nil
135
110
  @use_open4 = nil
136
111
  @debug = nil
137
- #--}}}
138
112
  end
139
113
  alias [] new
140
- #--}}}
141
114
  end
142
115
 
143
116
  # class init
144
117
  init
145
118
 
146
119
  # attributes
147
- #--{{{
148
120
  attr :opts
149
121
  attr :prog
150
122
  attr :stdin
@@ -164,11 +136,9 @@ module Session
164
136
  alias debug? debug
165
137
  attr :threads
166
138
  attr :pid
167
- #--}}}
168
-
139
+
169
140
  # instance methods
170
141
  def initialize(*args)
171
- #--{{{
172
142
  @opts = hashify(*args)
173
143
 
174
144
  @prog = getopt('prog', opts, getopt('program', opts, self.class::default_prog))
@@ -189,8 +159,8 @@ module Session
189
159
  @use_open3 = nil
190
160
  @use_open3 = Session::use_open3 unless Session::use_open3.nil?
191
161
  @use_open3 = self.class::use_open3 unless self.class::use_open3.nil?
192
- @use_open3 = getopt('use_open3', opts) if hasopt('use_open3', opts)
193
-
162
+ @use_open3 = getopt('use_open3', opts) if hasopt('use_open3', opts)
163
+
194
164
  @use_open4 = nil
195
165
  @use_open4 = Session::use_open4 unless Session::use_open4.nil?
196
166
  @use_open4 = self.class::use_open4 unless self.class::use_open4.nil?
@@ -233,10 +203,8 @@ module Session
233
203
  end
234
204
 
235
205
  return self
236
- #--}}}
237
206
  end
238
207
  def getopt opt, hash, default = nil
239
- #--{{{
240
208
  key = opt
241
209
  return hash[key] if hash.has_key? key
242
210
  key = "#{ key }"
@@ -244,10 +212,8 @@ module Session
244
212
  key = key.intern
245
213
  return hash[key] if hash.has_key? key
246
214
  return default
247
- #--}}}
248
215
  end
249
216
  def hasopt opt, hash
250
- #--{{{
251
217
  key = opt
252
218
  return key if hash.has_key? key
253
219
  key = "#{ key }"
@@ -255,14 +221,12 @@ module Session
255
221
  key = key.intern
256
222
  return key if hash.has_key? key
257
223
  return false
258
- #--}}}
259
224
  end
260
225
  def __popen3(*cmd)
261
- #--{{{
262
226
  pw = IO::pipe # pipe[0] for read, pipe[1] for write
263
227
  pr = IO::pipe
264
228
  pe = IO::pipe
265
-
229
+
266
230
  pid =
267
231
  __fork{
268
232
  # child
@@ -296,10 +260,8 @@ module Session
296
260
  end
297
261
  end
298
262
  pi
299
- #--}}}
300
263
  end
301
264
  def __fork(*a, &b)
302
- #--{{{
303
265
  verbose = $VERBOSE
304
266
  begin
305
267
  $VERBOSE = nil
@@ -307,62 +269,44 @@ module Session
307
269
  ensure
308
270
  $VERBOSE = verbose
309
271
  end
310
- #--}}}
311
272
  end
312
273
 
313
274
  # abstract methods
314
275
  def clear
315
- #--{{{
316
276
  raise NotImplementedError
317
- #--}}}
318
277
  end
319
278
  alias flush clear
320
279
  def path
321
- #--{{{
322
280
  raise NotImplementedError
323
- #--}}}
324
281
  end
325
282
  def path=
326
- #--{{{
327
283
  raise NotImplementedError
328
- #--}}}
329
284
  end
330
285
  def send_command cmd
331
- #--{{{
332
286
  raise NotImplementedError
333
- #--}}}
334
287
  end
335
288
 
336
289
  # concrete methods
337
290
  def track_history= bool
338
- #--{{{
339
291
  @history ||= History::new
340
292
  @track_history = bool
341
- #--}}}
342
293
  end
343
294
  def ready?
344
- #--{{{
345
295
  (stdin and stdout and stderr) and
346
296
  (IO === stdin and IO === stdout and IO === stderr) and
347
297
  (not (stdin.closed? or stdout.closed? or stderr.closed?))
348
- #--}}}
349
298
  end
350
299
  def close!
351
- #--{{{
352
300
  [stdin, stdout, stderr].each{|pipe| pipe.close}
353
301
  stdin, stdout, stderr = nil, nil, nil
354
302
  true
355
- #--}}}
356
303
  end
357
304
  alias close close!
358
305
  def hashify(*a)
359
- #--{{{
360
306
  a.inject({}){|o,h| o.update(h)}
361
- #--}}}
362
307
  end
363
308
  private :hashify
364
309
  def execute(command, redirects = {})
365
- #--{{{
366
310
  $session_command = command if @debug
367
311
 
368
312
  raise(PipeError, command) unless ready?
@@ -498,12 +442,9 @@ module Session
498
442
  out = err = iodat = nil
499
443
 
500
444
  return [cmd.out, cmd.err]
501
- #--}}}
502
445
  end
503
- #--}}}
504
446
  end # class AbstractSession
505
447
  class Sh < AbstractSession
506
- #--{{{
507
448
  DEFAULT_PROG = 'sh'
508
449
  ECHO = 'echo'
509
450
 
@@ -512,17 +453,14 @@ module Session
512
453
  alias exitstatus status
513
454
 
514
455
  def clear
515
- #--{{{
516
456
  stdin.puts "#{ ECHO } __clear__ 1>&2"
517
457
  stdin.puts "#{ ECHO } __clear__"
518
458
  stdin.flush
519
459
  while((line = stderr.gets) and line !~ %r/__clear__/o); end
520
460
  while((line = stdout.gets) and line !~ %r/__clear__/o); end
521
461
  self
522
- #--}}}
523
462
  end
524
463
  def send_command cmd
525
- #--{{{
526
464
  stdin.printf "%s '%s' 1>&2\n", ECHO, cmd.begin_err
527
465
  stdin.printf "%s '%s' \n", ECHO, cmd.begin_out
528
466
 
@@ -533,26 +471,20 @@ module Session
533
471
  stdin.printf "%s '%s' \n", ECHO, cmd.end_out
534
472
 
535
473
  stdin.flush
536
- #--}}}
537
474
  end
538
475
  def get_status
539
- #--{{{
540
476
  @status = get_var '__exit_status__'
541
477
  unless @status =~ /^\s*\d+\s*$/o
542
478
  raise ExecutionError, "could not determine exit status from <#{ @status.inspect }>"
543
479
  end
544
480
 
545
481
  @status = Integer @status
546
- #--}}}
547
482
  end
548
483
  def set_var name, value
549
- #--{{{
550
484
  stdin.puts "export #{ name }=#{ value }"
551
485
  stdin.flush
552
- #--}}}
553
486
  end
554
487
  def get_var name
555
- #--{{{
556
488
  stdin.puts "#{ ECHO } \"#{ name }=${#{ name }}\""
557
489
  stdin.flush
558
490
 
@@ -567,16 +499,12 @@ module Session
567
499
  end
568
500
 
569
501
  var
570
- #--}}}
571
502
  end
572
503
  def path
573
- #--{{{
574
504
  var = get_var 'PATH'
575
505
  var.strip.split %r/:/o
576
- #--}}}
577
506
  end
578
507
  def path= arg
579
- #--{{{
580
508
  case arg
581
509
  when Array
582
510
  arg = arg.join ':'
@@ -586,10 +514,8 @@ module Session
586
514
 
587
515
  set_var 'PATH', "'#{ arg }'"
588
516
  self.path
589
- #--}}}
590
517
  end
591
518
  def execute(command, redirects = {}, &block)
592
- #--{{{
593
519
  # setup redirect on stdin
594
520
  rin = redirects[:i] || redirects[:in] || redirects[:stdin] ||
595
521
  redirects['stdin'] || redirects['i'] || redirects['in'] ||
@@ -624,27 +550,21 @@ module Session
624
550
  else
625
551
  super
626
552
  end
627
- #--}}}
628
553
  end
629
- #--}}}
630
554
  end # class Sh
631
555
  class Bash < Sh
632
- #--{{{
633
556
  DEFAULT_PROG = 'bash'
634
557
  class Login < Bash
635
558
  DEFAULT_PROG = 'bash --login'
636
559
  end
637
- #--}}}
638
560
  end # class Bash
639
561
  class Shell < Bash; end
640
562
  # IDL => interactive data language - see http://www.rsinc.com/
641
563
  class IDL < AbstractSession
642
- #--{{{
643
564
  class LicenseManagerError < StandardError; end
644
565
  DEFAULT_PROG = 'idl'
645
566
  MAX_TRIES = 32
646
567
  def initialize(*args)
647
- #--{{{
648
568
  tries = 0
649
569
  ret = nil
650
570
  begin
@@ -659,10 +579,8 @@ module Session
659
579
  end
660
580
  end
661
581
  ret
662
- #--}}}
663
582
  end
664
583
  def clear
665
- #--{{{
666
584
  stdin.puts "retall"
667
585
  stdin.puts "printf, -2, '__clear__'"
668
586
  stdin.puts "printf, -1, '__clear__'"
@@ -674,10 +592,8 @@ module Session
674
592
  raise LicenseManagerError, line if line =~ %r/license\s*manager/io
675
593
  end
676
594
  self
677
- #--}}}
678
595
  end
679
596
  def send_command cmd
680
- #--{{{
681
597
  stdin.printf "printf, -2, '%s'\n", cmd.begin_err
682
598
  stdin.printf "printf, -1, '%s'\n", cmd.begin_out
683
599
 
@@ -687,16 +603,12 @@ module Session
687
603
  stdin.printf "printf, -2, '%s'\n", cmd.end_err
688
604
  stdin.printf "printf, -1, '%s'\n", cmd.end_out
689
605
  stdin.flush
690
- #--}}}
691
606
  end
692
607
  def path
693
- #--{{{
694
608
  stdout, stderr = execute "print, !path"
695
609
  stdout.strip.split %r/:/o
696
- #--}}}
697
610
  end
698
611
  def path= arg
699
- #--{{{
700
612
  case arg
701
613
  when Array
702
614
  arg = arg.join ':'
@@ -706,15 +618,11 @@ module Session
706
618
  stdout, stderr = execute "!path='#{ arg }'"
707
619
 
708
620
  self.path
709
- #--}}}
710
621
  end
711
- #--}}}
712
622
  end # class IDL
713
623
  module Spawn
714
- #--{{{
715
624
  class << self
716
625
  def spawn command
717
- #--{{{
718
626
  ipath = tmpfifo
719
627
  opath = tmpfifo
720
628
  epath = tmpfifo
@@ -727,10 +635,8 @@ module Session
727
635
  e = open epath, 'r'
728
636
 
729
637
  [i,o,e]
730
- #--}}}
731
638
  end
732
639
  def tmpfifo
733
- #--{{{
734
640
  path = nil
735
641
  42.times do |i|
736
642
  tpath = File::join(Dir::tmpdir, "#{ $$ }.#{ rand }.#{ i }")
@@ -748,10 +654,7 @@ module Session
748
654
  end
749
655
  raise "could not generate tmpfifo" unless path
750
656
  path
751
- #--}}}
752
657
  end
753
658
  end
754
- #--}}}
755
659
  end # module Spawn
756
- #--}}}
757
660
  end # module Session