File: extensions.rb

package info (click to toggle)
ruby-echoe 4.6.3-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 240 kB
  • sloc: ruby: 1,047; makefile: 2
file content (61 lines) | stat: -rw-r--r-- 1,372 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

class String #:nodoc:
  def uncapitalize #:nodoc:
    "#{self[0..0].downcase}#{self[1..-1]}"
  end

  def any?
    size > 0
  end
end

class ::Rake::SshDirPublisher # :nodoc:
  attr_reader :host, :remote_dir, :local_dir
end

class Echoe

  def self.silence
    if !ENV['VERBOSE']
      stdout, stderr = $stdout.clone, $stderr.clone
      $stdout.reopen(File.new("#{Dir.tmpdir}/stdout.echoe", 'w'))
      $stderr.reopen(File.new("#{Dir.tmpdir}/stderr.echoe", 'w'))
      begin
        yield
      ensure
        $stdout.reopen(stdout)
        $stderr.reopen(stderr)
      end
    else
      yield
    end
  end

end

# Redefine instead of chain a Rake task
# http://www.bigbold.com/snippets/posts/show/2032

module Rake
  module TaskManager
    def redefine_task(task_class, *args, &block)
      task_name, deps = resolve_args(args)
      task_name = task_class.scope_name(@scope, task_name)
      deps = [deps] unless deps.respond_to?(:to_ary)
      deps = deps.collect {|d| d.to_s }
      task = @tasks[task_name.to_s] = task_class.new(task_name, self)
      task.application = self
      task.send(:add_comment, @last_comment)
      @last_comment = nil
      task.enhance(deps, &block)
      task
    end
  end
  class Task
    class << self
      def redefine_task(*args, &block)
        Rake.application.redefine_task(self, *args, &block)
      end
    end
  end
end