diff options
Diffstat (limited to 'doc/rake/proto_rake.rdoc')
-rw-r--r-- | doc/rake/proto_rake.rdoc | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/doc/rake/proto_rake.rdoc b/doc/rake/proto_rake.rdoc index 39b9b88c1f..a9e33d11da 100644 --- a/doc/rake/proto_rake.rdoc +++ b/doc/rake/proto_rake.rdoc @@ -4,54 +4,54 @@ This is the original 100 line prototype rake program. --- #!/usr/bin/env ruby - + require 'ftools' - + class Task TASKS = Hash.new - + attr_reader :prerequisites - + def initialize(task_name) @name = task_name @prerequisites = [] @actions = [] end - + def enhance(deps=nil, &block) @prerequisites |= deps if deps @actions << block if block_given? self end - + def name @name.to_s end - + def invoke @prerequisites.each { |n| Task[n].invoke } execute if needed? end - + def execute return if @triggered @triggered = true @actions.collect { |act| result = act.call(self) }.last end - + def needed? true end - + def timestamp Time.now end - + class << self def [](task_name) TASKS[intern(task_name)] or fail "Don't know how to rake #{task_name}" end - + def define_task(args, &block) case args when Hash @@ -66,18 +66,18 @@ This is the original 100 line prototype rake program. deps = deps.collect {|d| intern(d) } get(task_name).enhance(deps, &block) end - + def get(task_name) name = intern(task_name) TASKS[name] ||= self.new(name) end - + def intern(task_name) (Symbol === task_name) ? task_name : task_name.intern end end end - + class FileTask < Task def needed? return true unless File.exist?(name) @@ -85,25 +85,25 @@ This is the original 100 line prototype rake program. return false if latest_prereq.nil? timestamp < latest_prereq end - + def timestamp File.new(name.to_s).mtime end end - + def task(args, &block) Task.define_task(args, &block) end - + def file(args, &block) FileTask.define_task(args, &block) end - + def sys(cmd) puts cmd system(cmd) or fail "Command Failed: [#{cmd}]" end - + def rake begin here = Dir.pwd @@ -119,9 +119,9 @@ This is the original 100 line prototype rake program. rescue Exception => ex puts "rake aborted ... #{ex.message}" puts ex.backtrace.find {|str| str =~ /Rakefile/ } || "" - end + end end - + if __FILE__ == $0 then rake end |