Sha256: 4f0da236973a4e3069b86b9994e1ce2cae1fe20909e6fe9591002035fb4ac4a5

Contents?: true

Size: 941 Bytes

Versions: 1

Compression:

Stored size: 941 Bytes

Contents

require 'tempfile'

module Pronto
  class Runner
    include Plugin

    def self.runners
      repository
    end

    def create_tempfiles(blobs)
      return [] if blobs.nil?

      files = blobs.map { |blob| write(blob) }.compact
      return [] if files.empty?

      begin
        if block_given?
          files.each(&:flush)
          yield(files)
        else
          files
        end
      ensure
        files.each do |file|
          file.close unless file.closed?
        end
      end
    end

    def create_tempfile(blob)
      file = write(blob)
      return if file.nil?

      begin
        if block_given?
          file.flush
          yield(file)
        else
          file
        end
      ensure
        file.close if file && !file.closed?
      end
    end

    private

    def write(blob)
      return if blob.nil?

      file = Tempfile.new(blob.oid)
      file.write(blob.text)
      file
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pronto-0.0.2 lib/pronto/runner.rb