Sha256: e14608254d5b8e7ab70f794e98822effe3fbe899cd743a24ed9d7b5c16354e30

Contents?: true

Size: 1.63 KB

Versions: 12

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

module Terradactyl
  module Terraform
    module VersionManager
      class Defaults
        DEFAULT_INSTALL_DIR  = Gem.bindir
        DEFAULT_RELEASES_URL = 'https://releases.hashicorp.com/terraform'
        DEFAULT_VERSION      = nil

        def self.load
          new
        end

        attr_reader :version, :install_dir, :releases_url

        def initialize
          load_defaults
        end

        def reset!
          load_defaults
        end

        def version=(option)
          @version = validate_semver_exp(option) || DEFAULT_VERSION
        end

        def install_dir=(option)
          @install_dir = validate_path(option) || DEFAULT_INSTALL_DIR
        end

        def releases_url=(option)
          @releases_url = validate_url(option) || DEFAULT_RELEASES_URL
        end

        private

        def validate_semver_exp(option)
          if (data = option.to_s.match(SEMVER_EXP_RE))
            return option if data['op']
            return option if data['semver'].match(/\d+\.\d+\.\d+(-\w+)?/)
          end

          nil
        end

        def validate_path(option)
          return nil if option.to_s.empty?

          dir = File.expand_path(option)
          Dir.exist?(dir) ? dir : nil
        end

        def validate_url(option)
          return nil if option.to_s.empty?

          uri = URI.parse(option)
          url if uri.is_a?(URI::HTTP) || uri.is_a?(URI::HTTPS)
        end

        def load_defaults
          @install_dir   = DEFAULT_INSTALL_DIR
          @releases_url  = DEFAULT_RELEASES_URL
          @version       = DEFAULT_VERSION
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
terradactyl-terraform-1.8.2 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.8.1 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.8.0 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.7.0 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.6.0 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.5.0 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.4.1 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.4.0 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.3.0 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.2.1 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.2.0 lib/terradactyl/terraform/version_manager/defaults.rb
terradactyl-terraform-1.1.2 lib/terradactyl/terraform/version_manager/defaults.rb