GitLab steht Mittwoch, den 23. September, zwischen 10:00 und 12:00 Uhr aufgrund von Wartungsarbeiten nicht zur Verfügung.

Commit a82109ee authored by Kamil Trzcinski's avatar Kamil Trzcinski

Add .gitkeep

parent ac6992ba
...@@ -9,6 +9,7 @@ module ContainerRegistry ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
......
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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment