Sha256: b793c7b0829ce73fc772b880ba3a99529fa1478c7379621ab8332599e6641256
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
require 'gherkin' require 'optparse' require 'lucid' require 'logger' require 'lucid/spec_file' require 'lucid/cli/context' module Lucid module CLI class App def self.start(args) new(args).start! end def initialize(args, stdin=STDIN, out=STDOUT, err=STDERR, kernel=Kernel) @args = args @out = out @err = err @kernel = kernel @context = nil end def start!(existing_context=nil) trap_interrupt context_loader = if existing_context existing_context.configure(load_context) existing_context else ContextLoader.new(load_context) end log.debug('Context Loader') log.debug(context_loader) context_loader.execute context_loader.write_testdefs_json failure = context_loader.results.failure? || Lucid.wants_to_quit @kernel.exit(failure ? 1 : 0) rescue ProfilesNotDefinedError, YmlLoadError, ProfileNotFound => e @err.puts(e.message) rescue SystemExit => e @kernel.exit(e.status) rescue Errno::EACCES, Errno::ENOENT => e @err.puts("#{e.message} (#{e.class})") @kernel.exit(1) rescue Exception => e @err.puts("#{e.message} (#{e.class})") @err.puts(e.backtrace.join("\n")) @kernel.exit(1) end def load_context return @context if @context @context = Context.new(@out, @err) @context.parse_options(@args) Lucid.logger = @context.log log.debug('Context:') log.debug(@context) @context end private def log Lucid.logger end def trap_interrupt trap('INT') do exit!(1) if Lucid.wants_to_quit Lucid.wants_to_quit = true STDERR.puts "\nExiting Lucid execution.\nInterrupt again to exit immediately." end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lucid-0.5.1 | lib/lucid/cli/app.rb |