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
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/kdep/commands/render.rb', line 21
def execute
deploy_name = @args[0]
env = @args[1]
discovery = Kdep::Discovery.new
kdep_dir = discovery.find_kdep_dir
unless kdep_dir
@ui.error("No kdep/ directory found")
exit 1
end
deploy_dir = resolve_deploy_dir(kdep_dir, deploy_name, discovery)
unless deploy_dir
exit 1
end
config = Kdep::Config.new(deploy_dir, env).load
preset = Kdep::Preset.new(config["preset"], deploy_dir)
resources = preset.resources
repo_root = File.dirname(kdep_dir)
output_dir = File.join(deploy_dir, ".rendered")
writer = Kdep::Writer.new(output_dir)
writer.clean
renderer = Kdep::Renderer.new(config, deploy_dir)
validator = Kdep::Validator.new
files_written = 0
errors = []
resources.each_with_index do |resource_name, idx|
index = idx + 1
begin
content = renderer.render_resource(resource_name)
rescue => e
errors << {"resource" => resource_name, "error" => e.message}
next
end
unless content.nil? || content.strip.empty?
result = validator.validate(content, resource_name)
unless result["valid"]
result["errors"].each do |err|
errors << {"resource" => resource_name, "error" => err}
end
end
end
path = writer.write(resource_name, content, index)
if path
relative_path = path.sub(repo_root + "/", "")
@ui.file_written(relative_path)
files_written += 1
end
end
errors.each do |err|
@ui.error("#{err["resource"]}: #{err["error"]}")
end
@ui.summary(files_written, errors.length)
exit 1 if errors.length > 0
end
|