Class: Kettle::Family::ExecutionProfile

Inherits:
Object
  • Object
show all
Defined in:
lib/kettle/family/execution_profile.rb

Overview

The execution context is a compatibility boundary, not a collection of incidental ENV assignments. Each workflow command selects one profile so path-gem, lockfile, install, and mutation rules remain reviewable.

Defined Under Namespace

Classes: Definition

Constant Summary collapse

DEFINITIONS =
{
  development_local: Definition.new(
    name: :development_local,
    path_gem_policy: :configured_siblings,
    lockfile_role: :canonical,
    install_location: :member,
    host_platform_policy: :active_platform_must_resolve,
    allowed_mutations: %i[development_lockfiles source test]
  ),
  template_local: Definition.new(
    name: :template_local,
    path_gem_policy: :configured_siblings,
    lockfile_role: :canonical,
    install_location: :member,
    host_platform_policy: :active_platform_must_resolve,
    allowed_mutations: %i[template development_lockfiles generated]
  ),
  release_registry: Definition.new(
    name: :release_registry,
    path_gem_policy: :registry_only,
    lockfile_role: :canonical,
    install_location: :disposable,
    host_platform_policy: :active_platform_must_resolve,
    allowed_mutations: %i[canonical_release_lockfiles]
  ),
  release_monorepo: Definition.new(
    name: :release_monorepo,
    path_gem_policy: :configured_release_wave,
    lockfile_role: :canonical,
    install_location: :disposable,
    host_platform_policy: :active_platform_must_resolve,
    allowed_mutations: %i[canonical_release_lockfiles configured_wave_paths]
  ),
  release_recovery: Definition.new(
    name: :release_recovery,
    path_gem_policy: :configured_release_wave,
    lockfile_role: :canonical,
    install_location: :disposable,
    host_platform_policy: :active_platform_must_resolve,
    allowed_mutations: %i[canonical_release_lockfiles configured_wave_paths]
  )
}.each_value(&:freeze).freeze

Class Method Summary collapse

Class Method Details

.fetch(name) ⇒ Object



69
70
71
72
73
# File 'lib/kettle/family/execution_profile.rb', line 69

def self.fetch(name)
  DEFINITIONS.fetch(name.to_sym)
rescue KeyError
  raise ArgumentError, "unknown execution profile: #{name.inspect}"
end