class Releases::EntityDefinitions::ReleaseEntity

Constants

DEFAULT_VERSION

Public Class Methods

new(fields: {}, universe: nil, user: false) click to toggle source
Calls superclass method
# File lib/releases/entity_definitions/release_entity.rb, line 14
def initialize(fields: {}, universe: nil, user: false)
  super
  self.version = DEFAULT_VERSION if version.nil?
end

Public Instance Methods

bump(level: :patch) click to toggle source
# File lib/releases/entity_definitions/release_entity.rb, line 32
def bump(level: :patch)
  self.version = bump_version version, level
end
bump_content(*content_key, content_increment: :patch, release_increment: :patch) click to toggle source
# File lib/releases/entity_definitions/release_entity.rb, line 23
def bump_content(*content_key, content_increment: :patch, release_increment: :patch)
  get_entity(*content_key) do |entity|
    content[entity] = bump_version content[entity], content_increment
  end
  self.version = bump_version version, release_increment
rescue => e
  raise PowerStencil::Error, "Cannot bump_content because '#{e.message}'"
end
full_name() click to toggle source
# File lib/releases/entity_definitions/release_entity.rb, line 19
def full_name
  '%s v%s' % [name, version]
end
save(uri = source_uri, raise_error: true, force_save: false, force_files_generation: false ) click to toggle source
Calls superclass method
# File lib/releases/entity_definitions/release_entity.rb, line 48
def save(uri = source_uri, raise_error: true, force_save: false, force_files_generation: false )
  self.content = content.map { |entity, version| [entity, version.to_s] }.to_h
  super
end
specifically_valid?(raise_error: false) click to toggle source
# File lib/releases/entity_definitions/release_entity.rb, line 36
def specifically_valid?(raise_error: false)
  content.each do |entity, version|
    unless entity.is_a? UniverseCompiler::Entity::Base
      return false_or_raise"Invalid hash in release content of #{as_path} ! Key should be an entity !", raise_error: raise_error
    end
    unless PowerStencil::Utils::SemanticVersion.valid_version?(version, raise_error: false)
      return false_or_raise"Invalid version '#{version}' defined for #{entity.as_path} in release #{as_path} !", raise_error: raise_error
    end
  end
  true
end

Private Instance Methods

bump_version(a_version, level) click to toggle source
# File lib/releases/entity_definitions/release_entity.rb, line 92
def bump_version(a_version, level)
  cur_version =  PowerStencil::Utils::SemanticVersion.new a_version
  cur_version.increment(level).to_s
end
get_entity(*entity_criteria) { |entity| ... } click to toggle source
# File lib/releases/entity_definitions/release_entity.rb, line 55
def get_entity(*entity_criteria, &block)
  case entity_criteria.size
  when 1
    case entity_criteria.first
    when UniverseCompiler::Entity::Base
      entity = entity_criteria.first
      yield entity

    when Array
      entity_criteria.first.each do |entity|
        yield entity
      end

    when String
      if md = entity_criteria.first.match(/^\s*(?<type>[^\/]+)\/(?<name>.+)\s*$/)
        search_type = md[:type].to_sym
        search_name = md[:name]
        entity = project_engine.entity search_type, search_name, project_engine.root_universe
        yield entity
      else
        raise PowerStencil::Error, 'Invalid entity search ID'
      end

    else
      raise PowerStencil::Error, 'Invalid entity search_criteria'
    end

  when 2
    entity = project_engine.entity *entity_criteria, project_engine.root_universe
    yield entity

  else
    raise PowerStencil::Error, 'Invalid entity search_criteria number'
  end

end