Sha256: f4191aab005acdb70a1688e96f644cd30166d3905baf3c6f7702de0fd9b05e87

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

module TerraspaceBundler
  class Mod
    extend PropsExtension
    props :name, :source, :url, :subfolder, :type, :export_to

    attr_reader :props, :version, :ref, :tag, :branch
    def initialize(props={})
      @props = props.symbolize_keys
      # These props are used for version comparing by VersionComparer
      @version, @ref, @tag, @branch = @props[:version], @props[:ref], @props[:tag], @props[:branch]
    end

    def sha
      # sha will already be set if coming from Terrafile.lock
      # sha will be lazily fetch set if coming from Terrafile
      @props[:sha] ||= fetch_sha
    end

    def checkout_version
      v = detected_version
      v = "v#{v}" if type == "registry" && @version && !v.starts_with?("v")
      v
    end

    # use url instead of source because for registry modules, the repo name is different
    def repo
      url_words[-1]
    end

    def org
      url_words[-2] # second to last word
    end

    def full_repo
      "#{org}/#{repo}"
    end

  private
    def fetch_sha
      downloader = Downloader.new(self)
      downloader.run
      downloader.sha
    end
    # support variety of options, prefer version
    def detected_version
      @version || @ref || @tag || @branch
    end

    def url_words
      url.split('/')
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
terraspace-bundler-0.2.0 lib/terraspace_bundler/mod.rb