Sha256: 1d2127372a908b05327cc6034b4541e0c04ee6bf5043c1a8fb8de8a37f82cffb

Contents?: true

Size: 964 Bytes

Versions: 3

Compression:

Stored size: 964 Bytes

Contents

require 'yaml'

class Herodot::Configuration
  CONFIG_FILE = File.expand_path('~/.herodot.yml').freeze
  DEFAULT_CONFIGURATION = {
    'projects_directory' => '~',
    'work_times' => {
      'work_start' => '9:30',
      'lunch_break_start' => '13:00',
      'lunch_break_end' => '13:30',
      'work_end' => '18:00'
    }
  }.freeze

  def initialize
    @worklog_file = '~/worklog'
    if File.exist?(CONFIG_FILE)
      @config = load_configuration
    else
      @config = DEFAULT_CONFIGURATION
      save_configuration
    end
  end

  def worklog_file
    File.expand_path(@worklog_file)
  end

  def projects_directory
    File.expand_path(@config['projects_directory'])
  end

  def work_times
    @config['work_times'].map { |k, v| [k.to_sym, v.split(':').map(&:to_i)] }
  end

  def save_configuration
    File.open(CONFIG_FILE, 'w') { |f| YAML.dump(@config, f) }
  end

  def load_configuration
    File.open(CONFIG_FILE) { |f| YAML.load(f) }
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
herodot-0.1.6 lib/herodot/configuration.rb
herodot-0.1.5 lib/herodot/configuration.rb
herodot-0.1.4 lib/herodot/configuration.rb