class Vara::PrereleaseVersioner

Constants

MIGRATIONS_KEY
MIGRATIONS_RULES_KEY
MIGRATIONS_RULES_TO_KEY
PRERELEASE_VERSION_PLACEHOLDER
PRODUCT_VERSION_KEY
TO_VERSION_KEY

Attributes

cycle[R]
product_directory_path[R]

Public Class Methods

new(product_directory_path, cycle) click to toggle source

@param product_directory_path [String] @param cycle [String] cycle (e.g. alpha, beta, etc.) to use in expanded prerelease version value

# File lib/vara/prerelease_versioner.rb, line 14
def initialize(product_directory_path, cycle)
  @product_directory_path = product_directory_path
  @cycle = cycle
end

Public Instance Methods

override_prerelease_version!(new_prerelease_version) click to toggle source

@param new_prerelease_version [String] explicit value to override the prerelease version. Use with caution. @return [void]

# File lib/vara/prerelease_versioner.rb, line 21
def override_prerelease_version!(new_prerelease_version)
  @prerelease_version = new_prerelease_version
end
update_content_migrations(migrations_hash) click to toggle source

@param migrations_hash [Hash] Hash contents of full content migrations @return [Hash] content migrations with product version value updated if necessary

# File lib/vara/prerelease_versioner.rb, line 35
def update_content_migrations(migrations_hash)
  migrations_hash[TO_VERSION_KEY].gsub!(PRERELEASE_VERSION_PLACEHOLDER, prerelease_version) if migrations_hash.key?(TO_VERSION_KEY)
  migrations_hash.fetch(MIGRATIONS_KEY, []).each do |migration|
    migration.fetch(MIGRATIONS_RULES_KEY, []).each do |rule|
      next unless updates_product_version?(rule)
      rule[MIGRATIONS_RULES_TO_KEY].gsub!(PRERELEASE_VERSION_PLACEHOLDER, prerelease_version)
    end
  end
  migrations_hash
end
update_metadata(metadata_hash) click to toggle source

@param metadata_hash [Hash] Hash contents of full product metadata @return [Hash] product metadata with product version value updated if necessary

# File lib/vara/prerelease_versioner.rb, line 27
def update_metadata(metadata_hash)
  return metadata_hash unless metadata_hash.fetch(PRODUCT_VERSION_KEY).include?(PRERELEASE_VERSION_PLACEHOLDER)
  metadata_hash[PRODUCT_VERSION_KEY].gsub!(PRERELEASE_VERSION_PLACEHOLDER, prerelease_version)
  metadata_hash
end

Private Instance Methods

commit_number() click to toggle source
# File lib/vara/prerelease_versioner.rb, line 58
def commit_number
  git_inspector.commit_count
end
git_inspector() click to toggle source
# File lib/vara/prerelease_versioner.rb, line 66
def git_inspector
  @git_inspector ||= GitInspector.new(product_directory_path)
end
prerelease_version() click to toggle source
# File lib/vara/prerelease_versioner.rb, line 54
def prerelease_version
  @prerelease_version ||= ".#{cycle}.#{commit_number}.#{short_sha}"
end
short_sha() click to toggle source
# File lib/vara/prerelease_versioner.rb, line 62
def short_sha
  git_inspector.short_sha
end
updates_product_version?(rule_hash) click to toggle source
# File lib/vara/prerelease_versioner.rb, line 50
def updates_product_version?(rule_hash)
  rule_hash['type'] == 'update' && rule_hash['selector'] == 'product_version'
end