class Repol::Client
Public Class Methods
new(options = {})
click to toggle source
# File lib/repol/client.rb, line 5 def initialize(options = {}) @options = options @client = @options[:client] || Aws::ECR::Client.new @driver = Repol::Driver.new(@client, @options) @exporter = Repol::Exporter.new(@client, @options) end
Public Instance Methods
apply(file)
click to toggle source
# File lib/repol/client.rb, line 16 def apply(file) walk(file) end
export()
click to toggle source
# File lib/repol/client.rb, line 12 def export @exporter.export end
Private Instance Methods
load_file(file)
click to toggle source
# File lib/repol/client.rb, line 76 def load_file(file) if file.kind_of?(String) open(file) do |f| Repol::DSL.parse(f.read, file) end elsif file.respond_to?(:read) Repol::DSL.parse(file.read, file.path) else raise TypeError, "can't convert #{file} into File" end end
walk(file)
click to toggle source
# File lib/repol/client.rb, line 22 def walk(file) expected = load_file(file) actual = @exporter.export updated = walk_repositories(expected, actual) if @options[:dry_run] false else updated end end
walk_policy(repository_name, expected_policy, actual_policy)
click to toggle source
# File lib/repol/client.rb, line 60 def walk_policy(repository_name, expected_policy, actual_policy) updated = false if expected_policy if expected_policy != actual_policy @driver.update_policy(repository_name, expected_policy, actual_policy) updated = true end else @driver.delete_policy(repository_name) updated = true end updated end
walk_repositories(expected, actual)
click to toggle source
# File lib/repol/client.rb, line 35 def walk_repositories(expected, actual) updated = false expected.each do |repository_name, expected_policy| next unless matched?(repository_name) actual_policy = actual[repository_name] if actual_policy updated = walk_policy(repository_name, expected_policy, actual_policy) || updated elsif actual.has_key?(repository_name) actual.delete(repository_name) if expected_policy @driver.create_policy(repository_name, expected_policy) updated = true end else log(:warn, "No such repository: #{repository_name}") end end updated end