module SleepingKingStudios::Tasks::Apps

Thor tasks for semi-distributed applications.

Public Class Methods

configuration() click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/sleeping_king_studios/tasks/apps.rb, line 14
def self.configuration
  @configuration ||=
    begin
      tools = SleepingKingStudios::Tools::Toolbelt.instance
      apps  = load_configuration
      hsh   = Hash.new do |_, key|
        SleepingKingStudios::Tasks::Apps::AppConfiguration.
          new(:name => key.to_s)
      end # hash

      apps.each do |key, data|
        name = key.to_s
        data = tools.hsh.convert_keys_to_symbols(data)

        data[:name] ||= name

        hsh[key] =
          SleepingKingStudios::Tasks::Apps::AppConfiguration.new(data)
      end # each

      hsh
    end # begin-end
end

Private Class Methods

load_configuration() click to toggle source

rubocop:enable Metrics/MethodLength

# File lib/sleeping_king_studios/tasks/apps.rb, line 39
def self.load_configuration
  config_file = SleepingKingStudios::Tasks.configuration.apps.config_file
  raw         = ::File.read(config_file)

  YAML.safe_load raw
rescue
  {}
end