62 lines
1.9 KiB
Ruby
62 lines
1.9 KiB
Ruby
module AbfWorkerService
|
|
class RepositoryMetadata < Base
|
|
|
|
attr_accessor :repository, :repository_status
|
|
|
|
def initialize(repository_status)
|
|
@repository_status = repository_status
|
|
@repository = repository_status.repository
|
|
end
|
|
|
|
def regenerate!
|
|
# Checks mirror sync status
|
|
return if repository.repo_lock_file_exists?
|
|
|
|
platform_path = "#{repository.platform.path}/repository"
|
|
if repository.platform.personal?
|
|
platform_path << '/' << build_for_platform.name
|
|
system "mkdir -p #{platform_path}"
|
|
end
|
|
|
|
Resque.push(
|
|
'publish_worker_default',
|
|
'class' => 'AbfWorker::PublishWorkerDefault',
|
|
'args' => [{
|
|
id: Time.now.to_i,
|
|
cmd_params: cmd_params,
|
|
main_script: 'build.sh',
|
|
rollback_script: 'rollback.sh',
|
|
platform: {
|
|
platform_path: platform_path,
|
|
type: build_for_platform.distrib_type,
|
|
name: build_for_platform.name,
|
|
arch: 'x86_64'
|
|
},
|
|
repository: {id: repository.id},
|
|
# time_living: 9600, # 160 min
|
|
time_living: 14400, # 240 min
|
|
extra: {repository_status_id: repository_status.id, regenerate: true}
|
|
}]
|
|
) if repository_status.start_regeneration
|
|
|
|
end
|
|
|
|
protected
|
|
|
|
def build_for_platform
|
|
@build_for_platform ||= repository_status.platform
|
|
end
|
|
|
|
def cmd_params
|
|
{
|
|
'RELEASED' => repository.platform.released,
|
|
'REPOSITORY_NAME' => repository.name,
|
|
'TYPE' => build_for_platform.distrib_type,
|
|
'REGENERATE_METADATA' => true,
|
|
'SAVE_TO_PLATFORM' => repository.platform.name,
|
|
'BUILD_FOR_PLATFORM' => build_for_platform.name
|
|
}.map{ |k, v| "#{k}=#{v}" }.join(' ')
|
|
end
|
|
|
|
end
|
|
end |