def setup(opts={})
super(opts.merge(:interpreter => self))
self.params ||= {}
if opts[:irb]
@irb = opts[:irb]
end
if opts[:parent]
@parent = opts[:parent]
end
if opts[:log]
@log = opts[:log]
elsif not defined?(@log) or @log.nil?
@log = QueuedLogger.new($stdout)
@log.level = Logger::INFO
end
if opts[:log_level] or opts[:verbosity]
@log.level = opts[:log_level] || opts[:verbosity]
end
if opts[:preview].nil?
self.preview = false unless preview?
else
self.preview = opts[:preview]
end
if opts[:friendly_exceptions].nil?
@friendly_exceptions = true unless defined?(@friendly_exceptions)
else
@friendly_exceptions = opts[:friendly_exceptions]
end
_instantiate_plugins
tags.merge(opts[:tags]) if opts[:tags]
if project_path = opts[:project] || ENV["AUTOMATEIT_PROJECT"] || ENV["AIP"]
env_file = File.join(project_path, "config", "automateit_env.rb")
if File.exists?(env_file)
@project = File.expand_path(project_path)
log.debug(PNOTE+"Loading project from path: #{@project}")
lib_files = Dir[File.join(@project, "lib", "*.rb")] + Dir[File.join(@project, "lib", "**", "init.rb")]
lib_files.each do |lib|
log.debug(PNOTE+"Loading project library: #{lib}")
invoke(lib)
end
tag_file = File.join(@project, "config", "tags.yml")
if File.exists?(tag_file)
log.debug(PNOTE+"Loading project tags: #{tag_file}")
tag_manager[:yaml].setup(:file => tag_file)
end
field_file = File.join(@project, "config", "fields.yml")
if File.exists?(field_file)
log.debug(PNOTE+"Loading project fields: #{field_file}")
field_manager[:yaml].setup(:file => field_file)
end
_instantiate_plugins
if File.exists?(env_file)
log.debug(PNOTE+"Loading project env: #{env_file}")
invoke(env_file)
end
elsif not opts[:guessed_project]
raise ArgumentError.new("Couldn't find project at: #{project_path}")
end
end
end