Sha256: 35d9f2d9474c11c10093dd0cc386b2630793ff2dab80416d1d88aa19c79c1140

Contents?: true

Size: 1.96 KB

Versions: 4

Compression:

Stored size: 1.96 KB

Contents

require 'yaml'
require 'logger'
require 'gogetit/util'
require 'gogetit/multilogger'
require 'hashie'

module Gogetit
  module Config
    extend Gogetit::Util
    class << self
      attr_reader :config, :logger
    end

    # TODO: It might be needed to disable one of logging devices according to satiation.
    STDOUT.sync = true
    log_to_stdout = Logger.new(STDOUT)
    # Instantiate main objects
    @logger = Gogetit::MultiLogger.new(:loggers => log_to_stdout)

    @config = {}

    # Define home directory
    user_gogetit_home = Dir.home + '/.gogetit'
    config[:user_gogetit_home] = user_gogetit_home
    if not File.directory?(user_gogetit_home)
      logger.info('Creating home directory..')
      FileUtils.mkdir(user_gogetit_home)
    end

    # TODO: It can be used to provide different behavior according to consumer.
    # Define default consumer
    config[:consumer] = 'gogetit_cli'

    # Define log directory
    log_dir = user_gogetit_home + '/log'
    config[:log_dir] = log_dir
    if not File.directory?(log_dir)
      logger.info('Creating log directory..')
      FileUtils.mkdir(log_dir)
    end

    # Define file log devices
    log_file = File.open(log_dir + '/debug.log', 'a')
    log_file.sync = true
    log_to_file = Logger.new(log_file)
    logger.add_logger(log_to_file)

    # Define logger
    # logger.datetime_format = "%Y-%m-%d %H:%M:%S"
    logger.progname = 'GoGetIt'

    lib_dir = Gem::Specification.find_by_name('gogetit').gem_dir + '/lib'

    config[:lib_dir] = lib_dir
    # Load GoGetIt default configuration
    conf_file = user_gogetit_home + '/gogetit.yml'
    if not File.exists?(conf_file)
      src = File.new(lib_dir + '/sample_conf/gogetit.yml')
      dst = Dir.new(user_gogetit_home)
      logger.info('Copying GoGetIt default configuration..')
      FileUtils.cp(src, dst)
      abort('Please define default configuration for GoGetIt at ~/.gogetit/gogetit.yml.')
    end
    config.merge!(Hashie.symbolize_keys YAML.load_file(conf_file))
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gogetit-0.13.3 lib/gogetit/config.rb
gogetit-0.13.2 lib/gogetit/config.rb
gogetit-0.13.1 lib/gogetit/config.rb
gogetit-0.12.4 lib/gogetit/config.rb