Add .gitkeep
This commit is contained in:
parent
ac6992ba68
commit
a82109eee8
6 changed files with 48 additions and 2 deletions
|
@ -9,6 +9,7 @@ module ContainerRegistry
|
||||||
|
|
||||||
def [](key)
|
def [](key)
|
||||||
return unless data
|
return unless data
|
||||||
|
|
||||||
data[key]
|
data[key]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,13 +3,19 @@ module ContainerRegistry
|
||||||
attr_reader :uri, :client, :path
|
attr_reader :uri, :client, :path
|
||||||
|
|
||||||
def initialize(uri, options = {})
|
def initialize(uri, options = {})
|
||||||
@path = options[:path] || uri
|
@uri = uri
|
||||||
@uri = URI.parse(uri)
|
@path = options[:path] || default_path
|
||||||
@client = ContainerRegistry::Client.new(uri, options)
|
@client = ContainerRegistry::Client.new(uri, options)
|
||||||
end
|
end
|
||||||
|
|
||||||
def [](name)
|
def [](name)
|
||||||
ContainerRegistry::Repository.new(self, name)
|
ContainerRegistry::Repository.new(self, name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def default_path
|
||||||
|
@uri.sub(/^https?:\/\//, '')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -20,6 +20,7 @@ module ContainerRegistry
|
||||||
|
|
||||||
def manifest
|
def manifest
|
||||||
return @manifest if defined?(@manifest)
|
return @manifest if defined?(@manifest)
|
||||||
|
|
||||||
@manifest = client.repository_tags(name)
|
@manifest = client.repository_tags(name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ module ContainerRegistry
|
||||||
|
|
||||||
def manifest
|
def manifest
|
||||||
return @manifest if defined?(@manifest)
|
return @manifest if defined?(@manifest)
|
||||||
|
|
||||||
@manifest = client.repository_manifest(repository.name, name)
|
@manifest = client.repository_manifest(repository.name, name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -21,33 +22,39 @@ module ContainerRegistry
|
||||||
|
|
||||||
def [](key)
|
def [](key)
|
||||||
return unless manifest
|
return unless manifest
|
||||||
|
|
||||||
manifest[key]
|
manifest[key]
|
||||||
end
|
end
|
||||||
|
|
||||||
def digest
|
def digest
|
||||||
return @digest if defined?(@digest)
|
return @digest if defined?(@digest)
|
||||||
|
|
||||||
@digest = client.repository_tag_digest(repository.name, name)
|
@digest = client.repository_tag_digest(repository.name, name)
|
||||||
end
|
end
|
||||||
|
|
||||||
def config_blob
|
def config_blob
|
||||||
return @config_blob if defined?(@config_blob)
|
return @config_blob if defined?(@config_blob)
|
||||||
return unless manifest && manifest['config']
|
return unless manifest && manifest['config']
|
||||||
|
|
||||||
@config_blob = ContainerRegistry::Blob.new(repository, manifest['config'])
|
@config_blob = ContainerRegistry::Blob.new(repository, manifest['config'])
|
||||||
end
|
end
|
||||||
|
|
||||||
def config
|
def config
|
||||||
return unless config_blob
|
return unless config_blob
|
||||||
|
|
||||||
@config ||= ContainerRegistry::Config.new(self, config_blob)
|
@config ||= ContainerRegistry::Config.new(self, config_blob)
|
||||||
end
|
end
|
||||||
|
|
||||||
def created_at
|
def created_at
|
||||||
return unless config
|
return unless config
|
||||||
|
|
||||||
@created_at ||= DateTime.rfc3339(config['created'])
|
@created_at ||= DateTime.rfc3339(config['created'])
|
||||||
end
|
end
|
||||||
|
|
||||||
def layers
|
def layers
|
||||||
return @layers if defined?(@layers)
|
return @layers if defined?(@layers)
|
||||||
return unless manifest
|
return unless manifest
|
||||||
|
|
||||||
@layers = manifest['layers'].map do |layer|
|
@layers = manifest['layers'].map do |layer|
|
||||||
ContainerRegistry::Blob.new(repository, layer)
|
ContainerRegistry::Blob.new(repository, layer)
|
||||||
end
|
end
|
||||||
|
@ -55,16 +62,19 @@ module ContainerRegistry
|
||||||
|
|
||||||
def total_size
|
def total_size
|
||||||
return unless layers
|
return unless layers
|
||||||
|
|
||||||
layers.map(&:size).sum
|
layers.map(&:size).sum
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete
|
def delete
|
||||||
return unless digest
|
return unless digest
|
||||||
|
|
||||||
client.delete_repository_tag(repository.name, digest)
|
client.delete_repository_tag(repository.name, digest)
|
||||||
end
|
end
|
||||||
|
|
||||||
def copy_to(repository)
|
def copy_to(repository)
|
||||||
return unless manifest
|
return unless manifest
|
||||||
|
|
||||||
layers.each do |blob|
|
layers.each do |blob|
|
||||||
repository.mount_blob(blob)
|
repository.mount_blob(blob)
|
||||||
end
|
end
|
||||||
|
|
0
shared/registry/.gitkeep
Normal file
0
shared/registry/.gitkeep
Normal file
28
spec/lib/container_registry/registry_spec.rb
Normal file
28
spec/lib/container_registry/registry_spec.rb
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe ContainerRegistry::Registry do
|
||||||
|
let(:path) { nil }
|
||||||
|
let(:registry) { described_class.new('http://example.com', path: path) }
|
||||||
|
|
||||||
|
subject { registry }
|
||||||
|
|
||||||
|
it { is_expected.to respond_to(:client) }
|
||||||
|
it { is_expected.to respond_to(:uri) }
|
||||||
|
it { is_expected.to respond_to(:path) }
|
||||||
|
|
||||||
|
it { expect(subject['test']).to_not be_nil }
|
||||||
|
|
||||||
|
context '#path' do
|
||||||
|
subject { registry.path }
|
||||||
|
|
||||||
|
context 'path from URL' do
|
||||||
|
it { is_expected.to eq('example.com') }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'custom path' do
|
||||||
|
let(:path) { 'registry.example.com' }
|
||||||
|
|
||||||
|
it { is_expected.to eq(path) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue