require 'logger'

module Stockboy

  # Global Stockboy configuration options
  #
  class Configuration

    # Directories where Stockboy job template files can be found.
    #
    # Needs to be configured with your own paths if running standalone.
    # When running with Rails, includes +config/stockboy_jobs+ by default.
    #
    # @return [Array<String>]
    #
    attr_accessor :template_load_paths

    # Path for storing tempfiles during processing
    #
    # @return [String]
    #
    attr_accessor :tmp_dir

    # Default logger
    #
    # @return [Logger]
    #
    attr_accessor :logger

    # To allow inspection when tranlastion error occurs
    #
    # By default returns nil on error but can be overridden 
    attr_accessor :translation_error_handler



    # Initialize a set of global configuration options
    #
    # @yield self for configuration
    #
    def initialize
      @template_load_paths = []
      @logger = Logger.new(STDOUT)
      @tmp_dir = Dir.tmpdir
      @translation_error_handler = ->(error) { nil }
      yield self if block_given?
    end
  end

  class << self

    # Stockboy configuration block
    #
    # @example
    #   Stockboy.configure do |config|
    #     config.template_load_paths << "config/my_templates"
    #   end
    #
    # @scope class
    # @yield self for configuration
    # @return [Configuration]
    #
    def configure
      @configuration ||= Configuration.new
      yield @configuration if block_given?
      @configuration
    end
    alias_method :configuration, :configure

  end

end