cfndsl 0.8.9 → 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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjE5YTc0ODM5NzUxZGI2YmMwNDg1NjljZjdjMjA3NzY3NjI0NjM1MA==
4
+ NDllMmI2MjhiMWMzYmY0NzAyZDgzZjE2NWJhYzRlOWVjZmUxYmQ5Nw==
5
5
  data.tar.gz: !binary |-
6
- YmIwMzI3MTcxMGRlZDgwZGUxMDNkZjlkYTlhMDNjNWM0OTU4YjE2NA==
6
+ MjBmNzQ3OWRlMjAxMDZlMmJiOWE4NjZlNTBlZmNmYzExZTc3MTUyMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YzAxZDUyZTA3NzJjM2NiMWEzMjYxMDVjYTYxOTg0NjRmNjJiMGQ4NmFmMjU5
10
- MDA3M2Y1ZmY4MzcxMDYzY2JmNjcwNzJkZGQ2ZDJjMWZiODc5MjZkYWQ1ODU1
11
- NTE4M2E3NDQ2NDk2ZTkyMDg1MWZlNmE3NWQxOTk5Mjk3OWI5ZGE=
9
+ M2YyNjlhOTlhM2RmZDFkNDE3MjFmYTMzZGE2MjI1NjgyNmNjMDA3OTA0NDNj
10
+ NmYwZmMwYzFjODQxZDBiNTFjMjFkZGQ2M2ZkYzMxNDE1NjI5ZTc3NjI5Y2Q1
11
+ MjU1N2FhNDFiOTRlNzA0NDljNDJhYTUxNTk4YWE1YjQ2OTc5NmI=
12
12
  data.tar.gz: !binary |-
13
- NmYxODgyNmU1ODJjZjg5ZmEzNmNhZDlmODcyMDQxNjdhMGM4N2FlYTc4Y2Q0
14
- YjBiMDcyOGViYmQ4ZWM1MGVkZGNlM2YzMzQ2Y2ZlMjUwMzU4NmE3NWU4MGI1
15
- ODAyNjUyOGNmZTNkZTMzNDdkYzEyOTJhZTNjMDhiMzJjYmZhOGU=
13
+ OWI3YTUzZGViNTMxYTAyZTc4Y2U3ZjQ5Njg1YjVlZmVjNjVjYThlMzNiNDQx
14
+ NzBjYTliZjlmOGJhNWQ4ZmM5ODU4ZDQ2ZmRlNWQyNjM3ZWI5OGY1YzkyOTgw
15
+ YzZiN2ExZmMxYWRjYWE3NGUwYTVhYmYyZDlhOGZiOTlhNDQ1YWE=
@@ -61,7 +61,7 @@ module CfnDsl
61
61
  # rubocop:disable all
62
62
  def self.eval_file_with_extras(filename, extras = [], logstream = nil)
63
63
  b = binding
64
- params = CfnDsl::ExternalParameters.new
64
+ params = CfnDsl::ExternalParameters.refresh!
65
65
  extras.each do |type, file|
66
66
  case type
67
67
  when :yaml, :json
@@ -85,7 +85,6 @@ module CfnDsl
85
85
  end
86
86
  end
87
87
 
88
- CfnDsl::CloudFormationTemplate.external_parameters params
89
88
  logstream.puts("Loading template file #{filename}") if logstream
90
89
  b.eval(File.read(filename), filename)
91
90
  end
@@ -7,8 +7,24 @@ module CfnDsl
7
7
 
8
8
  attr_reader :parameters
9
9
 
10
+ class << self
11
+ def defaults(params = {})
12
+ @defaults ||= {}
13
+ @defaults.merge! params
14
+ @defaults
15
+ end
16
+
17
+ def current
18
+ @current || refresh!
19
+ end
20
+
21
+ def refresh!
22
+ @current = new
23
+ end
24
+ end
25
+
10
26
  def initialize
11
- @parameters = {}
27
+ @parameters = self.class.defaults.clone
12
28
  end
13
29
 
14
30
  def set_param(k, v)
@@ -131,6 +131,14 @@ module CfnDsl
131
131
  extend Functions
132
132
  include RefCheck
133
133
 
134
+ def self.external_parameters
135
+ CfnDsl::ExternalParameters.current
136
+ end
137
+
138
+ def external_parameters
139
+ self.class.external_parameters
140
+ end
141
+
134
142
  # Use instance variables to build a json object. Instance
135
143
  # variables that begin with a single underscore are elided.
136
144
  # Instance variables that begin with two underscores have one of
@@ -10,15 +10,6 @@ module CfnDsl
10
10
  dsl_attr_setter :AWSTemplateFormatVersion, :Description
11
11
  dsl_content_object :Condition, :Parameter, :Output, :Resource, :Mapping
12
12
 
13
- def self.external_parameters(params = nil)
14
- @external_parameters = params if params
15
- @external_parameters
16
- end
17
-
18
- def external_parameters
19
- self.class.external_parameters
20
- end
21
-
22
13
  def initialize
23
14
  @AWSTemplateFormatVersion = '2010-09-09'
24
15
  end
@@ -1,3 +1,3 @@
1
1
  module CfnDsl
2
- VERSION = '0.8.9'.freeze
2
+ VERSION = '0.9.0'.freeze
3
3
  end
@@ -1,9 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe CfnDsl do
4
+ after(:example) { CfnDsl::ExternalParameters.refresh! }
5
+
4
6
  it 'evaluates a cloud formation' do
5
7
  filename = "#{File.dirname(__FILE__)}/fixtures/test.rb"
6
- subject.eval_file_with_extras(filename)
8
+ subject.eval_file_with_extras(filename, [[:raw, 'test=123']])
7
9
  end
8
10
 
9
11
  it 'evaluates a heat' do
@@ -8,6 +8,30 @@ describe CfnDsl::ExternalParameters do
8
8
  exp
9
9
  end
10
10
 
11
+ context '.defaults' do
12
+ after(:example) { described_class.defaults.clear }
13
+
14
+ it 'allows for defaults to be set for each new parameters instance' do
15
+ described_class.defaults(reminder: 'You Know What It Is')
16
+ expect(subject[:reminder]).to eq('You Know What It Is')
17
+ end
18
+ end
19
+
20
+ context '.current' do
21
+ it 'retrieves the current parameters instance' do
22
+ expect(described_class.current).to be_an_instance_of(described_class)
23
+ end
24
+ end
25
+
26
+ context '.refresh!' do
27
+ it 'restores the current parameters to the defaults' do
28
+ described_class.current.set_param(:reminder, 'You Know What It Is')
29
+ expect(described_class.current[:reminder]).to eq('You Know What It Is')
30
+ described_class.refresh!
31
+ expect(described_class.current[:reminder]).to be_nil
32
+ end
33
+ end
34
+
11
35
  context '#set_param' do
12
36
  it 'treats keys as symbols only' do
13
37
  subject.set_param('reminder', 'You Know What It Is')
@@ -2,7 +2,7 @@ CloudFormation do
2
2
  TEST ||= 'no value set'.freeze
3
3
  puts TEST
4
4
 
5
- Description 'Test'
5
+ Description external_parameters[:test]
6
6
 
7
7
  Parameter('One') do
8
8
  String
@@ -49,7 +49,7 @@ CloudFormation do
49
49
  DeviceName '/dev/sda'
50
50
  VirtualName 'stuff'
51
51
  Ebs do
52
- SnapshotId 'asdasdfasdf'
52
+ SnapshotId external_parameters[:test]
53
53
  VolumeSize Ref('MyInstance')
54
54
  end
55
55
  end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe CfnDsl::JSONable do
4
+ context '.external_parameters' do
5
+ it 'allows access to the current parameters instance' do
6
+ expect(subject.class.external_parameters).to be_an_instance_of(CfnDsl::ExternalParameters)
7
+ end
8
+ end
9
+
10
+ context '#external_parameters' do
11
+ it 'allows access to the current parameters instance' do
12
+ expect(subject.external_parameters).to be_an_instance_of(CfnDsl::ExternalParameters)
13
+ end
14
+ end
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfndsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Jack
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-06-02 00:00:00.000000000 Z
12
+ date: 2016-06-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -91,6 +91,7 @@ files:
91
91
  - spec/external_parameters_spec.rb
92
92
  - spec/fixtures/heattest.rb
93
93
  - spec/fixtures/test.rb
94
+ - spec/jsonable_spec.rb
94
95
  - spec/resources_spec.rb
95
96
  - spec/spec_helper.rb
96
97
  homepage: https://github.com/stevenjack/cfndsl
@@ -124,5 +125,6 @@ test_files:
124
125
  - spec/external_parameters_spec.rb
125
126
  - spec/fixtures/heattest.rb
126
127
  - spec/fixtures/test.rb
128
+ - spec/jsonable_spec.rb
127
129
  - spec/resources_spec.rb
128
130
  - spec/spec_helper.rb