Sha256: 047faa24502395e137f1b06c7630fd6c4cc7fbf4f6115e614c6609dcd778ff4f

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

module Evertils
  class Cfg

    # default values for initialization
    def initialize
      @yml = {}
    end

    # Perform first run tasks and create or read config file values
    def bootstrap!
      populate_config

      return if valid_config?

      # no config file found, lets create one using the firstrun controller
      require 'client/controller/firstrun'

      controller = Evertils::Controller::Firstrun.new
      controller.default

      populate_config
    end

    # Returns a hash of all module constants and their values
    def options
      keys = Evertils.constants.select { |name| constant?(name) }
      hash = {}

      keys.each { |key| hash[key] = Evertils.const_get(key) }
      hash
    end

    # Populates the internal hash which stores any values set in the config file
    def populate_config
      file = File.expand_path("~/.evertils/config.yml")
      fmt = Evertils::Helper.load('Formatting')

      @yml = fmt.symbolize(::YAML.load_file(file))
      self
    end

    # Get a specific value from the config file data
    # Params:
    # +name+:: String/symbol key value
    def get(name, child = nil)
      return @yml[name.to_sym][child.to_sym] unless child.nil?
      @yml[name.to_sym]
    end

    # Checks if a key exists
    # Params:
    # +name+:: String/symbol key value
    def exist?(name, child = nil)
      return @yml[name].key?(child.to_sym) unless child.nil?
      @yml.key?(name.to_sym)
    end

    private

    # Check if configuration data exists
    def valid_config?
      !@yml.nil?
    end

    # Checks if string is a constant
    def constant?(name)
      name == name.upcase
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
evertils-0.4.0 lib/evertils/config.rb