class Admiral::Config

Attributes

platforms[R]

Public Class Methods

new() click to toggle source
# File lib/admiral/config.rb, line 9
def initialize

  local_config_file = ".admiral.yml"
  global_config_file = File.expand_path("~/.admiral.yml")

  if not File.exist?(local_config_file)
    STDERR.puts "File .admiral.yml must be present"
    exit!
  end

  local_config = YAML.load_file(local_config_file)

  if  File.exist?(global_config_file)
    global_config = YAML.load_file(File.expand_path("~/.admiral.yml"))

    common_global_config = global_config['common']
    common_local_config  = local_config['common']

    if common_global_config.nil?
      if common_local_config.nil?
        STDERR.puts "No common config defined"
        exit!
      else
        common_config = common_local_config
      end
    else
      if common_local_config.nil?
        common_config = common_global_config
      else
        common_config = common_global_config.merge(common_local_config)
      end
    end
  else
    common_config = local_config['common']

    if common_config.nil?
      STDERR.puts "No common config defined"
      exit!
    end
  end

  @platforms = Hash.new
  @platforms_name = []
  @platforms_config = Hash.new

  common_applications = common_config['applications']
  common_applications = [] if not common_applications

  if local_config['platforms'].nil?
    STDERR.puts "No platforms defined"
    exit!
  end

  local_config['platforms'].each do | platform |
    platform_name = platform['name']
    @platforms[platform_name] = platform
    @platforms_name << platform_name

    @platforms_config[platform_name] = common_config.clone
    @platforms_config[platform_name].merge!(platform)

    platform_applications = @platforms_config[platform_name]['applications']
    platform_applications = [] if not platform_applications
    platform_applications_codes = []

    platform_applications.each do |application|
      platform_applications_codes << application['code']
    end

    common_applications.each do |application|
      if not platform_applications_codes.include?(application['code'])
         @platforms_config[platform_name]['applications'].push(application)
      end
    end
  end
end

Public Instance Methods

[](platform) click to toggle source
# File lib/admiral/config.rb, line 86
def [](platform)
  return @platforms_config[platform]
end
platform?(platform) click to toggle source
# File lib/admiral/config.rb, line 90
def platform?(platform)
  return @platforms_config.key?(platform)
end