Sha256: 9e425c1e89fe1891d224f431055cda63a4ae655c47136c5b1b0edbe28fdf9876

Contents?: true

Size: 764 Bytes

Versions: 9

Compression:

Stored size: 764 Bytes

Contents

require 'psych'
require 'pathname'
require 'forwardable'

module Canals
  class Config
    extend Forwardable

    def initialize(root = nil)
      @root = root
      @config = load_config(global_config_file)
    end

    def_delegators :@config, :[], :[]=

    def load_config(config_file)
      valid_file = config_file && config_file.exist? && !config_file.size.zero?
      return {} if !valid_file
      return Psych.load_file(config_file)
    end

    def save!
      FileUtils.mkdir_p(global_config_file.dirname)
      File.open(global_config_file, 'w') do |file|
        file.write(Psych.dump(@config))
      end
    end

    private

    def global_config_file
      file = File.join(Dir.home, '.canals/config')
      Pathname.new(file)
    end

  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
canals-0.9.0 lib/canals/config.rb
canals-0.8.7 lib/canals/config.rb
canals-0.8.6 lib/canals/config.rb
canals-0.8.5 lib/canals/config.rb
canals-0.8.4 lib/canals/config.rb
canals-0.8.3 lib/canals/config.rb
canals-0.8.2 lib/canals/config.rb
canals-0.8.1 lib/canals/config.rb
canals-0.8.0 lib/canals/config.rb