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 +4 -4
- data/README.md +18 -0
- data/bora.gemspec +1 -0
- data/lib/bora.rb +1 -0
- data/lib/bora/rake_tasks.rb +65 -0
- data/lib/bora/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77ea0af19fd9379af09de50f340fd4c7769a7218
|
4
|
+
data.tar.gz: 9ab827765ce5a5d83f30192c9f9883455e6f24df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
|
data/bora.gemspec
CHANGED
@@ -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"
|
data/lib/bora.rb
CHANGED
@@ -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
|
data/lib/bora/version.rb
CHANGED
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.
|
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-
|
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
|