rubycfn 0.1.9 → 0.1.10

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: a50e005191c0b01c26c19c2947b21aa68efc4484
4
- data.tar.gz: b2d40bc520b69a35494e6a69f822571d7c05bacf
3
+ metadata.gz: f48f2fd5a84ad9092cc5d23f7ecc427b1054a078
4
+ data.tar.gz: 6d2a01e823d195c9434071e64124dd633a43a17b
5
5
  SHA512:
6
- metadata.gz: 5b11a4f464588c4bc027154ce588fbd26837007a3da6c60abd11e3834d016b492272f85befbb03d40cc2ad2a90649b4622db6e3292755031ec40126d4f7f8b44
7
- data.tar.gz: 1226f8c46e3b2e9c458a49f67c24cc2dd7599a3e6e6d28add060367ec52c9ec0e03174283509ce9ac6217d2a408ef833a0798a47306dfa48537607501c51ca8c
6
+ metadata.gz: 17bcc704984776c553bfa46f3b35466ba0126a5360f2f8fac3d33e2e42bc159162edc29bd6f7ce461deb435596a064d7eedda475593e1f1ca9d281e356dba1fd
7
+ data.tar.gz: f2d94563b2729e527f4e53123af2bb501f4fdc98e79f7cf3ed36cbe261a75dd53c7ba0cf6d946472d426dd6e29b1252a6d10b4722f2cf9bd6f9ecec31af3510b
data/CHANGELOG.md CHANGED
@@ -2,10 +2,13 @@
2
2
  All notable changes to Rubycfn will be documented in this file.
3
3
  This project uses [Semantic Versioning](http://semver.org/).
4
4
 
5
- ## 0.1.10 (Next Release)
5
+ ## 0.1.11 (Next Release)
6
+
7
+ ## 0.1.10
8
+ * Added conditions section support, condition in resources, and added several missing intrinsic functions. -- [@dennisvink][@dennisvink]
6
9
 
7
10
  ## 0.1.9
8
- * Merged feature/cicd into release :')
11
+ * Merged feature/cicd into release :') -- [@dennisvink][@dennisvink]
9
12
 
10
13
  ## 0.1.8
11
14
  * `Export` in outputs now takes both strings and hashes -- [@dennisvink][@dennisvink]
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubycfn (0.1.9)
4
+ rubycfn (0.1.10)
5
5
  activesupport (~> 5.1.5)
6
6
  dotenv (~> 2.4.0)
7
7
  json (~> 2.1.0)
data/README.md CHANGED
@@ -12,7 +12,7 @@ or, create a Gemfile with this content:
12
12
  ```
13
13
  source "https://rubygems.org"
14
14
 
15
- gem "rubycfn", "~> 0.1.9"
15
+ gem "rubycfn", "~> 0.1.10"
16
16
 
17
17
  ```
18
18
 
@@ -1,4 +1,4 @@
1
1
  # Rubycfn version
2
2
  module Rubycfn
3
- VERSION = "0.1.9"
3
+ VERSION = "0.1.10"
4
4
  end
data/lib/rubycfn.rb CHANGED
@@ -12,6 +12,7 @@ require "rubycfn/version"
12
12
  @parameters = {}
13
13
  @properties = {}
14
14
  @mappings = {}
15
+ @conditions = {}
15
16
  @resources = {}
16
17
  @resource_name = ""
17
18
  @variables = {}
@@ -70,6 +71,36 @@ class Array
70
71
  end
71
72
  alias_method :cidr, :fncidr
72
73
 
74
+ def fnequals
75
+ {
76
+ "Fn::Equals": self
77
+ }
78
+ end
79
+
80
+ def fnand
81
+ {
82
+ "Fn::And": self
83
+ }
84
+ end
85
+
86
+ def fnif
87
+ {
88
+ "Fn::If": self
89
+ }
90
+ end
91
+
92
+ def fnnot
93
+ {
94
+ "Fn::Not": self
95
+ }
96
+ end
97
+
98
+ def fnor
99
+ {
100
+ "Fn::Or": self
101
+ }
102
+ end
103
+
73
104
  def fnfindinmap(name = nil)
74
105
  self.unshift(name.cfnize) if name
75
106
  {
@@ -147,6 +178,14 @@ module Rubycfn
147
178
  end
148
179
  end
149
180
 
181
+ def self.condition(name, arguments)
182
+ name = name.to_s.cfnize
183
+ res = {
184
+ "#{name}": arguments
185
+ }
186
+ TOPLEVEL_BINDING.eval("@conditions = @conditions.deep_merge(#{res})")
187
+ end
188
+
150
189
  def self.mapping(name, arguments = {})
151
190
  raise "`name` is required for mapping." unless arguments[:name]
152
191
  unless arguments[:data]
@@ -280,7 +319,8 @@ module Rubycfn
280
319
  "#{name.to_s}#{i == 0 ? "" : resource_postpend}": {
281
320
  DependsOn: TOPLEVEL_BINDING.eval("@depends_on"),
282
321
  Properties: TOPLEVEL_BINDING.eval("@properties"),
283
- Type: arguments[:type]
322
+ Type: arguments[:type],
323
+ Condition: arguments[:condition]
284
324
  }
285
325
  }
286
326
  TOPLEVEL_BINDING.eval("@resources = @resources.deep_merge(#{res})")
@@ -302,6 +342,7 @@ module Rubycfn
302
342
  skeleton.merge!(Description: TOPLEVEL_BINDING.eval("@description"))
303
343
  skeleton.merge!(Mappings: sort_json(TOPLEVEL_BINDING.eval("@mappings")))
304
344
  skeleton.merge!(Parameters: sort_json(TOPLEVEL_BINDING.eval("@parameters")))
345
+ skeleton.merge!(Conditions: sort_json(TOPLEVEL_BINDING.eval("@conditions")))
305
346
  skeleton.merge!(Resources: sort_json(TOPLEVEL_BINDING.eval("@resources")))
306
347
  skeleton.merge!(Outputs: sort_json(TOPLEVEL_BINDING.eval("@outputs")))
307
348
  TOPLEVEL_BINDING.eval("@variables = @resources = @outputs = @properties = @mappings = @parameters = {}")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubycfn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dennis Vink
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-24 00:00:00.000000000 Z
11
+ date: 2018-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: neatjson