bora 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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