Sha256: 21103480f86248cc9c622fd68efade841feab55c8fd908afec187619a014b4f7

Contents?: true

Size: 1.42 KB

Versions: 16

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

module Terradactyl
  module Terraform
    module VersionManager
      class InventoryError < RuntimeError
        def initialize(msg, version)
          @version = version
          err_fmt  = "#{msg} -- version: %s"
          super(err_fmt % @version)
        end
      end

      class Inventory
        ERROR_VERSION_MISSING = 'Version not installed'

        include Enumerable

        def self.load
          new
        end

        def install_dir
          VersionManager.install_dir
        end

        def binaries
          Dir.glob("#{install_dir}/terraform-*").sort
        end

        def versions
          (binaries.map do |path|
            File.basename(path).match(inventory_name_re)['version']
          end).sort
        end

        def manifest
          Hash[versions.zip(binaries)]
        end

        def latest
          versions.last
        end

        def validate(semver)
          return manifest[semver] if manifest[semver]

          raise error_version_missing(semver)
        end

        def [](semver)
          manifest[semver]
        end

        def each(&block)
          manifest.each(&block)
        end

        private

        def error_version_missing(version)
          raise InventoryError.new(ERROR_VERSION_MISSING, version)
        end

        def inventory_name_re
          /(?:terraform-)(?<version>\d+\.\d+\.\d+(-\w+)?)/
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
terradactyl-terraform-1.8.2 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.8.1 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.8.0 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.7.0 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.6.0 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.5.0 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.4.1 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.4.0 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.3.0 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.2.1 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.2.0 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.1.2 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.1.0 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-1.0.0 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-0.15.0 lib/terradactyl/terraform/version_manager/inventory.rb
terradactyl-terraform-0.13.0 lib/terradactyl/terraform/version_manager/inventory.rb