Class: AgentHarness::ReleaseRegistry
- Inherits:
-
Object
- Object
- AgentHarness::ReleaseRegistry
- Defined in:
- lib/agent_harness/release_registry.rb
Instance Attribute Summary collapse
-
#releases ⇒ Object
readonly
Returns the value of attribute releases.
Instance Method Summary collapse
- #clear ⇒ Object
- #clear_provider(provider_name) ⇒ Object
-
#initialize ⇒ ReleaseRegistry
constructor
A new instance of ReleaseRegistry.
- #merge!(other_registry) ⇒ Object
- #providers ⇒ Object
- #register(provider_name, version, released_at: Time.now) ⇒ Object
- #registered?(provider_name, version) ⇒ Boolean
- #released_at(provider_name, version) ⇒ Object
- #versions_for(provider_name) ⇒ Object
Constructor Details
#initialize ⇒ ReleaseRegistry
Returns a new instance of ReleaseRegistry.
7 8 9 |
# File 'lib/agent_harness/release_registry.rb', line 7 def initialize @releases = {} end |
Instance Attribute Details
#releases ⇒ Object (readonly)
Returns the value of attribute releases.
5 6 7 |
# File 'lib/agent_harness/release_registry.rb', line 5 def releases @releases end |
Instance Method Details
#clear ⇒ Object
62 63 64 |
# File 'lib/agent_harness/release_registry.rb', line 62 def clear @releases.clear end |
#clear_provider(provider_name) ⇒ Object
66 67 68 |
# File 'lib/agent_harness/release_registry.rb', line 66 def clear_provider(provider_name) @releases.delete(provider_name.to_sym) end |
#merge!(other_registry) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/agent_harness/release_registry.rb', line 70 def merge!(other_registry) other_registry.releases.each do |provider_name, entries| @releases[provider_name] ||= [] entries.each do |entry| existing = @releases[provider_name].find { |e| e[:version] == entry[:version] } if existing existing[:released_at] = entry[:released_at] else @releases[provider_name] << entry.dup end end end self end |
#providers ⇒ Object
58 59 60 |
# File 'lib/agent_harness/release_registry.rb', line 58 def providers @releases.keys end |
#register(provider_name, version, released_at: Time.now) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/agent_harness/release_registry.rb', line 11 def register(provider_name, version, released_at: Time.now) provider_name = provider_name.to_sym version = version.to_s raise ArgumentError, "version must be a non-empty string" if version.empty? raise ArgumentError, "released_at must be a Time" unless released_at.is_a?(Time) @releases[provider_name] ||= [] entry = {version: version, released_at: released_at} existing = @releases[provider_name].find { |e| e[:version] == version } if existing existing[:released_at] = released_at else @releases[provider_name] << entry end entry end |
#registered?(provider_name, version) ⇒ Boolean
48 49 50 51 52 53 54 55 56 |
# File 'lib/agent_harness/release_registry.rb', line 48 def registered?(provider_name, version) provider_name = provider_name.to_sym version = version.to_s entries = @releases[provider_name] return false unless entries entries.any? { |e| e[:version] == version } end |
#released_at(provider_name, version) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/agent_harness/release_registry.rb', line 37 def released_at(provider_name, version) provider_name = provider_name.to_sym version = version.to_s entries = @releases[provider_name] return nil unless entries entry = entries.find { |e| e[:version] == version } entry&.fetch(:released_at, nil) end |
#versions_for(provider_name) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/agent_harness/release_registry.rb', line 30 def versions_for(provider_name) provider_name = provider_name.to_sym return nil unless @releases.key?(provider_name) @releases[provider_name].dup end |