2017-03-28 12:34:56 +00:00
|
|
|
module ContainerRegistry
|
|
|
|
class Path
|
|
|
|
InvalidRegistryPathError = Class.new(StandardError)
|
|
|
|
|
|
|
|
def initialize(name)
|
2017-03-28 12:57:22 +00:00
|
|
|
@name = name
|
2017-03-28 12:34:56 +00:00
|
|
|
@nodes = name.to_s.split('/')
|
|
|
|
end
|
|
|
|
|
|
|
|
def valid?
|
2017-03-28 14:20:16 +00:00
|
|
|
@nodes.size > 1 && @nodes.size < Namespace::NUMBER_OF_ANCESTORS_ALLOWED
|
2017-03-28 12:34:56 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def components
|
|
|
|
raise InvalidRegistryPathError unless valid?
|
|
|
|
|
|
|
|
@components ||= @nodes.size.downto(2).map do |length|
|
|
|
|
@nodes.take(length).join('/')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-03-28 12:57:22 +00:00
|
|
|
def has_repository?
|
|
|
|
# ContainerRepository.find_by_full_path(@name).present?
|
|
|
|
end
|
|
|
|
|
2017-03-28 12:34:56 +00:00
|
|
|
def repository_project
|
|
|
|
@project ||= Project.where_full_path_in(components.first(3))&.first
|
|
|
|
end
|
|
|
|
|
|
|
|
def repository_name
|
2017-03-28 12:57:22 +00:00
|
|
|
return unless repository_project
|
|
|
|
|
|
|
|
@name.remove(%r(^?#{Regexp.escape(repository_project.full_path)}/?))
|
2017-03-28 12:34:56 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|