class Pione::Package::DirectoryPackageReader

DirectoryPackageReader reads package structure from directory based package.

Public Class Methods

new(location) click to toggle source
# File lib/pione/package/package-reader.rb, line 99
def initialize(location)
  @location = location
end

Public Instance Methods

make_local_location() click to toggle source
# File lib/pione/package/package-reader.rb, line 113
def make_local_location
  # make temporary directory
  local_location = Location[Temppath.create]

  # pione-package.json
  info = PackageInfo.read((@location + "pione-package.json").read)
  (@location + "pione-package.json").copy(local_location + "pione-package.json")

  # copy files
  (info.documents + info.bins + info.etcs).each do |path|
    (@location + path).copy(local_location + path)
  end

  # scenarios
  info.scenarios.each do |path|
    scenario_info = ScenarioInfo.read((@location + path + "pione-scenario.json").read)
    (@location + path + "pione-scenario.json").copy(local_location + path + "pione-scenario.json")
    (@location + path + "Scenario.pione").copy(local_location + path + "Scenario.pione")
    (scenario_info.inputs + scenario_info.outputs).each do |_path|
      (@location + path + _path).copy(local_location + path + _path)
    end
  end

  return local_location
rescue Location::LocationError => e
  raise InvalidPackage.new("package \"%s\" is invalid: %s" % [@location.address, e.message])
end
read() click to toggle source
# File lib/pione/package/package-reader.rb, line 103
def read
  # copy to local
  local_location = make_local_location

  # cache
  digest = PackageCache.cache(local_location)

  PackageHandler.new(PackageCache.directory_cache(digest), digest: digest)
end