Sha256: a59ef3621e4faf822bd53ed850848949833d074ea09b207588e7e4fe178c841c

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

require 'natives/catalog/loader'
require 'natives/catalog/selector'

module Natives
  class Catalog

    CATALOG_PATH_IN_GEM = File.absolute_path(File.join(
                            File.dirname(__FILE__), '..', '..', 'catalogs'))
    CATALOG_PATH_IN_WORKING_DIR = File.absolute_path(File.join('.', 'natives-catalogs'))

    CATALOG_PATHS = [
      CATALOG_PATH_IN_GEM,
      CATALOG_PATH_IN_WORKING_DIR
    ].freeze

    attr_reader :platform, :platform_version, :package_provider, :name

    def initialize(catalog_name, platform, platform_version, package_provider)
      reload

      @name = catalog_name.to_s
      @platform = platform.to_s
      @platform_version = platform_version.to_s
      @package_provider = package_provider.to_s
    end

    def reload
      @catalogs = Loader.new.load_from_paths(CATALOG_PATHS)
    end

    def to_hash
      @catalogs.fetch(self.name, {})
    end

    def native_packages_for(entry_name)
      Array(
        Selector.new(self.to_hash.fetch(entry_name, {})).
          value_for(@platform, @platform_version, @package_provider)
      )
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
natives-catalog-0.2.1 lib/natives/catalog.rb
natives-catalog-0.2.0 lib/natives/catalog.rb