class ImageProcessing::Builder

def call!(**call_options)

Calls the pipeline to perform the processing from built options.
def call!(**call_options)
  instrument do
    Pipeline.new(pipeline_options).call(**call_options)
  end
end

def initialize(options)

def initialize(options)
  @options = options
end

def instrument

def instrument
  return yield unless options[:instrumenter]
  result = nil
  options[:instrumenter].call(**pipeline_options) { result = yield }
  result
end

def pipeline_options

def pipeline_options
  options.reject { |key, _| key == :instrumenter }
end