Class: AgentsHomedir::Agent

Inherits:
Object
  • Object
show all
Defined in:
lib/agents_homedir/agent.rb

Instance Method Summary collapse

Constructor Details

#initialize(name:, label:, env_override:, verified_on:, resolver:) ⇒ Agent

Equality and hash intentionally cover only public facts. Resolver-specific caches should key by resolver and agent name.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/agents_homedir/agent.rb', line 9

def initialize(name:, label:, env_override:, verified_on:, resolver:)
  validate_name!(name)
  validate_label!(label)
  validate_env_override!(env_override)
  validate_verified_on!(verified_on)

  @resolver = resolver

  super(
    name: name,
    label: snapshot_string(label),
    env_override: snapshot_string(env_override),
    verified_on:
  )
end

Instance Method Details

#candidatesObject



29
# File 'lib/agents_homedir/agent.rb', line 29

def candidates = @resolver.candidates(name)

#homeObject



25
# File 'lib/agents_homedir/agent.rb', line 25

def home = @resolver.home(name)

#installed?Boolean

Returns:

  • (Boolean)


27
# File 'lib/agents_homedir/agent.rb', line 27

def installed? = @resolver.installed?(name)

#with(**changes) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/agents_homedir/agent.rb', line 31

def with(**changes)
  return self if changes.empty?

  unknown_members = changes.keys - self.class.members
  fail ArgumentError, "Unknown member(s) for #{self.class}: #{unknown_members.map(&:inspect).join(', ')}" if unknown_members.any?
  reject_resolver_bound_changes!(changes)

  updated = to_h.merge(changes)
  return self if updated == to_h

  self.class.new(**updated, resolver: @resolver)
end