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
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/pray/format_serialize.rb', line 7
def serialize_recommended(manifest)
lines = [%(prayfile "#{manifest.prayfile_version}")]
unless manifest.sources.empty?
lines << ""
manifest.sources.each { |source| lines << format_source(source) }
end
unless manifest.symbols.empty?
lines << ""
lines << "pray do"
manifest.symbols.sort.each do |key, value|
lines << %( #{key} "#{value}")
end
lines << "end"
end
manifest.targets.each do |target|
next unless target.scoped
lines << ""
case target.mode
when "compose"
path = target.outputs.first || ""
lines << %(compose "#{path}" do)
target.entries.each do |entry|
lines << " #{format_destination_entry(entry, manifest)}"
end
lines << "end"
when "tree"
path = target.skills.first || ""
lines << %(tree "#{path}" do)
target.entries.each do |entry|
next unless entry.kind == "package"
package = find_package(manifest, entry.name)
lines << " #{ManifestMethods.format_package_declaration(package)}" if package
end
lines << "end"
end
end
file_packages = manifest.packages.select(&:file)
unless file_packages.empty?
lines << ""
file_packages.each { |package| lines << ManifestMethods.format_package_declaration(package) }
end
unbound = manifest.packages.select { |package| !package.bound && !package.file && package.groups.empty? }
unless unbound.empty?
lines << ""
unbound.each { |package| lines << ManifestMethods.format_package_declaration(package) }
end
grouped_packages(manifest).each do |group_names, packages|
lines << ""
lines << "group #{group_names.map { |name| ":#{name}" }.join(", ")} do"
packages.each { |package| lines << " #{ManifestMethods.format_package_declaration(package)}" }
lines << "end"
end
manifest.targets.each do |target|
next if target.scoped || !(target)
lines << ""
lines << "target :#{target.name} do"
target.commands.each { |command| lines << %( commands "#{command}") }
target.rules.each { |rule| lines << %( rules "#{rule}") }
lines << " max_bytes #{target.max_bytes}" if target.max_bytes
lines << "end"
end
if manifest.render != RenderPolicy.default
lines << ""
lines << "render mode: :#{manifest.render.mode}, conflict: :#{manifest.render.conflict}, " \
"churn: :#{manifest.render.churn}"
end
lines << ""
lines.join("\n")
end
|