class ShopifyTheme::Releases

Constants

Release

Public Instance Methods

all() click to toggle source
# File lib/shopify_theme/releases.rb, line 22
def all
  @all ||= begin
    versioned_releases.reduce({'master' => master, 'latest' => latest}) do |all, release|
      all[release.version] = release
      all
    end
  end
end
fetch!() click to toggle source
# File lib/shopify_theme/releases.rb, line 16
def fetch!
  response = HTTParty.get(FEED_URL)
  raise "Could not retrieve feed from #{FEED_URL}" if response.code != 200
  @feed = RSS::Parser.parse(response.body)
end
find(version) click to toggle source
# File lib/shopify_theme/releases.rb, line 31
def find(version)
  release = all[version]
  if release.nil?
    error = [
      "Invalid version '#{version}'.",
      "Valid versions are:",
    ].concat(all.keys.map{|v| "  #{v}"})
    raise VersionError, error.join("\n")
  end
  release
end

Private Instance Methods

latest() click to toggle source
# File lib/shopify_theme/releases.rb, line 49
def latest
  Release.new(versioned_releases.first.version)
end
master() click to toggle source
# File lib/shopify_theme/releases.rb, line 53
def master
  Release.new('master')
end
versioned_releases() click to toggle source
# File lib/shopify_theme/releases.rb, line 44
def versioned_releases
  fetch! unless @feed
  @versioned_releases ||= @feed.items.map { |item| Release.new(item.title.content) }
end