Class: Furikake::Resource

Inherits:
Object
  • Object
show all
Defined in:
lib/furikake/resource.rb

Class Method Summary collapse

Class Method Details

.generate(cli, resources) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/furikake/resource.rb', line 3

def self.generate(cli, resources)
  documents = ''
  load_resource_type(cli, resources).each do |type|
    if type.include?('addon')
      $LOAD_PATH.push(Dir.pwd + '/addons')
      require "#{type}"
      type_name = type.split('-')[-1]
      eval "documents.concat(Furikake::Resources::Addons::#{type_name.camelize}.report)"
      logger.info("リソースタイプ: #{type_name} の情報を取得しました.")
      documents.concat("\n\n")
    else
      begin
        require "furikake/resources/#{type}"
        eval "documents.concat(Furikake::Resources::#{type.camelize}.report)"
        logger.info("リソースタイプ: #{type} の情報を取得しました.")
        documents.concat("\n\n")
      rescue LoadError
        logger.warn("リソースタイプ: #{type} を読み込めませんでした.")
      rescue
        logger.warn("リソースタイプ: #{type} の情報を取得出来ませんでした.")
      end
    end
  end
  documents
end

.load_addons_resource_typeObject



50
51
52
53
54
55
56
# File 'lib/furikake/resource.rb', line 50

def self.load_addons_resource_type
  addons_resource_type = []
  Dir.glob(Dir.pwd + '/addons/furikake-resource-addon-*').each do |r|
    addons_resource_type << File.basename(r, '.rb')
  end
  addons_resource_type.sort
end

.load_config_resource_type(path = nil) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/furikake/resource.rb', line 58

def self.load_config_resource_type(path = nil)
  path = '.furikake.yml' if path.nil?
  begin
    config = YAML.load_file(path)
    config['resources']['aws'].sort
  rescue Errno::ENOENT
    logger.error('.furikake.yml が存在していません.')
    exit 1
  rescue => ex
    logger.error('.furikake.yml の読み込みに失敗しました. ' + ex.message)
    exit 1
  end
end

.load_default_resource_typeObject



42
43
44
45
46
47
48
# File 'lib/furikake/resource.rb', line 42

def self.load_default_resource_type
  default_resource_type = []
  Dir.glob(File.dirname(__FILE__) + '/resources/*').each do |r|
    default_resource_type << File.basename(r, '.rb') unless r.include?('stub')
  end
  default_resource_type.sort
end

.load_resource_type(cli, resources) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/furikake/resource.rb', line 29

def self.load_resource_type(cli, resources)
  type = []
  config_defined_resources = cli ? load_config_resource_type : resources['aws'].sort
  default_resources = load_default_resource_type
  if default_resources == config_defined_resources
    type.push(default_resources)
  else
    type.push(config_defined_resources)
  end
  type.push(load_addons_resource_type)
  type.flatten
end

.loggerObject



72
73
74
75
# File 'lib/furikake/resource.rb', line 72

def self.logger
  $stdout.sync = true
  Logger.new($stdout)
end