bbc-cosmos-tools 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,4 @@
1
- require 'yaml'
1
+ require "yaml"
2
2
 
3
3
  module BBC
4
4
  module Cosmos
@@ -6,22 +6,22 @@ module BBC
6
6
  class Config
7
7
  attr_accessor :base_path, :project, :env
8
8
 
9
- def initialize(base_path, project, env = 'int')
9
+ def initialize(base_path, project, env = "int")
10
10
  @base_path = base_path
11
11
  @project = project
12
12
  @env = env
13
13
  end
14
14
 
15
15
  def resources
16
- if File.directory? File.join(base_path, 'resources', env)
17
- path = File.join(base_path, 'resources', env, "#{project}.yaml")
16
+ if File.directory? File.join(base_path, "resources", env)
17
+ path = File.join(base_path, "resources", env, "#{project}.yaml")
18
18
  if File.exist? path
19
- YAML::load(File.open(path).read)
19
+ YAML.load(File.open(path).read)
20
20
  else
21
- raise("Invalid project, please set the $BBC_COSMOS_TOOLS_PROJECT environment variable or use the --project parameter")
21
+ fail("Invalid project, please set the $BBC_COSMOS_TOOLS_PROJECT environment variable or use the --project parameter")
22
22
  end
23
23
  else
24
- raise("#{env} is an invalid environment")
24
+ fail("#{env} is an invalid environment")
25
25
  end
26
26
  end
27
27
 
@@ -30,39 +30,36 @@ module BBC
30
30
  if File.exist? path
31
31
  template = File.open(path).read
32
32
  config = resources
33
- YAML::load(
33
+ YAML.load(
34
34
  ERB.new(template).result(binding)
35
- )['components']
35
+ )["components"]
36
36
  else
37
- raise("'#{project}' isn't valid project")
37
+ fail("'#{project}' isn't valid project")
38
38
  end
39
39
  end
40
40
 
41
41
  def components_for(tags)
42
- resources['cloudformation']['components'].select do |component_id, data|
43
- data['tags'].any? { |tag| tags.nil? ? true : tags.include?(tag) } if data['tags']
42
+ resources["cloudformation"]["components"].select do |_component_id, data|
43
+ data["tags"].any? { |tag| tags.nil? ? true : tags.include?(tag) } if data["tags"]
44
44
  end
45
45
  end
46
46
 
47
47
  def app
48
- config_path = base_path.join('configs', 'app.yaml')
49
- raise("Invalid application config path: #{config_path}") unless File.exists? config_path
50
- YAML::load(File.open(config_path).read)['bbc']['cosmos']
48
+ config_path = base_path.join("configs", "app.yaml")
49
+ fail("Invalid application config path: #{config_path}") unless File.exist? config_path
50
+ YAML.load(File.open(config_path).read)["bbc"]["cosmos"]
51
51
  end
52
52
 
53
-
54
- def cf_templates(component, stack = 'main')
55
- aws_templates = File.join(base_path, 'stacks', component, stack, '/aws/**/*.rb')
56
- component_template_path = File.join(base_path, 'stacks', component, stack, 'template.rb')
57
- component_template = (File.exists? component_template_path) ? File.read(component_template_path) : ''
53
+ def cf_templates(component, stack = "main")
54
+ aws_templates = File.join(base_path, "stacks", component, stack, "/aws/**/*.rb")
55
+ component_template_path = File.join(base_path, "stacks", component, stack, "template.rb")
56
+ component_template = (File.exist? component_template_path) ? File.read(component_template_path) : ""
58
57
 
59
58
  Dir
60
59
  .glob(aws_templates)
61
60
  .reduce(component_template) { |template_string, file| template_string += File.read(file) }
62
61
  end
63
-
64
62
  end
65
63
  end
66
64
  end
67
65
  end
68
-
@@ -1,5 +1,5 @@
1
- require 'yaml'
2
- require 'bbc/cosmos/tools/config'
1
+ require "yaml"
2
+ require "bbc/cosmos/tools/config"
3
3
 
4
4
  module BBC
5
5
  module Cosmos
@@ -17,18 +17,16 @@ module BBC
17
17
 
18
18
  def component(id)
19
19
  config.components[id].tap do |o|
20
- raise("Invalid component id: #{id}") if o.nil?
20
+ fail("Invalid component id: #{id}") if o.nil?
21
21
  end
22
22
  end
23
23
 
24
24
  def cosmos_component(id)
25
25
  component(id).reduce([]) do |object, (key, value)|
26
- object.tap { |o| o << {:value => value, :key => key} }
26
+ object.tap { |o| o << { :value => value, :key => key } }
27
27
  end
28
28
  end
29
-
30
29
  end
31
30
  end
32
31
  end
33
32
  end
34
-
@@ -15,7 +15,7 @@ module BBC
15
15
  def generate_data(to_json = false)
16
16
  if valid_component_and_stack
17
17
  get_parameters.each do |key, value|
18
- data['Parameters'][key]['Default'] = value if data['Parameters'][key]
18
+ data["Parameters"][key]["Default"] = value if data["Parameters"][key]
19
19
  end
20
20
  to_json ? JSON.pretty_generate(data) : data
21
21
  end
@@ -24,26 +24,25 @@ module BBC
24
24
  protected
25
25
 
26
26
  def data
27
- raise NotImplementedError
27
+ fail NotImplementedError
28
28
  end
29
29
 
30
- def construct_file_path type
31
- File.join(@config.base_path, 'stacks', @id, "#{@options[:stack]}.#{type}")
30
+ def construct_file_path(type)
31
+ File.join(@config.base_path, "stacks", @id, "#{@options[:stack]}.#{type}")
32
32
  end
33
33
 
34
34
  private
35
35
 
36
36
  def valid_component_and_stack
37
37
  Tools::Cloudformation::Generator.component_exists?(@id, @config) &&
38
- Tools::Cloudformation::Generator.stack_exists?(@id, @config, @options[:stack])
38
+ Tools::Cloudformation::Generator.stack_exists?(@id, @config, @options[:stack])
39
39
  end
40
40
 
41
41
  def get_parameters
42
- @config.resources['cloudformation']['components'][@id][@options[:stack]]['variants'][@options[:variant]]
42
+ @config.resources["cloudformation"]["components"][@id][@options[:stack]]["variants"][@options[:variant]]
43
43
  end
44
44
  end
45
45
  end
46
46
  end
47
47
  end
48
48
  end
49
-
@@ -12,7 +12,6 @@ module BBC
12
12
  end
13
13
 
14
14
  def generate_data(to_json = false)
15
-
16
15
  # Because the block is evaluated in the context of another class
17
16
  # i.e. instance_eval &block
18
17
  # we need to store off the values first and *then* reference them inside the block
@@ -20,9 +19,9 @@ module BBC
20
19
  config = @config
21
20
  stack = @options[:stack]
22
21
 
23
- Tools::Cloudformation::Generator.create(@id, @config, @options, to_json) {
22
+ Tools::Cloudformation::Generator.create(@id, @config, @options, to_json) do
24
23
  instance_eval config.cf_templates(component_identifier, stack)
25
- }
24
+ end
26
25
  end
27
26
  end
28
27
  end
@@ -1,7 +1,7 @@
1
1
  module BBC
2
2
  module Cosmos
3
3
  module Tools
4
- VERSION = "0.5.2"
4
+ VERSION = "0.6.0"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbc-cosmos-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Jack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-11 00:00:00.000000000 Z
11
+ date: 2015-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,14 +86,28 @@ dependencies:
86
86
  requirements:
87
87
  - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: '1'
89
+ version: 1.63.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: '1'
96
+ version: 1.63.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: highline
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: Tool for interacting with BBC Cosmos platform
98
112
  email:
99
113
  - stevenmajack@gmail.com
@@ -146,9 +160,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
160
  version: '0'
147
161
  requirements: []
148
162
  rubyforge_project:
149
- rubygems_version: 2.0.14
163
+ rubygems_version: 2.2.2
150
164
  signing_key:
151
165
  specification_version: 4
152
166
  summary: Tool for pusing config to cosmos and controlling cloudformation templates
153
167
  test_files: []
154
- has_rdoc: