bora 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 78da414bfe432d113f09e8eeb56323ff8e8b0478
4
- data.tar.gz: 1e28a4012d4a555b5735e8826b7d3630f3bf236d
3
+ metadata.gz: 77ea0af19fd9379af09de50f340fd4c7769a7218
4
+ data.tar.gz: 9ab827765ce5a5d83f30192c9f9883455e6f24df
5
5
  SHA512:
6
- metadata.gz: 31b37b90bac1683843dbb036c7fc686eb221c09d33f2dcae85a62a497020b021d4b7ecfcf1def47bac94a4b70a64248891e5449e14275f2484f9675bec2105e4
7
- data.tar.gz: 097620f5e2d32289f8902959df2bf4974133213204186c6dc3cabcb4a9bd48f98801a32afbb06ed9cfe970ad8f34d5a024a4373170f8d402115aa6983139170c
6
+ metadata.gz: e81d0075cb5a9c0a24a25f4de28ec71a91785d79dbcd4276c8c1b5d631cb74280ebb33bb759ffe1d64789e9979e9abd37ce3d2a46cb038cac4c44944f07cc119
7
+ data.tar.gz: a600a4bc019cf26932349bd650d862dbab86f15d08f2bee583dd431f0a64417bcb0d7d6b99b31af2f1612e0b871c1a5d327438c2cd2c8e41a6734ee63d9652b3
data/README.md CHANGED
@@ -77,6 +77,24 @@ Bora::Tasks.new("example", "example.json") do |t|
77
77
  end
78
78
  ```
79
79
 
80
+ `cfndsl` comes with a rake task that you can use by embedding it inside the Bora task definition:
81
+
82
+ ```ruby
83
+ require 'bora'
84
+ require 'cfndsl/rake_task'
85
+
86
+ Bora::Tasks.new("example", "example.json") do |t|
87
+ CfnDsl::RakeTask.new do |cfndsl_task|
88
+ cfndsl_task.cfndsl_opts = {
89
+ files: [{
90
+ filename: "example.rb",
91
+ output: "example.json"
92
+ }]
93
+ }
94
+ end
95
+ end
96
+ ```
97
+
80
98
  If you need to pass parameters from the rake command line through to your generate method,
81
99
  you can do so by using Rake's [`args.extras`](http://ruby-doc.org/stdlib-2.2.2/libdoc/rake/rdoc/Rake/TaskArguments.html#method-i-extras) functionality:
82
100
 
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ["lib"]
19
19
 
20
20
  spec.add_dependency "aws-sdk", "~> 2.0"
21
+ spec.add_dependency "cfndsl", "~> 0.4"
21
22
  spec.add_dependency "colorize", "~> 0.7"
22
23
  spec.add_dependency "diffy", "~> 3.0"
23
24
  spec.add_dependency "rake", "~> 10.0"
@@ -3,3 +3,4 @@ require "bora/status"
3
3
  require "bora/event"
4
4
  require "bora/stack"
5
5
  require "bora/tasks"
6
+ require "bora/rake_tasks"
@@ -0,0 +1,65 @@
1
+ require 'tempfile'
2
+ require 'yaml'
3
+ require 'colorize'
4
+ require 'rake/tasklib'
5
+ require 'cfndsl'
6
+ require 'bora/tasks'
7
+
8
+ module Bora
9
+ class RakeTasks < Rake::TaskLib
10
+ def initialize(config_file_or_hash)
11
+ define_templates(load_config(config_file_or_hash))
12
+ end
13
+
14
+
15
+ private
16
+
17
+ def define_templates(config)
18
+ config['templates'].each do |template_name, template_config|
19
+ define_stacks(template_name, template_config)
20
+ end
21
+ end
22
+
23
+ def define_stacks(template_name, template_config)
24
+ template_file = template_config['template_file']
25
+ template_config['stacks'].each do |stack_name, stack_config|
26
+ stack_name = stack_config['stack_name'] || "#{template_name}-#{stack_name}"
27
+ stack_options = extract_stack_options(template_config)
28
+ define_tasks(template_file, stack_name, stack_config, stack_options)
29
+ end
30
+ end
31
+
32
+ def define_tasks(template_file, stack_name, stack_config, stack_options)
33
+ Bora::Tasks.new(stack_name) do |t|
34
+ if File.extname(template_file) == ".rb"
35
+ stack_options[:template_body] = run_cfndsl(template_file, stack_config['params'])
36
+ else
37
+ stack_options[:template_url] = template_file
38
+ end
39
+ t.stack_options = stack_options
40
+ end
41
+ end
42
+
43
+ def run_cfndsl(template_file, params)
44
+ temp_extras = Tempfile.new("bora")
45
+ temp_extras.write(params.to_yaml)
46
+ temp_extras.close
47
+ template_body = CfnDsl.eval_file_with_extras(template_file, [[:yaml, temp_extras.path]]).to_json
48
+ temp_extras.unlink
49
+ template_body
50
+ end
51
+
52
+ def extract_stack_options(config)
53
+ valid_options = ["capabilities"]
54
+ config.select { |k| valid_options.include?(k) }
55
+ end
56
+
57
+ def load_config(config)
58
+ if config.class == String
59
+ return YAML.load_file(config)
60
+ elsif config.class == Hash
61
+ return config
62
+ end
63
+ end
64
+ end
65
+ end
@@ -1,3 +1,3 @@
1
1
  module Bora
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bora
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Blaxland
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-22 00:00:00.000000000 Z
11
+ date: 2016-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: cfndsl
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.4'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: colorize
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -113,6 +127,7 @@ files:
113
127
  - lib/bora.rb
114
128
  - lib/bora/event.rb
115
129
  - lib/bora/output.rb
130
+ - lib/bora/rake_tasks.rb
116
131
  - lib/bora/stack.rb
117
132
  - lib/bora/stack_status.rb
118
133
  - lib/bora/status.rb