class ASRake::BaseExecutable

Attributes

output[R]

output file or directory

output_dir[R]
output_file[R]

Public Class Methods

new(file) click to toggle source
# File lib/asrake/base_executable.rb, line 17
def initialize(file)

        raise "An output file must be provided" if file == nil
        
        @output = file.to_s
        # if the output path ends in a path separator, it is a directory
        if @output =~ /[\/\\]$/
                @output_dir = @output
        else
                # forward-slashes required for File methods
                @output = Path::forward @output
                @output_dir = File.dirname(@output)
                @output_file = File.basename(@output)
        end

        # create file task for output
        @task = ASRake::ExeTask.define_task self.output do
                self.execute
        end

        @task.pre_invoke = method(:task_pre_invoke)
        @task.post_invoke = method(:task_post_invoke)

        # create directory task for output
        if !self.output_is_dir?
                directory self.output_dir
                @task.enhance([self.output_dir])
        end
end

Public Instance Methods

execute() click to toggle source
# File lib/asrake/base_executable.rb, line 71
def execute
        raise "Must define execute in subclass"
end
merge_in(args) click to toggle source
# File lib/asrake/base_executable.rb, line 51
def merge_in(args)
        @@args.each do |arg|
                # TODO: This needs to concat arrays not overwite them
                self.send("#{arg}=", args.send(arg))
        end
end
output_is_dir?() click to toggle source
# File lib/asrake/base_executable.rb, line 47
def output_is_dir?
        output_file == nil
end
pathmap(*args) click to toggle source

used so we can add this task to a FileList. This is probably a terrible idea.

# File lib/asrake/base_executable.rb, line 67
def pathmap *args
        to_s.pathmap *args
end
to_s() click to toggle source
# File lib/asrake/base_executable.rb, line 58
def to_s
        @output
end
to_str() click to toggle source
# File lib/asrake/base_executable.rb, line 62
def to_str
        @output
end

Protected Instance Methods

task_post_invoke() click to toggle source
# File lib/asrake/base_executable.rb, line 82
def task_post_invoke
        puts "#{Path::env self.output} (#{File.size(self.output)} bytes)" unless self.output_is_dir?
        # only run once incase invoked again
        @task.post_invoke = nil
end
task_pre_invoke() click to toggle source
# File lib/asrake/base_executable.rb, line 77
def task_pre_invoke
        # only run once to add prereqs
        @task.pre_invoke = nil
end