Sha256: 28d4a89438b9358291c14bd61bce1dc2b0de7362523721e7166fd0cc5c055c34

Contents?: true

Size: 1.83 KB

Versions: 3

Compression:

Stored size: 1.83 KB

Contents

# encoding: UTF-8
require 'yaml'
require 'ostruct'
require 'capybara'
require 'logger'
require 'simulacrum/configuration'
require 'simulacrum/runner'

# Gem module
module Simulacrum
  CONFIG_FILE = './.simulacrum.yml'

  @components = {}
  @current_browser = nil
  @configuration = Simulacrum::Configuration.new
  @logger = Logger.new($stdout)

  def logger
    @logger
  end
  module_function :logger

  def components
    @components
  end
  module_function :components

  def configuration
    @configuration
  end
  module_function :configuration

  def runner_options
    @runner_options
  end
  module_function :runner_options

  def root
    File.expand_path('../..', __FILE__)
  end
  module_function :root

  def run(options)
    @runner_options = options
    configure_logger
    configure_runner.run
  end
  module_function :run

  def configure(&block)
    options = OpenStruct.new(component: OpenStruct.new)
    yield options
    configuration.configure(options.to_h)
  end
  module_function :configure

  def config_file
    YAML.load_file(Simulacrum.config_file_path)
  end
  module_function :config_file

  def config_file?
    File.exist?(Simulacrum.config_file_path)
  end
  module_function :config_file?

  def config_file_path
    if defined? Rails
      Rails.root.join(CONFIG_FILE)
    else
      CONFIG_FILE
    end
  end
  module_function :config_file_path

  def self.configure_runner
    case Simulacrum.runner_options.runner
    when nil
      Simulacrum::Runner.new
    when :browserstack
      use_browserstack_runner
    end
  end

  def self.use_browserstack_runner
    gem 'simulacrum-browserstack', '>= 0.0.1'
    require 'simulacrum-browserstack'
    Simulacrum::Browserstack::Runner.new
  rescue Gem::LoadError
    raise
  end

  def self.configure_logger
    @logger.level = @runner_options.verbose ? Logger::DEBUG : Logger::INFO
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
simulacrum-0.3.2 lib/simulacrum.rb
simulacrum-0.3.1 lib/simulacrum.rb
simulacrum-0.3.0 lib/simulacrum.rb