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
|
# File 'lib/ace/demo/atoms/asciinema_tape_compiler.rb', line 11
def compile(spec:, default_timeout: "2s")
settings = spec["settings"] || {}
lines = [
"#!/usr/bin/env bash",
"set -euo pipefail",
""
]
env = settings["env"] || {}
env.each do |key, value|
lines << "export #{key}=#{Shellwords.escape(value.to_s)}"
end
lines << "" unless env.empty?
spec.fetch("scenes", []).each do |scene|
scene_name = scene["name"]
lines << "# Scene: #{scene_name}" unless scene_name.to_s.strip.empty?
scene.fetch("commands", []).each do |command|
lines << command.fetch("type")
sleep_value = validate_sleep!(command["sleep"] || default_timeout)
lines << "sleep #{sleep_value}"
lines << ""
end
end
lines.join("\n").rstrip + "\n"
end
|