class Castaway::CLI::Build
Public Class Methods
define(command)
click to toggle source
# File lib/castaway/cli/build.rb, line 13 def self.define(command) command.desc 'The resolution at which to generate the frames' command.flag %i(r resolution), default_value: '540p' command.desc 'How many frames per second to generate' command.flag %i(f fps), default_value: 29.97, type: Float command.desc 'The frame from which to start producing frames' command.flag %i(start-frame), default_value: 0, type: Integer command.desc 'The frame after which to stop producing frames' command.flag %i(end-frame), type: Integer command.desc 'The scene from which to start producing frames' command.flag %i(start-scene) command.desc 'The scene after which to stop producing frames' command.flag %i(end-scene) command.desc 'The time from which to start producing frames' command.flag %i(start-time) command.desc 'The time after which to stop producing frames' command.flag %i(end-time) command.desc 'What to call the resulting movie' command.flag %i(o output) command.action do |_globals, options, args| exit_now!('you have to supply a castaway program') if args.empty? definition = Castaway::Production.from_script(args.first) new(definition, args.first, options) end end
description()
click to toggle source
# File lib/castaway/cli/build.rb, line 9 def self.description 'Builds the given castaway production' end
new(definition, name, options)
click to toggle source
# File lib/castaway/cli/build.rb, line 49 def initialize(definition, name, options) deliverable = File.basename(name, File.extname(name)) + '.mp4' production = definition.new( resolution: options[:resolution], fps: options[:fps], deliverable: options[:output] || deliverable) range = Castaway::Range.new(production) if options['start-time'] range.start_time = options['start-time'] elsif options['start-scene'] range.start_scene = options['start-scene'] elsif options['start-frame'] range.start_frame = options['start-frame'] end if options['end-time'] range.end_time = options['end-time'] elsif options['end-scene'] range.end_scene = options['end-scene'] elsif options['end-frame'] range.end_frame = options['end-frame'] end production.produce(range) rescue Exception => e puts "#{e.class} (#{e.message})" puts e.backtrace abort end