Class: Traker::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/traker/config.rb

Overview

Represents Traker configuration.

Defined Under Namespace

Classes: InvalidTasks

Constant Summary collapse

PATH =
'.traker.yml'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file) ⇒ Config

Returns a new instance of Config.



18
19
20
21
22
23
24
# File 'lib/traker/config.rb', line 18

def initialize(file)
  yml = YAML.safe_load(File.read(file))
  @environments = yml['environments']
rescue Psych::SyntaxError => e
  puts "[TRAKER] unable to load config file: #{e}"
  @environments = {}
end

Class Method Details

.loadObject



14
15
16
# File 'lib/traker/config.rb', line 14

def self.load
  Config.new(File.join(::Rails.root, PATH))
end

Instance Method Details

#envObject



26
27
28
# File 'lib/traker/config.rb', line 26

def env
  @env ||= ENV.fetch('TRAKER_ENV', 'default')
end

#tasksObject



30
31
32
# File 'lib/traker/config.rb', line 30

def tasks
  @environments[env] || []
end

#validate!(available_tasks) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/traker/config.rb', line 34

def validate!(available_tasks)
  available_task_names = available_tasks.map(&:name)

  @environments.each do |_, tasks|
    task_names = (tasks || []).map { |t| t['name'] }
    invalid_tasks = task_names - available_task_names

    if invalid_tasks.any?
      raise InvalidTasks, "#{PATH} contains invalid tasks: #{invalid_tasks.join(',')}"
    end
  end
end