# File lib/librarian/dsl.rb, line 70
    def run(specfile = nil, sources = [])
      specfile, sources = nil, specfile if specfile.kind_of?(Array) && sources.empty?

      Target.new(self).tap do |target|
        target.precache_sources(sources)
        debug_named_source_cache("Pre-Cached Sources", target)

        specfile ||= Proc.new if block_given?
        receiver = Receiver.new(target)
        receiver.run(specfile)

        debug_named_source_cache("Post-Cached Sources", target)
      end.to_spec
    end