-
Notifications
You must be signed in to change notification settings - Fork 434
/
_project.xml.builder
75 lines (68 loc) · 3.1 KB
/
_project.xml.builder
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
project_attributes = { name: my_model.name }
# Check if the project has a special type defined (like maintenance)
project_attributes[:kind] = my_model.kind unless my_model.is_standard?
xml.project(project_attributes) do
xml.title(my_model.title)
xml.description(my_model.description)
my_model.linking_to.each do |l|
params = { project: l.linked_db_project ? l.linked_db_project.name : l.linked_remote_project_name }
params[:vrevmode] = l.vrevmode unless l.vrevmode == 'standard' || l.vrevmode.blank?
xml.link(params)
end
xml.url(my_model.url) if my_model.url.present?
xml.remoteurl(my_model.remoteurl) if my_model.remoteurl.present?
xml.remoteproject(my_model.remoteproject) if my_model.remoteproject.present?
xml.devel(project: my_model.develproject.name) unless my_model.develproject.nil?
my_model.render_relationships(xml)
repos = my_model.repositories.not_remote.sort { |a, b| b.name <=> a.name }
FlagHelper.render(my_model, xml)
repos.each do |repo|
params = {}
params[:name] = repo.name
params[:rebuild] = repo.rebuild if repo.rebuild
params[:block] = repo.block if repo.block
params[:linkedbuild] = repo.linkedbuild if repo.linkedbuild
xml.repository(params) do |xml_repository|
repo.download_repositories.each do |download_repository|
params = { arch: download_repository.arch, url: download_repository.url, repotype: download_repository.repotype }
xml_repository.download(params) do |xml_download|
xml_download.archfilter download_repository.archfilter if download_repository.archfilter.present?
if download_repository.masterurl.present?
params = { url: download_repository.masterurl }
params[:sslfingerprint] = download_repository.mastersslfingerprint
xml_download.master(params)
end
xml_download.pubkey download_repository.pubkey if download_repository.pubkey.present?
end
end
repo.release_targets.each do |rt|
params = {}
params[:project] = rt.target_repository.project.name
params[:repository] = rt.target_repository.name
params[:trigger] = rt.trigger if rt.trigger.present?
xml_repository.releasetarget(params)
end
if repo.hostsystem
xml_repository.hostsystem(project: repo.hostsystem.project.name, repository: repo.hostsystem.name)
end
repo.path_elements.includes(:link).each do |pe|
if pe.link.remote_project_name.present?
project_name = pe.link.project.name + ':' + pe.link.remote_project_name
else
project_name = pe.link.project.name
end
xml_repository.path(project: project_name, repository: pe.link.name)
end
repo.repository_architectures.joins(:architecture).pluck('architectures.name').each do |arch|
xml_repository.arch arch
end
end
end
unless MaintainedProject.where(maintenance_project_id: my_model.id).empty?
xml.maintenance do |maintenance|
MaintainedProject.where(maintenance_project_id: my_model.id).each do |mp|
maintenance.maintains(project: mp.project.name)
end
end
end
end