Class: Releases::EntityDefinitions::ReleaseEntity

Inherits:
PowerStencil::SystemEntityDefinitions::ProjectEntity
  • Object
show all
Defined in:
lib/releases/entity_definitions/release_entity.rb

Constant Summary collapse

DEFAULT_VERSION =
'0.0.1'

Instance Method Summary collapse

Constructor Details

#initialize(fields: {}, universe: nil, user: false) ⇒ ReleaseEntity

Returns a new instance of ReleaseEntity.



14
15
16
17
# 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

Instance Method Details

#bump(level: :patch) ⇒ Object



32
33
34
# 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) ⇒ Object



23
24
25
26
27
28
29
30
# 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_nameObject



19
20
21
# 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) ⇒ Object



48
49
50
51
# 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) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
39
40
41
42
43
44
45
46
# 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