Sha256: b09c257c8bbb2fb0fd965d6c4e79cca6e77327f5685e0b00d058a7fb8bf2d3e0

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

require 'yaml'

module Herodot
  class 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'] || DEFAULT_CONFIGURATION['projects_directory'])
    end

    def work_times
      (@config['work_times'] || DEFAULT_CONFIGURATION['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
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
herodot-0.2.2 lib/herodot/configuration.rb
herodot-0.2.1 lib/herodot/configuration.rb