Sha256: faf92fbbd029ebfb07208224edde43aca3f74ad1f3b90a03a6cae1c4b7650c83

Contents?: true

Size: 994 Bytes

Versions: 1

Compression:

Stored size: 994 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

1 entries across 1 versions & 1 rubygems

Version Path
herodot-0.2.0 lib/herodot/configuration.rb