rscons/lib/rscons/builders/simple_builder.rb

43 lines
1.2 KiB
Ruby

module Rscons
module Builders
# A Generic builder which has its operation is defined at instantiation.
class SimpleBuilder < Builder
# @return [String]
# User-provided builder name.
attr_reader :name
# Create an instance of the Builder to build a target.
#
# @param name [String]
# User-provided builder name.
# @param options [Hash]
# Options.
# @option options [String] :target
# Target file name.
# @option options [Array<String>] :sources
# Source file name(s).
# @option options [Environment] :env
# The Environment executing the builder.
# @option options [Hash,VarSet] :vars
# Extra construction variables.
# @param run_proc [Proc]
# A Proc to execute when the builder runs. The provided block must
# provide the have the same signature as {Builder#run}.
def initialize(name, options, &run_proc)
@name = name
super(options)
@run_proc = run_proc
end
# Run the builder to produce a build target.
#
# Method signature described by {Builder#run}.
def run(*args)
instance_exec(*args, &@run_proc)
end
end
end
end