69 lines
1.8 KiB
Ruby
69 lines
1.8 KiB
Ruby
class CreateEmptyMetadataJob < BaseActiveRecordJob
|
|
include Sidekiq::Worker
|
|
sidekiq_options :queue => :low
|
|
|
|
def perform_with_ar_connection(class_name, id)
|
|
@id = id
|
|
case class_name
|
|
when Platform.name
|
|
create_empty_metadata_for_platform
|
|
when Repository.name
|
|
create_empty_metadata_for_repository Repository.find(@id)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def create_empty_metadata_for_platform
|
|
platform = Platform.main.opened.find @id
|
|
@platforms = [platform]
|
|
repositories = Repository.joins(:platform).
|
|
where(platforms: { platform_type: Platform::TYPE_PERSONAL })
|
|
repositories.find_each do |r|
|
|
create_empty_metadata_for_repository r
|
|
end
|
|
end
|
|
|
|
def create_empty_metadata_for_repository(repository)
|
|
@platforms = [repository.platform] if repository.platform.main?
|
|
platforms.each do |platform|
|
|
arch_names.each do |arch_name|
|
|
%w(release updates).each do |type|
|
|
path = "#{ repository.platform.path }/repository/"
|
|
path << "#{ platform.name }/" if repository.platform.personal?
|
|
path << "#{ arch_name }/#{ repository.name }/#{ type }"
|
|
create_empty_metadata(platform, path)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def create_empty_metadata(platform, path)
|
|
case platform.distrib_type
|
|
when 'rhel'
|
|
path << '/repodata/'
|
|
when 'mdv'
|
|
path << '/media_info/'
|
|
else
|
|
return
|
|
end
|
|
if Dir["#{ path }/*"].empty?
|
|
system "mkdir -p -m 0777 #{ path }"
|
|
system "cp -f #{ empty_metadatas(platform) }/* #{ path }/"
|
|
end
|
|
end
|
|
|
|
def empty_metadatas(platform)
|
|
Rails.root.join('public', 'metadatas', platform.distrib_type).to_s
|
|
end
|
|
|
|
def arch_names
|
|
@arch_names ||= Arch.pluck(:name)
|
|
end
|
|
|
|
def platforms
|
|
@platforms ||= Platform.main.opened.to_a
|
|
end
|
|
|
|
end
|