Sha256: d4c53ab94ed2234ea919196a4379d0ce30b8eb175f77735bf4f8a5da55187bec

Contents?: true

Size: 1.68 KB

Versions: 9

Compression:

Stored size: 1.68 KB

Contents

module Path
  def produce(force = false)
    raise @produced if Exception === @produced
    return self if ! force && (Open.exist?(self.find) || @produced)
    begin
      if Resource === self.pkgdir
        self.pkgdir.produce self, force
      else
        false
      end
    rescue ResourceNotFound
      @produced = false
    rescue
      message = $!.message
      message = "No exception message" if message.nil? || message.empty?
      Log.warn "Error producing #{self}: #{message}"
      raise $!
    ensure
      @produced = true if @produced.nil?
    end
  end

  def produce_with_extension(extension, *args)
    begin
      self.produce(*args)
    rescue Exception
      exception = $!
      begin
        self.set_extension(extension).produce(*args)
      rescue Exception
        raise exception
      end
    end
  end

  def produce_and_find(extension = nil, *args)
    found = if extension
              found = find_with_extension(extension, *args)
              found.exists? ? found : produce_with_extension(extension, *args)
            else
              found = find
              found.exists? ? found : produce(*args)
            end
    raise "Not found: #{self}" unless found

    found
  end

  def relocate
    return self if Open.exists?(self)
    Resource.relocate(self)
  end

  def identify
    Resource.identify(self)
  end

  def open(*args, &block)
    produce
    Open.open(self, *args, &block)
  end

  def read
    produce
    Open.read(self)
  end

  def write(*args, &block)
    Open.write(self.find, *args, &block)
  end

  def list
    found = produce_and_find('list')
    Open.list(found)
  end

  def exists?
    return true if Open.exists?(self.find)
    self.produce
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
scout-essentials-1.6.8 lib/scout/resource/path.rb
scout-essentials-1.6.7 lib/scout/resource/path.rb
scout-essentials-1.6.6 lib/scout/resource/path.rb
scout-essentials-1.6.5 lib/scout/resource/path.rb
scout-essentials-1.6.4 lib/scout/resource/path.rb
scout-essentials-1.6.3 lib/scout/resource/path.rb
scout-essentials-1.6.2 lib/scout/resource/path.rb
scout-essentials-1.6.1 lib/scout/resource/path.rb
scout-essentials-1.6.0 lib/scout/resource/path.rb