Sha256: b8f5cba06a4dcbe871d771034a5b161ad2629b28facce158f2dd3b3e12d7d56c

Contents?: true

Size: 993 Bytes

Versions: 4

Compression:

Stored size: 993 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')
    @worklog_file = worklog_file
    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

4 entries across 4 versions & 1 rubygems

Version Path
herodot-0.1.10 lib/herodot/configuration.rb
herodot-0.1.9 lib/herodot/configuration.rb
herodot-0.1.8 lib/herodot/configuration.rb
herodot-0.1.7 lib/herodot/configuration.rb