openSUSE/trollolo

View on GitHub
lib/settings.rb

Summary

Maintainability
A
2 hrs
Test Coverage
#  Copyright (c) 2013-2014 SUSE LLC
#
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of version 3 of the GNU General Public License as
#  published by the Free Software Foundation.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, contact SUSE LLC.
#
#  To contact SUSE about this file by physical or electronic mail,
#  you may find current contact information at www.suse.com

class Settings

  attr_accessor :developer_public_key, :member_token, :board_aliases, :verbose,
                :raw, :todo_columns, :doing_columns, :accepted_column_name_regex,
                :done_column_name_regex, :todo_column_name_regex, :scrum,
                :no_task_checklists, :swimlanes

  def initialize(config_file_path)
    @config_file_path = config_file_path
    if File.exist? config_file_path
      @config = YAML.load_file(config_file_path)

      if @config
        @developer_public_key       = @config['developer_public_key']
        @member_token               = @config['member_token']
        @board_aliases              = @config['board_aliases'] || {}
        @scrum                      = OpenStruct.new(@config['scrum'] || scrum_defaults)
        @no_task_checklists         = @config['no_task_checklists'].freeze || ['Feedback']
        @todo_columns               = @config['todo_columns'].freeze || ['Sprint Backlog']
        @doing_columns              = @config['doing_columns'].freeze || ['Doing']
        @done_column_name_regex     = @config['done_column_name_regex'].freeze || /\ADone/
        @accepted_column_name_regex = @config['accepted_column_name_regex'].freeze || /\AAccepted/
        @todo_column_name_regex     = @config['todo_column_name_regex'].freeze || /\ATo Do\Z/
        @swimlanes                  = @config['swimlanes'].freeze || []
      else
        raise "Couldn't read config data from '#{config_file_path}'"
      end
    end

    @verbose = false
    @raw = false
  end

  def save_config
    @config = {}
    @config['developer_public_key'] = @developer_public_key
    @config['member_token'] = @member_token

    File.open(@config_file_path, 'w') do |f|
      f.write(@config.to_yaml)
    end
  end

  def version
    Trollolo::VERSION
  end

  private

  def scrum_defaults
    {
      'board_names' => {
        'planning' => 'Planning Board',
        'sprint' => 'Sprint Board'
      },
      'label_names' => {
        'sticky' => 'Sticky',
        'waterline' => 'Under waterline',
        'in_last_sprint' => 'In last sprint'
      },
      'list_names' => {
        'sprint_backlog' => 'Sprint Backlog',
        'sprint_qa' => 'QA',
        'sprint_doing' => 'Doing',
        'planning_backlog' => 'Backlog',
        'planning_ready' => 'Ready for Estimation'
      }
    }.freeze
  end
end