cumuliform 0.5.3 → 0.6.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 +5 -5
- data/.ruby-version +1 -1
- data/.travis.yml +0 -2
- data/README.md +31 -5
- data/cumuliform.gemspec +0 -1
- data/examples/top-level-value.rb +8 -0
- data/lib/cumuliform/output.rb +5 -1
- data/lib/cumuliform/sections.rb +3 -1
- data/lib/cumuliform/template.rb +14 -0
- data/lib/cumuliform/version.rb +1 -1
- metadata +4 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 86477f5b5e5ff570e701ea108595ab37165e9c2c8c0b908d71a3376925a4d5f2
|
4
|
+
data.tar.gz: 6f77929d740fe9aaecdc83b65d691458441d762688f658b0fd338560b5501f79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6abcbc9530eddcf37006beaf07fa357ac21b51bc325195825ed9b04b71ee2fadf2a305fea65458b7595a4e522bf44ea751878a1965e8c7f51ce6c7f5dfd05dc8
|
7
|
+
data.tar.gz: ea4cd0da1e21c9a86514ec9d5f4ab7c754240f32bdde7567c8576ebad5786d9d9adbb3cc6bf6bcddae68960145175a8a16841097bf6d3e48d0c03654a7955b2d
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.6
|
data/.travis.yml
CHANGED
@@ -3,8 +3,6 @@ env:
|
|
3
3
|
- CC_TEST_REPORTER_ID=ad171accd9e47d577857f84b0d9032042ea70bf942a219bfa4f5582b5e504a60
|
4
4
|
language: ruby
|
5
5
|
sudo: false
|
6
|
-
rvm:
|
7
|
-
2.4.3
|
8
6
|
before_script:
|
9
7
|
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
10
8
|
- chmod +x ./cc-test-reporter
|
data/README.md
CHANGED
@@ -17,9 +17,7 @@ provides a simple DSL that generates reliably valid JSON and enforces
|
|
17
17
|
referential integrity through convenience wrappers around the common points
|
18
18
|
where CloudFormation expects references between resources. provides.
|
19
19
|
|
20
|
-
Cumuliform
|
21
|
-
|
22
|
-
[tape]: https://www.tape.tv/
|
20
|
+
Cumuliform was originally extracted from ops and deployment code at tape.tv
|
23
21
|
|
24
22
|
## Installation
|
25
23
|
|
@@ -281,8 +279,36 @@ The generated template is:
|
|
281
279
|
}
|
282
280
|
```
|
283
281
|
|
284
|
-
Note that the optional `AWSTemplateFormatVersion`, `
|
285
|
-
|
282
|
+
Note that the optional `AWSTemplateFormatVersion`, and `Metadata` sections are
|
283
|
+
*not* currently supported.
|
284
|
+
|
285
|
+
Here's a trivial template that specifies a `Transform` top-level value (e.g. for [AWS SAM][])
|
286
|
+
|
287
|
+
[AWS SAM]: https://github.com/awslabs/serverless-application-model
|
288
|
+
|
289
|
+
```ruby
|
290
|
+
Cumuliform.template do
|
291
|
+
transform 'AWS::Serverless-2016-10-31'
|
292
|
+
resource 'MyFunction' do
|
293
|
+
{
|
294
|
+
Type: 'AWS::Serverless::Function'
|
295
|
+
}
|
296
|
+
end
|
297
|
+
end
|
298
|
+
```
|
299
|
+
|
300
|
+
And the result:
|
301
|
+
|
302
|
+
```json
|
303
|
+
{
|
304
|
+
"Transform": "AWS::Serverless-2016-10-31",
|
305
|
+
"Resources": {
|
306
|
+
"MyFunction": {
|
307
|
+
"Type": "AWS::Serverless::Function"
|
308
|
+
}
|
309
|
+
}
|
310
|
+
}
|
311
|
+
```
|
286
312
|
|
287
313
|
## Intrinsic functions
|
288
314
|
|
data/cumuliform.gemspec
CHANGED
@@ -23,7 +23,6 @@ non-existent resources because you have a typo.
|
|
23
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ["lib"]
|
25
25
|
|
26
|
-
spec.add_development_dependency "bundler", "~> 1.9"
|
27
26
|
spec.add_development_dependency "rake", "~> 12.0"
|
28
27
|
spec.add_development_dependency "rspec", "~> 3"
|
29
28
|
spec.add_development_dependency "yard", ">= 0.8"
|
data/lib/cumuliform/output.rb
CHANGED
@@ -13,7 +13,11 @@ module Cumuliform
|
|
13
13
|
# @return [Hash] Hash representing the CloudFormation template
|
14
14
|
def to_hash
|
15
15
|
output = {}
|
16
|
-
|
16
|
+
TOP_LEVEL.each do |item_name|
|
17
|
+
value = get_top_level_value(item_name)
|
18
|
+
output[item_name] = value unless value.nil?
|
19
|
+
end
|
20
|
+
SECTION_NAMES.each do |section_name|
|
17
21
|
section = get_section(section_name)
|
18
22
|
output[section_name] = generate_section(section) unless section.empty?
|
19
23
|
end
|
data/lib/cumuliform/sections.rb
CHANGED
@@ -8,16 +8,18 @@ module Cumuliform
|
|
8
8
|
"Resources" => :resource,
|
9
9
|
"Outputs" => :output
|
10
10
|
}
|
11
|
+
SECTION_NAMES = SECTIONS.map { |name, _| name }
|
11
12
|
|
12
13
|
# @api private
|
13
14
|
module Sections
|
14
15
|
def initialize
|
15
|
-
|
16
|
+
SECTION_NAMES.each do |section_name|
|
16
17
|
instance_variable_set(:"@#{section_name}", Section.new(section_name, imports))
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
20
21
|
def get_section(name)
|
22
|
+
raise ArgumentError, "#{name} is not a valid template section" unless SECTION_NAMES.include?(name)
|
21
23
|
instance_variable_get(:"@#{name}")
|
22
24
|
end
|
23
25
|
|
data/lib/cumuliform/template.rb
CHANGED
@@ -11,12 +11,26 @@ module Cumuliform
|
|
11
11
|
AWS::AccountId AWS::NotificationARNs AWS::NoValue
|
12
12
|
AWS::Region AWS::StackId AWS::StackName
|
13
13
|
}
|
14
|
+
TOP_LEVEL = %w{ Transform Description }
|
14
15
|
|
15
16
|
# Represents a single CloudFormation template
|
16
17
|
class Template
|
17
18
|
include Output
|
18
19
|
include Sections
|
19
20
|
|
21
|
+
def transform(transform)
|
22
|
+
@Transform = transform
|
23
|
+
end
|
24
|
+
|
25
|
+
def description(desc)
|
26
|
+
@Description = desc
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_top_level_value(item_name)
|
30
|
+
raise ArgumentError, "Not an allowed top-level item name" unless TOP_LEVEL.include?(item_name)
|
31
|
+
instance_variable_get(:"@#{item_name}")
|
32
|
+
end
|
33
|
+
|
20
34
|
# @api private
|
21
35
|
def define(&block)
|
22
36
|
instance_exec(&block)
|
data/lib/cumuliform/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cumuliform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Patterson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.9'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.9'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rake
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,6 +101,7 @@ files:
|
|
115
101
|
- examples/module-helper.rb
|
116
102
|
- examples/simplest.rb
|
117
103
|
- examples/top-level-declarations.rb
|
104
|
+
- examples/top-level-value.rb
|
118
105
|
- exe/cumuliform
|
119
106
|
- lib/cumuliform.rb
|
120
107
|
- lib/cumuliform/dsl.rb
|
@@ -149,8 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
136
|
- !ruby/object:Gem::Version
|
150
137
|
version: '0'
|
151
138
|
requirements: []
|
152
|
-
|
153
|
-
rubygems_version: 2.6.14
|
139
|
+
rubygems_version: 3.0.3
|
154
140
|
signing_key:
|
155
141
|
specification_version: 4
|
156
142
|
summary: DSL library for generating AWS CloudFormation templates
|